- 반복문의 이해 및 활용 (while)
- 조건문 : 특정 조건에 따라서, 실행 할지말지
- 반복문 : 특정 조건을 만족하는 동안에 계속 같은 코드를 반복적으로 수행
loop (반복문)
- 반복적인 작업을 가능하게 해주는 도구
- 특정 조건을 만족하는 경우 수행할 수 있음 (while)
- 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 사용 가능 (for)
- 코드 작업에서, 가장 많이 사용하는 구문 중 하나
- 주의할점: while을 사용할 경우, 반복을 멈추게 하는 장치가 필요
- 그렇지 않으면 셀이 무한히 수행되며, jupyter notebook의 재부팅이 필요
while 키워드
- if와 비슷. if는 조건이 ture인 경우, 수행하고 끝.
- while 뒤의 조건이 True일 경우, while 코드 블록을 계속 수행
- while 코드 블록
- if와 마찬가지로 while문 아래의 들여쓰기로 작성 된 부분을 의미
- 조건이 False가 되면 블록 수행을 멈추고 이후 코드를 실행
while 키워드 이용하여 리스트의 아이템 출력하기
#if로하면 한번실행하고 끝
a = [1, 10, 9, 24]
i = 0 # 인덱스 0으로 시작하는 이유.인덱스의 시작이 0이니까
if i < len(a): #len(a):4 a의 길이
print(a[i])
i+=1
print('end')
결과:
1
end
#while로
a = [1, 10, 9, 24]
i = 0 # 인덱스 0으로 시작하는 이유.인덱스의 시작이 0이니까
while i < len(a):
print(a[i], '지금 인덱스i=', i)
i+= 1
print('end')
#무한루프 발생하지 않도록 코딩!
결과:
1 지금 인덱스i= 0
10 지금 인덱스i= 1
9 지금 인덱스i= 2
24 지금 인덱스i= 3
end
while 키워드 이용하여 리스트의 아이템 출력하기
- 조건문과 함께 사용하기
a = [1, 10, 9, 24, 25, 26]
i = 0 # 인덱스
while i < len(a): #a리스트 길이 6보다 작은 인덱스i일때 반복(어짜피 인덱스가 0~5까지라서 다나옴)
if a[i] > 20: # 해당 인덱스의 값이 20보다 큰 경우만 출력하기
print(a[i])
i+=1
#i+=1 #if 블록에 들어가면x
#이건 항상 수행되어야되는데, if 안에 들어가버리면 if조건이 참일때만 수행됨
# if안에 들어가면, a[i]:0 >20 ->거짓
# 아래 두줄이 실행되지 않고 다시 while로 넘어감
# -> i는 다시 0
#인덱스 증가시키는 행위는 조건과 관계없기때문에, 조건과 같은 레벨에서
#인덱스 0:1, 1:10, 2:9 는 출력x
결과:
24
25
26
#코딩의 대부분 이렇게 사용된다.중요중요!
a = [1, 10, 9, 24, 25, 26]
i = 0 # 인덱스
while i < len(a): #어짜피 다들어감 당연히 길이보다 인덱스가 (0부터시작)-1이니까
#if a[i] % 2 ==1: # 2로 나눈 나머지는 1. 홀수인 경우만 출력하기
if a[i] %2: #이걸로해도 마찬가지. 0,1밖에없으니.
print('홀수네', a[i]) #인덱스에 해당하는 값을 출력
else: #나머지 값이 0인게 else되나보네..-if절 false 참고
print('2로 나눴으',a[i] / 2) #짝수인 경우에는 2로 나눈값을 출력
i += 1
결과:
홀수네 1
2로 나눴으 5.0
홀수네 9
2로 나눴으 12.0
홀수네 25
2로 나눴으 13.0
무한루프
- while의 경우 종료가 되지 않도록 코드를 작성하면 블록에서 빠져나올 수 없음
break
- loop를 중단할 때 사용
- 보통 조건문 안에서 수행되며, 조건을 만족하는 경우 loop를 탈출하기 위해 사용
- loop를 중단 하는 경우, while 이후의 코드를 수행
a = [1, 10, 9, 24, 25, 7]
i = 0
while i < len(a): #len(a):6
if a[i] > 20: #리스트 값중에서 20보다 큰수가 나오면,
break #if 그만!->마지막 7이 안나오겟져
print(a[i]) #<-while의 print. 해당 값 출력
i += 1 #while은 보통 마지막에 i+=1로 하는 듯. 출력먼저하고 i에 1씩더해서 반복
print('구문과 상관없음')
결과:
1
10
9
구문과 상관없음
continue
- break 처럼 반복을 중단하여 빠져나오지 않고, 다시 while조건으로 점프함
- 특정한 경우에는 코드를 수행하지 않고 다음으로 건너 뛰기 위해 사용
a = 7
while a > 0:
a -= 1
print(a)
결과
6
5
4
3
2
1
0
#아까 break는 중단이라서, 리스트 마지막 숫자가 조건을 만족하지만 출력x
a = 7
while a > 0: #a가 0보다 크면
a -= 1 #-씩 빼서 반복하는데
if a == 5: #만약 5면 5를 건너뛰고
continue #계속해.
print(a)
결과:
6
4
3
2
1
0
break : 자체 루프를 끝낼 때
continue : 특정 상황에서 건너뛸 때
실습. 1 - 5까지 더하기
n=1
s=0 #합을 가진 변수 필요
while n<=5: #n은 1이고, 5까지 더할꺼니까. 1~5 맞춰놓고
s+=n #1. s=s+n 합을 담는 곳. 첫번째는 s:0 + n:1 = s=1
n+=1 #2. 그리고 n=n+1 하나씩 늘려가
print('한번돌때마다출력:', '1.s는', s,'2.n는',n)
print('while문 끝---------')
print('최종s:', s)
결과:
한번돌때마다출력: 1.s는 1 2.n는 2
한번돌때마다출력: 1.s는 3 2.n는 3
한번돌때마다출력: 1.s는 6 2.n는 4
한번돌때마다출력: 1.s는 10 2.n는 5
한번돌때마다출력: 1.s는 15 2.n는 6
while문 끝---------
최종s: 15
'IT_Python' 카테고리의 다른 글
[파이썬기초] 함수 def. 파라미터/return/multiple return/지역변수/전역변수/*args/**kwargs (0) | 2021.12.16 |
---|---|
[파이썬기초] 반복문 for. for + if/enumerate/break/continue/for 중첩 (0) | 2021.12.15 |
[파이썬기초] 조건문 if else elif / 중첩 조건문 (0) | 2021.12.13 |
[파이썬기초] set. 중복/집합/연산(합집합,교집합...) set()/union/intersection (0) | 2021.12.12 |
[파이썬기초] 딕셔너리 dictionary. 추가/변경/병합/삭제/확인/조회/튜플 변경. update/del/pop/clear/in/get/items (0) | 2021.12.11 |