KDT/Python

제어문 - 반복문

jhwannabe 2023. 3. 7. 14:27

2. 반복문

자료형 참/거짓 판단하기

  • 파이썬에서 사용하는 모든 자료형은 참 또는 거짓으로 표현이 가능
bool1 = True
print(bool1)
print(type(bool1))


# 0이 아닌 숫자는 모두 True, 0은 False

num1 = 10
print(num1)
print(type(num1))
print(bool(num1)) # 모든 값들은 bool형으로 형변환 가능 True

num2 = 0
print(num2)
print(type(num2))
print(bool(num2)) # False


str1 = '안녕'
print(str1)
print(type(str1))
print(bool(str1)) # True

str2 = ''
print(str2)
print(type(str2))
print(bool(str2)) # False


list1 = [1, 2, 3]
print(list1)
print(type(list1))
print(bool(list1)) # True

list2 = []
print(list2)
print(type(list2))
print(bool(list2)) # False


list1 = [1, 3, 5]

if list1:
  print('요소가 있습니다.')
else:
  print('요소가 없습니다.')

대입 연산자

  • =, += -=, *=, /=, %=
  • 왼쪽에 저장된 값과 오른쪽에 값을 연산한 뒤 다시 왼쪽에 대입(inplace 연산)
num = 10
num += 1
print(num)
num -= 1
print(num)
num *= 10
print(num)
num /= 10
print(num)
num %= 2
print(num)

While 문

while 조건식:
    조건식의 결과가 True인 동안 반복할 문장
# 1 ~ 100까지의 총합
i = 1
sum = 0

while i <= 100:
  sum += i
  i += 1

print('총합:', sum)

문제 1

  • 1 ~ 100까지의 짝수의 총합을 구하라.
i = 1
sum = 0

while i <= 100:
  if i % 2 == 0:
    sum += i
  i += 1

print('총합:', sum)

문제 2

  • 원하는 단을 입력받아 해당 단의 구구단을 출력하라
num = int(input('원하는 단을 입력하세요:'))
i = 1

print('%d단' % num)
while i < 10:
  print('%d * %d = %d' % (num,i,num*i))
  i += 1

For 문

for 변수 in iterable 객체:
    이터러블 객체의 요소 갯수만큼 반복할 문장
list1 = [10, 20, 30, 40]

for li in list1:
  print(li)
import collections

# isinstance(이터러블한 객체인지 확인하고자 하는 객체, collections.Iterable)
isinstance(list1, collections.Iterable)
  • range() 함수
# range(): 범위를 생성해주는 함수
# range(시작인덱스, 종료인덱스, 증가값)
num = range(0, 10, 1)
print(num)

for i in num:
  print(i, end=' ')
  
isinstance(num, collections.Iterable) # True
num = 10
# print(num)

for i in num:
  print(i, end=' ') # 에러남
  
isinstance(num, collections.Iterable) # False

for i in range(0, 10 ,1):
  print(i, end=' ')
# 증가값을 생략하면 default = 1
for i in range(0, 10):
  print(i, end=' ')

# 시작값을 생략하면 default =  0
for i in range(10):
  print(i, end=' ')

# 시작값은 1, 종료값은 10, 증가값은 2
for i in range(1, 10, 2):
  print(i, end=' ')

문제 3

  • for문을 이용하여 1 ~ 100까지의 짝수의 총합을 구하라
sum = 0
for i in range(2, 101, 2):
  sum += i
print('총합: ', sum)

enumerate

  • 반복문 사용 시 몇번째 반복인지 인덱스 번호로 확인
  • 인덱스 번호와 요소를 튜플 형태로 변환
li1 = [10, 20, 30, 40, 50]

for e in enumerate(li1):
  print(e)
  
# (0, 10)
# (1, 20)
# (2, 30)
# (3, 40)
# (4, 50)
for i, v in enumerate(li1):
  print(f'index: {i}, value: {v}')
  
# index: 0, value: 10
# index: 1, value: 20
# index: 2, value: 30
# index: 3, value: 40
# index: 4, value: 50

zip() 함수

  • 객체가 담고 있는 원소를 엮어서 튜플의 형태로 반환
  • 매개변수의 길이가 다를 때는 짧은 매개변수 기준으로 데이터가 엮이고, 나머지는 버려짐
li1 = [10, 20, 30]
li2 = ['apple','banana','orange']
# (10, 'apple')
# (20, 'banana')
# (30, 'orange')

# 좋지 않은 코드
for i in range(len(li1)):
  print((li1[i], li2[i]))
  
for l1, l2 in zip(li1, li2):
  print((l1, l2))

for li in zip(li1, li2):
  print(li)

# (10, 'apple')
# (20, 'banana')
# (30, 'orange')
for n, A, a in zip('12345', 'ABCDE', 'abcde'):
  print((n, A, a))
  
for n, A, a in zip('123456', 'ABCDE', 'abcde'):
  print((n, A, a))
  
# ('1', 'A', 'a')
# ('2', 'B', 'b')
# ('3', 'C', 'c')
# ('4', 'D', 'd')
# ('5', 'E', 'e')

list와 tuple을 for문과 함께 사용하기

li1 = ['apple', 'banana', 'orange', 'melon']
for i in li1:
  print(i , end=' ')
  
tu1 = ('apple', 'banana', 'orange', 'melon')
for i in tu1:
  print(i , end=' ')

문제 4

  • 아래 score 리스트에 저장된 점수가 60점 이상인 학생이 몇 명인지 알아보는 프로그램을 작성해보자
score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]

count = 0;

for i in score:
  if i >= 60:
    count += 1

print('60점 이상인 학생 수:', count)
728x90
반응형