제어문(2)
● 반복문(loop, iteration)
- 어떤 작업을 한 번 이상 반복해서 수행
- 동일 작업을 여러 번 반복해서 수행해야 하는데, 100번 수행한다고 100줄을 코딩하고 싶지 않을 때 사용
- while, for
※ cf) do while(C, Java)
1. while
- 특정 조건을 만족하는 동안 반복해서 수행
(1) while문 형태
while 조건식:
조건식이 True일 때 실행할 문장
(2) while문 기본 사용 사례
i = 0
while i < 10:
print(i)
i = i + 1 → cf) i += 1
※ 참고
while True:
수행할 일
if 탈출조건:
break
2. for
- 범위나 횟수가 정해져 있는 동안 반복해서 수행
(1) for문 형태
for 변수 in 집합(떼거지):
반복해서 실행할 문장
(2) for문 기본 사용 사례
for n in [1, 2, 3]:
print(n) → 첫 번째는 1, 두 번째는 2, 세 번째는 3
※ 무한반복하다가 탈출 → while
※ 유한반복하다가 종료 → for
※ 집합(떼거지)
- 문자열(str), 리스트(list), 튜플(tuple), 레인지(range), 세트(set), 딕셔너리(dictionary)
(1) 문자열(str)
for str in '문자열집합':
print(str)
(2) 리스트(list) : [] - 일반적인
for lst in ['첫번째', '두번째', '세번째']:
print(lst)
(3) 튜플(tuple) : () - 수정 불가능
vivaldi_season4 = ('Spring', 'Summer', 'Fall', 'Winter')
for season in vivaldi_season4:
print(season)
(4) 세트(set)(=집합) : {} - 순서 보장 안함
vivaldi_season4 = {'Spring', 'Summer', 'Fall', 'Winter'}
for season in vivaldi_season4:
print(season)
※ 세트는 리스트보다 못한 것 같은데 왜 쓰는가?
- 중복 제거 : 세트는 중복을 허용하지 않는다.
- 빠른 검색 : 리스트보다 1000배 빠르다.(어떤 값이 어떤 집합 안에 있는지 없는지 검색)
!!!!!!!중요!!!!!!!
(5) 레인지(range) : 초기값, 종료값, 증감값
- 초기값부터 종료값까지 증감값만큼 차이를 갖는 그룹
- 초기값을 생략하면 0
- 종료값은 생략 불가능
- 증감값을 생략하면 1
- range(1, 5, 1) → 1, 2, 3, 4, 5
!!!!!!!초고난이도!!!!!!!
(6) 딕셔너리(dictionary)
- 최근 많이 쓰이는 자료구조형인 key, value로 저장하는 방식
person = {'name':'myname', 'age':100}
for item in person:
print(item) → key값이 나옴(name, age)
print(person[item]) → value값을 얻는 방법1
print(person.get(item)) → value값을 얻는 방법2
실습(while)
1. i = 1 일 때 1부터 10까지 출력
i = 1
while i < 11:
print('{}번 출력'.format(i))
i = i + 1
![](https://blog.kakaocdn.net/dn/erpcy7/btrlIckWKEP/UXULBZtTajE8hOhlwGdud1/img.png)
실습(while True)
1. 1부터 10까지의 숫자 중 하나를 입력받아 출력
while True:
num = input('1에서부터 10까지의 숫자 중 하나를 입력해주세요 : ')
if num.isdecimal() == True: # num이 숫자인지 확인
# 숫자가 맞으면 도는 로직
if int(num) >= 1 and int(num) <= 10:
print('입력하신 숫자는 {}입니다.'.format(num))
break
else:
print('숫자는 맞으나 범위가 잘못되었습니다.')
else:
print('{}은 숫자가 아니다'.format(num))
![](https://blog.kakaocdn.net/dn/dF4OgC/btrlDc1xSA6/fDEiZ4Jek3sPt6G5xf4o4k/img.png)
실습(for)
1. 문자열 출력
for str in '문자열집합':
print(str)
![](https://blog.kakaocdn.net/dn/Y26tW/btrlCRwvk6I/Go1qoBJ485Cq3jmwa8wny1/img.png)
2. list 출력
for lst in ['첫번째', '두번째', '세번째']:
print(lst)
![](https://blog.kakaocdn.net/dn/IOLyY/btrlFaOUU5M/pKjqexobTqB4El8vw7YZ01/img.png)
3. tuple 출력(값을 순서대로 출력)
vivaldi_season4 = ('Spring', 'Summer', 'Fall', 'Winter')
print(type(vivaldi_season4))
for season in vivaldi_season4:
print(season)
![](https://blog.kakaocdn.net/dn/o2Y80/btrlIl9YmAr/NSWL6iUJstvjtkhUZeGpr1/img.png)
4. set 출력(값을 순서에 상관없이 출력)
vivaldi_season4 = {'Spring', 'Summer', 'Fall', 'Winter'}
print(type(vivaldi_season4))
for season in vivaldi_season4:
print(season)
![](https://blog.kakaocdn.net/dn/PYQuW/btrlFLajtIO/wQzydfEFfRaX6uhAVv8Yek/img.png)
5. range 출력
(1) 0부터 4까지 1씩 증가하여 출력
for i in range(5): # 0, 1, 2, 3, 4
print(i)
![](https://blog.kakaocdn.net/dn/01R1g/btrlFa9eUWW/sK4C1N8gmKPrr2zlpHaaJK/img.png)
(2) 1부터 9까지 1씩 증가하여 출력_1
for i in range(1, 10, 1): # 1 ~ 9, 10은 포함되지 않음
print(i)
![](https://blog.kakaocdn.net/dn/cx531y/btrlEILUVUM/HXkSc8Tdnl5BLiseorvIVk/img.png)
(3) 1부터 9까지 1씩 증가하여 출력_2
- for 문장에서 1부터 9가 순서대로 돌아가며 실행되도록 정해졌기 때문에 중간에 바꿔도 원래대로 돌아간다.
for i in range(1, 10):
print(i)
i = 9
print(i)
![](https://blog.kakaocdn.net/dn/bvjt13/btrlDxdgJtt/Ke2QKzwh7EkejEYKwik74K/img.png)
6. dict 출력
person = {'name':'myname', 'age':100}
for item in person:
print(item) # key값이 나옴
print(person[item]) # value값을 얻는 방법1
print(person.get(item)) # value값을 얻는 방법2
![](https://blog.kakaocdn.net/dn/be1ANL/btrlFmO6swY/rpgsgCoOLhqWBo8pZD2qq0/img.png)
'Python' 카테고리의 다른 글
[Python] 08 (0) | 2021.11.23 |
---|---|
[Python] 07 (0) | 2021.11.21 |
[Python] 05 (0) | 2021.11.18 |
[Python] 04 (0) | 2021.11.17 |
[Python] 03 (0) | 2021.11.15 |