- 는 개념 정리
- 는 개인적으로 새롭게 알게 된 점
3. 반복문과 While 반복문
범위 자료형
- 매개변수에 숫자를 한 개 넣는 방법
- range(A) : 0부터 A-1 까지의 정수로 범위를 만듦
- 매개변수에 숫자를 두 개 넣는 방법
- range(A,B) : A부터 B-1까지의 정수로 범위를 만듦
- 매개변수에 숫자를 세 개 넣는 방법
- range(A,B,C) : A부터 B-1까지의 정수로 범위를 만드는데, 앞뒤의 숫자가 C만큼의 차이를 가짐.
- 파이썬의 모든 기능들은 범위를 지정할 때 뒤에 입력한 숫자를 포함하지 않음.
- 범위를 만들 때 매개변수 내부에 수식을 사용하는 경우도 있음.
- 마지막 숫자를 포함해야 한다는 것을 강조하고 싶을 때.
- e.g. 10을 반드시 포함해야 한다는 것을 강조하고 싶을 때 다음과 같이 작성하기도 함.
- 마지막 숫자를 포함해야 한다는 것을 강조하고 싶을 때.
a = range(0, 10 + 1)
print(list(a))
- 수식에 나누기 연산자를 사용한 경우
- range() 함수의 매개변수로는 반드시 정수를 입력해야 하기 때문에 TypeError 발생.
- int() 함수 등으로 실수를 정수로 바꾸는 방법도 있으며, 정수 나누기 연산자를 많이 사용함.
- range() 함수의 매개변수로는 반드시 정수를 입력해야 하기 때문에 TypeError 발생.
n = 10
a = range(0, n/2) #매개변수로 나눗셈을 사용한 경우 오류 발생
a = range(0, int(n/2)) #실수를 정수로 바꾸는 방법도 사용 가능하지만,
a = range(0, n//2) # 정수 나누기 연산자를 많이 사용함.
for 반복문
반복문의 기본 형태:
for 반복자 in 반복할 수 있는 것:
코드
* 반복할 수 있는 것: 문자열, 리스트, 딕셔너리, 범위 등이 있음 !!*
1) 문자열에서의 for 반복문
CODE
# 리스트에 반복문 적용
for character in "안녕하세요":
print(character)
OUTPUT
안
녕
하
세
요
글자 하나하나에 반복이 적용됨.
2) 리스트에서의 for 반복문
CODE
# 리스트 선언
array = [281, 193, 4, 1101, 109]
# 리스트에 반복문 적용
for element in array:
print(element)
OUTPUT
281
193
4
1101
109
리스트에 있는 요소 하나하나가 element 라는 변수에 들어가며, 차례차례 반복하게 됨.
3) 딕셔너리에서의 for 반복문
* 딕셔너리 내부에 있는 키가 변수에 들어감. *
for 키 변수 in 딕셔너리:
코드
CODE
# 리스트 선언
dictionary = {
"name": "7D 건조 망고",
"type": "당절임",
"ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
"origin": "필리핀"
}
# for 반복문 사용
for key in dictionary:
print(key, ":", dictionary[key])
OUTPUT
name : 7D 건조 망고
type : 당절임
ingredient : ['망고', '설탕', '메타중아황산나트륨', '치자황색소']
origin : 필리핀
4) 범위에서의 for 반복문
for 숫자 변수 in 범위:
코드
CODE
for i in range(5):
print(str(i))
print()
for i in range(5,10):
print(str(i))
print()
for i in range(0, 10, 3):
print(str(i))
print()
OUTPUT
0
1
2
3
4
5
6
7
8
8
0
3
6
9
for 반복문: 반대로 반복하기
큰 숫자에서 작은 숫자로 반복문을 적용해야 하는 경우: 역반복문
크게 2가지 방법이 있음.
- range() 함수의 매개변수를 세 개 사용하는 방법
- reversed() 함수를 사용하는 방법
1. range() 함수의 매개변수를 세 개 사용하는 방법
CODE
# 역반복문
for i in range(4, 0-1, -1): #-1로 사용해도 되는데, '0'을 꼭 포함시켜야 함을 강조하기 위해서 '0-1'로 사용함.
print("현재 반복 변수: {}".format(i))
2. reversed() 함수를 사용하는 방법
- reversed() 함수는 주의 사항이 굉장히 많은 함수
- +추가) 다음 장에서 다룸.
CODE
# 역반복문
for i in reversed(range(5)):
print("현재 반복 변수: {}".format(i))
OUTPUT
현재 반복 변수: 4
현재 반복 변수: 3
현재 반복 변수: 2
현재 반복 변수: 1
현재 반복 변수: 0
While 반복문
for 반복문: 리스트 또는 딕셔너리 내부의 요소를 모두 순회하는 경우, 즉, 특정 횟수만큼 반복하는 경우에 사용
* 파이썬에는 for 반복문 이외에도 범용적으로 사용할 수 있는 while 반복문이 있음.
가장 중요한 키워드는 조건
조건을 활용해서 반복을 사용해야 한다면, for 반복문 보다 while 반복문을 사용하는 편이 좋음 *
while 불 표현식:
문장
- if 문과 굉장히 비슷한 형식인데, <불 표현식> 이 참인 동안 문장을 계속 반복함.
while 반복문: for 반복문처럼 사용하기
- for 반복문을 설명할 때 언급했던 것 이외에는 모두 while 반복문을 사용함.
- for 반복문: 문자열, 리스트, 딕셔너리, 범위
- 대표적으로 무한 반복 때 사용, for 반복문으로는 무한 반복을 구현 할 수 없음.
- while 반복문에서 가장 중요한 키워드는 '조건'. 조건을 활용해서 반복을 사용해야 한다면, while 반복문 사용.
1) while 반복문: 상태를 기반으로 반복하기
4-1. 리스트에서 살펴본 remove() 함수는 리스트 내부에서 해당하는 값을 하나만 제거할 수 있었음.
while 반복문을 활용하면 여러 개를 제거할 수 있음.
- while 반복문의 조건을 '리스트 내부에 요소가 있는 동안'으로 지정.
CODE
list_test = [1,2,3,2]
value = 2
#list_test 내부에 value가 있다면 반복
while value in list_test:
list_test.remove(value)
print()
OUTPUT
[1,3]
2) while 반복문: 시간을 기반으로 반복하기
- 유닉스 타임: 세계 표준시 (UTC)로, 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타낸 것.
- 유닉스 타임과 while 반복문을 조합하면 특정 시간 동안 프로그램을 정지시킬 수 있음.
CODE
import time
number = 0
# 5초 동안 반복함.
target_tick = time.time() + 5
while time.time() < target_tick:
number += 1
print("5초 동안 {}번 반복했음.".format(number))
OUTPUT
5초 동안 14223967번 반복했음.
break 키워드 / continue 키워드
반복문 내부에서만 사용할 수 있는 break, continue 키워드.
- break: 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 많이 사용.
- continue: 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용하는 키워드
CODE
numbers = [5, 15, 6, 20, 7, 25]
for number in numbers:
if number < 10:
continue
print(number)
OUTPUT
15
20
25
* if else 구문을 사용해도 됨. 다만, continue 키워드를 사용하면, 이후 처리의 들여쓰기를 하나 줄일 수 있음.
CODE
for number in numbers:
if number >= 10:
#문장
#문장
'Python Basic > 혼공파' 카테고리의 다른 글
[혼공파] Chapter 05 함수 ①함수 만들기 (0) | 2021.01.12 |
---|---|
[혼공파] Chapter 04 반복문 ④문자열, 리스트, 딕셔너리와 관련된 기본 함수 (0) | 2021.01.12 |
[혼공파] Chapter 04 반복문 ②딕셔너리 (0) | 2021.01.11 |
[혼공파] Chapter 04 반복문 ①리스트 (0) | 2021.01.11 |
[혼공파] Chapter 03 조건문 (0) | 2021.01.07 |