[Python 101] Chap04 - 파이썬 반복문
(CLASS1O1의 ‘Python 101: 매일 30분, 40일 동안! LV. 1 파이썬 기초 프로젝트’ 수업에 기반한 정리) Chap04 - 파이썬 반복문
Boolean 타입과 조건문
Boolean 타입
- 참과 거짓을 표현하는 자료형
- 비교 연산자의 결과값 등으로 사용함
조건문
- 어떤 조건에 따라 동작을 수행하고자 할 때 사용
- if 라는 파이썬 키워드
- 조건 다음에는
:
이 있어야 함 - 조건을 만족할 때 수행되는 문장은 들여쓰기 (스페이스 4칸; 탭) 되어야 함
- 조건을 만족하면 들여쓰기 된 문장들이 순서대로 실행됨
- 여러 조건을 사용할 경우
- 2개:
if ~ else
- 3개 이상:
if ~ elif ~ else
- 2개:
논리 연산자
- and, or, not
FOR 반복문
for i in LIST:
: i는 인덱스로써 LIST의 값과 1:1로 바인딩 됨
tickers = ['A','B','C']
for i in tickers:
print(str(tickers.index(i)+1) + '번 티커: ' + i)
# 1번 티커: A
# 2번 티커: B
# 3번 티커: C
과자 = {
"꼬갈콘":2000,
"새우깡":3800,
"포카칩":1100
}
#과자.items()
#과자.keys()
#과자.values()
for k,v in 과자.items():
print(k,v)
- for와 range: 정수범위 출력하는 내장함수
- range(0,5): 0~4 숫자 생성
- range(start,end,step): start부터 end값(미포함) 까지 step 간격으로 생성
- range와 list는 다름. 메모리 관점에서 range가 더 효율적.
- enumerate
- 리스트의 원소 인덱스를 출력해주는 내장함수
과자 = ['꼬갈콘','새우깡','포카칩']
for i, v in enumerate(과자):
print(i,v)
연습문제
- 리스트 for문
data = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
]
for i in data: # i: 1차원 리스트
print(i[3])
- 딕셔너리 for문
과자 = {
"꼬갈콘":2000,
"새우깡":3800,
"포카칩":1100
}
for j,k in 과자.items():
print(j, k * 0.9)
- FOR문과 조건문
coin = {
'BTC':[100,120], #매수가, 매도가
'XRP':[600,500],
'ETH':[1000,1100]
}
res = []
for j,k in coin.items():
if((k[1]-k[0])/k[0] >= 0.03):
res.append(j)
print(j)
res # ['BTC', 'ETH']
break, continue, pass
- 특정 조건을 만족할 때 반복문을 탈출하기 (break)
- 조건은 if로 판단, 탈출은 break
과자 = { "A":1680, "B":3830, "C":1180, "D":2980, "E":1680 } res = 0 res_nm = [] for j,k in 과자.items(): if(res + k > 7000): break # 위의 조건 만족하는 순간, 아래 블록 실행하지 않음 res_nm.append(j) res = res + k print(res, res_nm)
- 반복문 특정 조건만 건너뛰기 (continue)
- 반복문에서 continue 키워드를 만나면 들여쓰기 된 코드는 수행하지 않고 다음 반복으로 이동
for i in range(10): if i % 2 == 0: continue print(i)
# 01~69까지 승용차 의미함. 다음 번호판에서 승용차만 출력. 리스트 = [ "01가 1234", "02나 1010", "80가 1011", "91다 9939", "61오 5341" ] for i in 리스트: if int(i[0:2]) >= 70: continue print(i)
- pass
- 구문적으로는 명령문이 존재해야 하나 딱히 처리할 일이 없을 때 사용가능
for i in range(3): pass
- 구문적으로는 명령문이 존재해야 하나 딱히 처리할 일이 없을 때 사용가능
WHILE 반복문
- 조건이 참인 동안 while에 들여쓰기 된 문장이 수행 됨
- for문 보다 권장
num = 1
while num <= 5:
print(num)
num = num + 1
- while문과 무한루프
- time.sleep(5): 인터프리터가 5초 대기함
~~~python
import time
print(“Hi”)
time.sleep(5)
print(“Bye”)~~~python import time while True: print("ING") time.sleep(1)
- Control + C 눌러서 무한 루프 탈출 가능
- time.sleep(5): 인터프리터가 5초 대기함
사용자 입력
- input함수는 사용자로부터 값을 하나 입력 받는 함수
- 기본적으로 문자열 타입으로 입력 받음
# 유저로부터 값을 입력받기 전까지 인터프리터 멈춰있음. user = input("숫자를 입력하세요:") print(user,type(user))
연습문제
- while문 사용하여 10,000원에서 5일 연속 상한가(30%) 기록한 경우의 금액 출력하라.
price = 10000
day = 1
while day <= 5:
price = price * 1.3
print(day,price)
day = day + 1
#1 13000.0
#2 16900.0
#3 21970.0
#4 28561.0
#5 37129.3
- 로또번호 1~45의 숫자 6개 성성. (숫자 중복 안 됨)
import random
lotto = []
while len(lotto) < 6:
number = random.randint(1,45)
if number not in lotto:
# 조건문 만족 못 하면 다시 상단 (while)으로 돌아감
lotto.append(number)
print(lotto)
print(lotto)
- 1~100까지에 대한 업/다운 게임 만들기.
- 컴퓨터가 1~100 숫자 생성.
- 사용자로부터 값을 입력받은 후 사용자가 입력한 값이 컴퓨터가 뽑은 값 보다 크면 업, 작으면 다운, 같으면 프로그램 종료.
- 풀이와 다른데, 내 풀이가 보다 적절한 것 같음
import random
user = int(input("1~100 사이 숫자를 입력하세요:"))
prog = random.randint(1,100)
prog_list = []
while user != prog:
if user > prog:
prog_list.append(prog)
prog = prog + 1
print("Up")
elif user < prog:
prog_list.append(prog)
prog = prog - 1
print("Down")
print(user, prog)
print(str(len(prog_list)) + "번 째에 게임 종료")