
1부터 10까지의 합을 구해야 할 때처럼 같은 명령어를 반복해서 실행해야 할 때 while과 for를 사용합니다.
While 조건문:
수행할 문장 1
수행할 문장 2
i = 0
sum = 0
while i < 10:
i += 1
sum += i
print (sum)
i 변수가 10보다 작을 때 그 아래 명령어를 실행하고, 맨 마지막 sum을 출력합니다.
반복문도 역시나 들여 쓰기를 유의해야 합니다.
(참고로 i += 1 은 i = i + 1을, sum += i는 sum = sum + i와 같은 의미입니다.)
조건이 참(True)일 때 while은 계속 반복 실행하게 되는데 이때 강제로 빠져나올 때 break를 사용합니다.
i = 0
sum = 0
while True:
i += 1
sum += i
if i == 10:break
print (sum)
break가 while 문을 빠져나온다면 continue는 while의 맨 처음으로 돌아갑니다. 예를 들어 1~10 중 홀수를 출력하고 합을 구할 때 아래와 같이 continue를 사용합니다.
i = 0
sum = 0
while I < 10 :
i += 1
if i%2 == 0 : continue
print(i)
sum += i
print (sum)
간혹 반복문을 작성하다 보면 결괏값이 무한 루프로 빠져들게 됩니다. 이때는 키보드 인터럽트(keyboard interrupt)를 사용! Ctrl + C를 누르면 강제로 실행이 중단됩니다.
while과 마찬가지로 좀 더 직관적인 반복문 for에 대해 알아봅니다. for 변수 in 리스트(또는 튜플, 문자열, range()):의 구조로 되어 있습니다.
t_list = ['a', 'b', 'c']
for i in t_list:
print(i)
리스트의 요솟값이 차례로 i 변수에 대입되고 출력됩니다.
t_list2 = [(1,2), (3,4), (5,6)]
for (a, b) in t_list2:
print (a+b)
리스트의 요솟값(튜플)이 차례로 a, b 변수에 대입되고 a+b가 출력됩니다.
for 문에서도 while 문과같이 continue를 사용하게 되면 for 문의 처음으로 돌아가게 됩니다.
score = [ 90, 100, 50, 60 ]
num = 0
for i in score:
num += 1
if i < 60 : continue
print(‘%d 번째 학생은 합격’ %num)
range()는 for 문의 숫자 리스트를 생성하는 함수입니다. range(시작, 끝, 증가 값)으로 사용하며, range(0,10,2)는 0부터 10미만까지 2씩 증가한다는 의미입니다.
for i in range(0, 10, 3) : print (i)
출력될 값을 상상해 보시죠^^;
다중 for 문과 range()를 이용하여 구구단 결괏값을 만들어 보겠습니다.

i는 2~9까지, j는 1~9까지 반복하며 i*j를 계산합니다. 매개변수 end=’’는 옆으로 붙여서 출력할 때 사용하며, 맨 마지막 print(‘’)는 i가 1회 실행을 마칠 때마다 줄바꿈 한다는 의미입니다.

언뜻 같아 보이지만 전혀 다른 결괏값을 보여 줍니다. i, j의 range 범위 변경만으로 가로세로 값이 바뀌었습니다.
다중 for 문 또는 while 문을 사용하여 아래와 같은 별 모양을 만들어 보겠습니다.
1번
|
2번
|
*
** *** **** ***** ****** ******* |
* *
* * * * * * * * * * * |
1번 예제
for i in range(7,0, -1):
for j in range(1,8):
if i <= j : print('*',end='')
else : print(' ',end='')
print ('')
2번 예제
for i in range(1,8):
for j in range(1,8):
if i == j or 8-i == j : print ('*',end='')
else : print(' ',end='')
print ('')
정답은 없습니다. 본인이 작성한 코드가 생각한 대로 결괏값으로 나오는지 확인하시면 되겠네요.
리스트 내포 함수에 대해 알아보겠습니다. 반복문을 이렇게도 사용할 수 있구나 싶을 정도로 직관적입니다.
a = [1, 2, 3, 4]
b = [ num*3 for num in a ]
print (b)
[3, 6, 9, 12]
b = [num*3 for num in a if num%2 == 0] 와 같이 if 문과 결합하게 되면 짝수만 b에 들어가게 됩니다. 쉬운 듯! 어려운 듯! 하네요.
다중 for 문도 리스트 내포를 사용하여 구현할 수 있습니다.
result = [x*y for x in range(2,10)
for y in range(1,10)]
print(result)
마지막으로 for 문을 사용하여 합계, 평균을 구해 봅니다.
score = [ 100, 70, 50, 80, 95, 80, 75, 90, 60, 65 ]
total_score = 0
for i in score: total_score += i
ave_score = total_score/len(score)
print (total_score, ave_score)
'코딩 이야기 > 파이썬(Python)' 카테고리의 다른 글
단도직입 파이썬(Python) – 입출력(input, print) (0) | 2021.12.16 |
---|---|
단도직입 파이썬(Python) – 함수 function (0) | 2021.12.15 |
단도직입 파이썬(Python) – 조건문 (if ~ else) (0) | 2021.12.15 |
단도직입 파이썬(Python) 기초 – 5 자료형(변수) (0) | 2021.12.15 |
단도직입 파이썬(Python) 기초 – 4 자료형(딕셔너리, 집합) (0) | 2021.12.15 |
댓글