-
[파이썬] 6. 반복문 while / for 의 이해 (feat. break와 continue)파이썬 Python 2019. 11. 25. 20:34
<반복문 (loop)>
- 반복적인 작업을 가능하게 해주는 알고리즘
- while 문: 특정 조건을 만족하는 경우 수행 할 수 있음
- for 문: 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 사용 가능
- while을 사용할 경우 반복을 멈추게 하는 장치 필요
- 그렇지 않으면 무한루프에 들어가 셀이 무한히 수행 됨. => 재부팅 필요
# while 키워드
- while 뒤의 조건이 true일 경우, 코드블록을 계속 수행
- 조건이 false가 되면 블록 수행을 멈추고 이후 코드를 실행
# while키워드를 사용하여 리스트의 아이템을 출력하기 a = [1, 2, 5, 8,24,100] i = 0 while i <len(a): print ('value: ', a[i], ', index: ', i) i += 1
# while문과 조건문을 함께 사용하여 리스트 아이템 출력 a = [1, 2,42, 5, 8, 24,100, 54] i = 0 while i <len(a): if a[i] > 20: #20보다 큰 경우만 출력 print ('value: ', a[i], ', index: ', i) i += 1
a = [1, 2, 42, 5, 9, 24,100, 54] i = 0 while i <len(a): if a[i] % 2: #홀수인 경우만 print ( a[i]) else: print(a[i]/2) i += 1
#무한루프
- while의 경우 종료되지 않도록 코드를 작성하면 블록을 빠져나올 수 없음.
- 최대한 무한루프가 있는 코드의 사용을 지양하도록!
while True: print('haha')
# break
- 반복문을 중단할 때 사용
- 보통 조건문 안에서 사용되며 조건을 만족하는 경우 loop를 탈출시키기 위해 사용
- loop를 중단할 경우, while 이후의 코드를 수행
a = [1, 2, 5, 8, 24,100, 54] i = 0 while i < len(a): if a[i] > 20: break print(a[i]) i +=1 print('hahaha') #1 2 5 8 hahaha
# continue
- break처럼 반복을 중단하여 빠져 나오지 않고, 조건을 만족할 경우다시 while조건으로 점프함
- 특정한 경우에는 코드를 수행하지 않고 다음으로 건너 뛰기 위해 사용
a = 7 while a > 0: a -= 1 if a == 5: continue #5는 출력되지 않음. print(a) #6 4 3 2 1 0
#연습문제
1 ~ 100까지 더하기
num = 1 _sum = 0 while num <101: _sum += num num += 1 print(_sum) #5050
# for 키워드
- 리스트, 문자열 등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용
- 모든 아이템이 순회되면 for 블록 종료
a = [1, 2, 3, 4, 5] for i in a: print(i, i*2) print('hahaha') ###################### a = [1, 2, 3, 4, 5] for x in a: print (x, x * 2) print('hahaha')
#문자열의 아이템 출력하기
a = 'hello world' for char in a: print(char) ######################## for x in 'hello world': print(x)
#리스트 아이템 출력하기
a = [1, 10, 3, 7, 24] for num in a: if num % 2 == 0: print(num/2) else: print(num+1) # 2 5.0 4 8 12.0
# dict의 아이템 출력하기
- dictionary의 경우 기본적으로 순회하게 되면 key 값을 참조
- keys() 함수를 이용하여 key값만 순회 가능
- values() 함수를 이용하여 value 값만 순회 가능
- items() 함수를 이용해 tuple형태로 key, value 순회 가능
a = {'korea' : 'seoul', 'japan': 'tokyo', 'canada': 'ottawa'} for k in a: print(k, a[k]) ''' korea seoul japan tokyo canada ottawa ''' for k in a: print(k) ''' korea japan canada ''' for value in a.values(): print(value) ''' seoul tokyo ottawa ''' list(a.items()) # [('korea', 'seoul'), ('japan', 'tokyo'), ('canada', 'ottawa')] for key, value in a.items(): print(key, value) ''' korea seoul japan tokyo canada ottawa '''
# for에서 index 사용하기
- 기본적으로for의 리스트를 사용하는 경우, 값만 추출 가능
- enumerate 함수를 이용해 인덱스와 값 모두 사용 가능
a = [1, 2, 4, 3, 5] for num in enumerate(a): print(num) ''' (0, 1) (1, 2) (2, 4) (3, 3) (4, 5) ''' a = [1, 2, 4, 3, 5] for i, val in enumerate(a): print (i, val) ''' 0 1 1 2 2 4 3 3 4 5 '''
# for에서의 break와 continue
a = [100, 90, 80, 70, 60, 50] for num in a: if num < 80: break print(num) # 100 90 80 ####################### a = [100, 90, 80, 70, 60, 50] for num in a: if num >= 60 and num <= 70: continue print(num) # 100 90 80 50
#반복문 중첩
- 반복문도 중첩 가능
- 내부 루프는 외부 루프가 수행되는 만큼 반복 수행 됨
- 무한히 사용 가능
a = [1, 2, 4] for i in a: for j in a: print (i * j) ''' 1 2 4 2 4 8 4 8 16 '''
x = [2, 3,4,5,6,7,8,9] y = [1,2,3,4,5,6,7,8,9] for i in x: for j in y: print(i, 'x', j, '=', i*j)
collection 길이
- len() 내장 함수로 계산 가능
- 내장함수란 파이썬 내부에 구현되어 있어 import 하지 않고도 사용 가능한 함수를 의미
- abs, len, type, range 등
a = [1,2,3,4,5,6] print(a) #[1, 2, 3, 4, 5, 6] print(len(a)) #6 print (len('hello world')) #11
range 함수
- 리스트를 쉽게 만들 수 있는 내장함수
- 주어진 값에 따라 다양한 결과 반환
''' range(10) -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] range(2, 10) -> [2, 3, 4, 5, 6, 7, 8, 9] range(2, 10, 3) -> [2, 5, 8] ''' #1 ~ 100까지의 리스트 만들기 a = list(range(1, 101)) print(a) #1 ~ 100 사이의 5의 배수만 갖는 리스트 생성 a = list(range(5, 101, 5)) print(a)
#연습문제
1. 구구단 2~ 9단까지 출력하시오.
x = 2 while x <= 9: y = 1 while y <= 9: print(x, 'X', y, '=', x*y) y += 1 x += 1
2. 1~ 100 까지의 정수 중 2의 배수 혹은 11의 배수를 모두 출력하시오.
a = list(range(1, 101)) for n in a: if n % 2 == 0 or n % 11 ==0: print(n)
3. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오. (sorted, sort 사용 금지)
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] min = a[0] max = a[0] for x in a: if x < min: min = x if x > max: max = x print(min, max) #1 99
4. a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하시오.
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] #방법 1 i = 0 _sum = 0 while i < len(a): _sum += a[i] i += 1 _mean = _sum / len(a) print(_mean) #37 #방법2 _sum = 0 for x in a: _sum += x _mean = _sum / len(a) print(mean) #37
반응형'파이썬 Python' 카테고리의 다른 글
[파이썬] 8. 파이썬 함수 정의와 호출 - 변수의 범위 (지역변수와 전역변수), 가변길이 인자 (*args, **kwargs), format 함수 (0) 2019.12.04 [파이썬] 7. 파이썬 함수 정의와 호출 - 함수의 parameter, return (함수 파라미터와 리턴) (0) 2019.12.04 [파이썬] 5. 조건문 if / elif/ else (0) 2019.11.25 [파이썬] 4. 컬렉션 타입의 이해 - 파이썬 dictionary 와 set (0) 2019.11.18 [파이썬] 3. 컬렉션 타입의 이해 - 리스트(list)와 튜플 (tuple) (0) 2019.11.18