for 변수 i 반복범위:
while 반복조건:
for,while은 자신에게 속한 문장을 반복하기 위한 함수이다.
for는 주로 반복 횟수가 결정되어있을 때 사용한다.
while은 [언제언제까지 반복한다]처럼 정해지지 않은 반복 횟수(반복의 조건)일 때 사용한다.
def main():
sum = 0
for i in range(1,11):
sum = sum + i
print("sum =", sum, end = ' ')
main()
복습용으로 한번 더 나온 코드이다. range은 단순 반복 목적일 때는 시작 값을 0으로 하는게 관례이다
range(1,11)보다 range(0,10),range(10)으로 하는게 몇 번 반복하는지 알기 쉽기 때문이다.
def main():
cnt = 0
while cnt < 3:
print(cnt, end = ' ')
cnt = cnt + 1
main()
while a < b: 처럼 while의 오른쪽에 오는 a < b 같은 것이 while의 조건이다.
조건이 만족 되어야만 while에 속한 문장을 실행하게 된다.
먼저 while의 조건이 맞는지 계산하고 조건이 참이면 속한 문장을 실행한다.
반복하기 위해서는 조건이 계속 참이어야하기에, 속한 문장을 한 번 실행 후에 다시 조건에 만족하는지 확인한다.
조건이 False가 나올때 까지 위의 상황을 반복한다. False가 나오면 while 루프를 건너 뛴다.
def main():
i = 1
sum = 0
while 1 < 11:
sum += i
i += 1
print("sum =", sum, end = ' ')
main( )
#위의 while 코드를 for문으로 바꾸면 아래코드
def main():
i = 1
sum = 0
for i in range(1,11):
sum += i
print("sum =", sum, end = ' ')
main( )
def main():
i = 1
sum = 0
while sum <= 100:
sum += i
i = i+1
print(i-1, "더했을 때의 합", sum, end = ' ')
main()
위의 코드는 1+2+3...이런식으로 더할 때, 어느 숫자까지 더하면 100을 넘는지를 알아보게 하는 코드이다.
사실 i가 14일때 이미 총 합이 105가 되면서 100을 넘어서지만
코드의 구조상 아래에서 i에 +1이 되기에 최종적으로 출력할때는 i-1로 출력해야 맞게 나온다.
def main():
i = 0
while i < 100:
print(i, end = ' ')
i = i + 1
if i == 20:
break
main()
break는 if,while 같은 반복문 안쪽에서 실행 가능하다.
break를 쓰면 반복문을 탈출한다.
while True: 를 사용하면 계속 반복한다는 의미이다. 단 이런 반복문은 break를 써서
원하는 조건까지 반복하게 써야된다. break없이 쓰는건 무한루프라서 뭔가 잘못 된 것이다.
def main():
i = 1
sum = 0
while True:
sum = sum + i
if sum > 100:
print(i, "더했을 때의 합", sum, end = ' ')
break
i = i + 1
main()
이 코드는 1+2+3...이런식으로 더할 때, 어느 숫자까지 더하면 100을 넘는지를 알아보게 하는 코드를
무한루프와 break를 통해 변형시킨 것이다.
이 코드에서 True를 안쓰고 앞의 예제로 바꿔보거나 앞의 예제를 이걸로 바꾸는 연습을 하자.
for i in range(1,11):
if i % 2 == 0:
continue
print(i, end = ' ')
continue는 break처럼 if,while 같은 반복문 안쪽에서 실행 가능하다.
break는 탈출이고 continue는 생략이다.
continue는 continue 이후의 문장들을 건너 뛰어 버린다. 그리고 다시 조건문으로 올라가게 한다.
위의 코드에서 홀수는 if의 조건에 걸리지않아 바로 print로 넘어가지만
짝수는 if의 조건에 걸려서 if에 속한 문장을 실행시키고, if에 속한 continue가 실행된다.
그러면 아래의 print를 건너 뛰고 다시 반복문의 조건으로 올라가게 된다.
즉 짝수는 print로 넘어가지않기에 출력되지않는다.
[break는 멈춰버려서 반복의 횟수를 줄여버리지만 continue는 반복의 횟수는 그대로이고 남은 부분을 생략할 뿐이다.]
i = 0
while i < 10:
i = i + 1
if i % 3 == 0:
continue
print(i, end = ' ')
위의 코드는 continue를 사용해서 3의 배수를 출력 안하게 한 코드이다.
for i in [1,2]:
for j in ['a', 'b', 'c']:
print(j*i, end = ' ')
이중 for 루프문이다. 어떻게 동작되는지 스스로 분석을 먼저 해보는게 좋다.
변수 i에 1이 들어가고 두번째 for문이 시행된다. 이후 변수 j에 a가 들어가고 print문이 실행된다.
j*i 의 결과인 a가 출력된다. b,c도 마찬가지로 진행되므로 두번째 for문이 끝나면 a,b,c가 출력 될 것이다.
이후 다시 첫번째 for문으로 돌아와서 변수 i에 2가 들어가고 두번째 for문이 시행된다.
변수 j에 a가 들어가고 print문이 실행되면서 j*i의 결과인 aa가 출력된다.
b,c도 마찬가지로 진행되므로 두번째 for문이 끝나면 aa,bb,cc가 출력 될 것이다.
전체적으로 a b c aa bb cc 가 출력된다.
sr = ['father', 'mother', 'brother']
cnt = 0
for s in sr:
for c in s:
if c == 'r':
cnt += 1
print(cnt)
문자열을 대상으로도 for루프를 구성할 수 있다.
첫번째 for문이 실행되면 sr의 리스트 안에 있는 값이 s에 들어가고
두번째 for문에서는 s의 문자열 하나하나가 c에 들어가서 반복된다.
즉 두번째 for문에서, father은 6번 mother은 6번 brother은 7번 반복되는 것이다.
그 중 r이 있으면 cnt에 1을 더하는 것이니, r이 총 4번 있고 cnt의 값은 4가 된다.
'프로그래밍 언어 > 파이썬 기초' 카테고리의 다른 글
파이썬 함수 매개변수 등 (0) | 2023.05.23 |
---|---|
파이썬 튜플,range (0) | 2023.05.23 |
파이썬 bool형,if문, 논리연산자 (0) | 2023.05.22 |
파이썬 여러가지 기능의 함수들 (0) | 2023.05.18 |
파이썬 '객체' (0) | 2023.05.18 |