Python 기초 공부하기 (1-5.반복문)
1-5. 반복문
* for문의 형식
for a in data:
명령어 B
a가 data안에 있는 동안 반복해서 B를 실행해라.
(콜론(:)의 입력이 없거나, 들여쓰기를 하지 않으면 오류가 발생)
예제)
for a in [1,2,3,4,5]:
print(a, '을(를) 저장중입니다')
* range()
range(a, b)는 a부터 b-1까지의 숫자를 출력함.
range(a,b,c)는 a부터 b-1까지 c의 간격으로 숫자를 출력
예제)
for a in range(1,20):
print(a+1, '선생님, 다시는 청소를 빼먹지 않겠습니다.')
예제) #1부터 50까지의 숫자의 합을 구하는 프로그램
result=0
for i in range(1,51):
result += i
print(result)
result += i는 result = result + i와 동일하다.
print()의 줄은 들여쓰기를 하면 안된다.
예제) # 구구단 프로그램
num=int(input('몇 단을 외울까요?'))
for i in range(1,10):
print(num, 'x', i, '=', num*i)
예제) #반복문으로 간단한 게임 만들기.
import random
print(random. random()) #0이상 1미만의 실수 중 하나 무작위로.
import random
print(random.randrange(1,10)) # 1부터 9까지 숫자 중 하나 무작위로.
import random
for i in range(20):
print(random.randint(0,10)) # 0부터 9까지의 정수 무작위로 20개.
예제) # 임의의 숫자로 구구단 출력
1)
import random
print('구구단을 외자!')
for i in range(10):
a=random.randint(2,9)
b=random.randint(2,9)
print(a, 'x', b, '?', a*b)
2)
import random
print('구구단을 외자!')
for i in range(1,10):
a,b=random.randint(2,9), random.randint(2,9)
print(a, 'x', b, '=', a*b)
예제) #컴퓨터가 무작위로 구구단을 출제하고, 사람이 답을 입력하는 방식
import random
print('구구단을 외자!')
a,b= random.randint(2,9),random.randint(1,9)
question=str(a)+'x'+str(b)+'?' #숫자 a,b를 str()로 감싸 문자화 한 후 '+' 기호를 사용하여 연결
input(question)
* while문의 형식
while 조건:
명령어
예제) #숫자 10 미만은 계속 반복되나, 10 이상인 숫자를 입력하면 프로그램이 종료됨.
num=0 (해당 변수를 만들지 않으면, 오류가 발생함)
while num<10:
num=int(input('숫자 입력:'))
* for문 → while문
예제)#'선생님 어쩌고'를 1부터 19줄까지 출력
1. for문
for i in range(1,20):
print(i, '선생님 어쩌고')
2. while문
num=1
while num<20:
print(num, '선생님 어쩌고')
num += 1
예제) #1부터 50까지의 합을 출력
1. for문
result=0
for i in range(1,51):
result += i
print(result)
2. while문
result=0
i = 1
while i<51:
result+=i
i+=1
print(result)
* 반복문
예제)
import random
print('구구단을 외자!')
for i in range(10): #10번 반복하는 반복문
a, b = random.randint(2,9), random.randint(1,9) #무작위 정수 2개 뽑고,
question=str(a)+'x'+str(b)+'?' #뽑은 정수 2개로 문제 만들고,
answer=input(question) #문제를 출력하고 답을 입력받기.
answer = int(answer) #input(answer)은 문자열로 인식되므로, int로 정수형변경 필요
if answer != a*b: #만약 입력받은 값이 아니면, 틀렸습니다 출력
print('틀렸습니다!')
예제) #1부터 30까지 반복문 + if 숫자가 홀수면 '홀수', 이외는 '짝수' 출력
i=1
for i in range(1,31):
if i%2==1:
print(i, '홀수')
else:
print(i, '짝수')
# print()안에 end=','를 삽입 시 줄의 수를 줄일 수 있음.
예제) #1부터 100까지의 반복문에서 3,6,9게임
for i in range(1,101): # in에서는 문자열만 사용이 가능.
if '3' in str(i) or '6' in str(i) or '9' in str(i): # 문자열로 맞추기 위해 str(), ' '을 사용.
print('짝!', end=',')
else:
print(i, ' ', end=',')
예제) #1부터 10까지 임의의 수로 구구단을 계산하여, 틀리면 5회 반복.
import random
for i in range(10):
a,b=random.randint(2,9),random.randint(1,9)
answer = input(str(a)+'x'+str(b)+'=?')
answer = int(answer)
if answer != a*b:
print('틀렸습니다. 5번 반복')
for i in range(5):
print(a, 'x',b,'=',a*b)
* 반복문을 멈출 때 : break 사용
예제) #0에서 19까지 반복 중 입력한 숫자가 나오면 반복문 종료
1)
answer=int(input('숫자 입력: '))
for i in range(20):
print(i, end=' ')
if i == answer:
break
# 만약, 5를 입력했을 때는 0 1 2 3 4 5 출력
2)
answer=int(input('숫자 입력: '))
for i in range(20):
if i == answer:
break
print(i, end=' ')
# 만약, 5를 입력했을 때는 0 1 2 3 4 출력
(5가 입력되었을 때 break가 먼저 실행되어 5는 출력이 되지 않음)
따라서, break의 위치 선정도 중요한 요소
예제) break를 사용한 구구단 게임 프로그램
1) for문
import random
print('구구단을 외자!')
for i in range(10):
a,b=random.randint(2,9), random.randint(1,9) # for문 내부에 해당 내용들이 전부 들어있어야 함(들여쓰기 필요)
answer = input(str(a) + 'x' + str(b) + '=?') #for문의 내부는 문자열로 이루어져 있으므로, 숫자에 str()을 붙이고, 연결은 '+'로 진행
answer = int(answer)
if answer != a*b:
print('땡! 정답은', a*b)
break
2) while문
import random
print('구구단을 외자!')
answer,a,b = 0,0,0 #while문은 사용되는 변수를 정의해 주어야 오류가 발생하지 않음.
while answer == a*b:
a,b=random.randint(2,9), random.randint(1,9)
answer = input(str(a) + 'x' + str(b) + '=?')
answer = int(answer)
print('땡!, 정답은', a*b) #정답이 틀릴 때 출력하는 명령어는 맨 뒤에 작성
예제) 369게임 #순서대로 1,2,짝!을 외쳐주어야 하고 틀릴경우 break
print( '369')
for i in range(1,101):
say = input()
if '3' in str(i) or '6' in str(i) or '9' in str(i):
if say != '짝!':
print('틀렸습니다')
break
else:
if say != str(i):
print('틀렸습니다!')
break