1. 반복문
: 특정 부분을 원하는 횟수만큼 반복하는 구문
2. for문
: for 변수 in range (시작값, 끝값 +1, 증가값) :
--- 반복할 문장 ---
: 반복할 횟수를 알 때
for i in range(3) :
print("난생처음 파이썬은 재미있습니다. ^^")
for i in range(0,3,1) :
print("난생처음 파이썬은 재미있습니다. ^^")
: range(시작값, 끝값 +1, 증가값) : 지정된 범위의 값을 반환함
ex. range(0,3,1) : 0에서부터 2까지 +1씩 증가하는 값들을 반환함.
- 증가값을 생략할 경우 1로 인식함.
- 따라서 range(0,3,1)은 range(0,3)과 동일함.
- 시작값이 0이기 때문에 시작값도 생략 가능함.
- 따라서 range(3)만 써도 range(0,3,1)과 동일하게 인식함.
for i in range(1,11,1):
print(i, end ='')
for i in [0,1,2] :
print("난생처음 파이썬은 재미있습니다. ^^")
: 리스트 [ ] 이용
[연습문제]
*학생 줄 세우기
i = 0
fact = 1
friends_num = 5
for i in range(1, friends_num+1, 1) :
fact = fact * i
print(fact)
print("A, B, C, D, E 학생들을 순서대로 세우는 경우의 수:", fact)
▶ for문을 활용한 반복적인 덧셈
# 1~10까지 합 구하기
i = 0
hap = 0
for i in range(1,11,1) :
hap = hap + i
print(hap) # hap을 print해보면 hap이 어떻게 누적되고 있는지 볼 수 있음.
print("1에서 10까지의 합: ", hap)
# 1000~2000 사이 홀수의 합 구하기
i, hap = 0,0
for i in range(1001, 2001, 2) :
hap += i
print("1000에서 200까지의 홀수 합: ", hap)
# 1000~2000 사이 짝수의 합 구하기
i, hap = 0,0
for i in range(1000, 2001, 2) :
hap += i
print("1000에서 200까지의 짝수 합: ", hap)
▶ 중첩 for문
: for문 안에 또 for문을 사용할 수 있음
: 중첩 for문의 실행 횟수 = (바깥 for문 반복횟수) X (안쪽 for문 반복횟수)
for i in range(3) : # 0,1,2 가 들어감
for k in range(2) : # 0,1이 들어감
print("파이썬은 쉽습니다.^^ (i값:", i, ", k값:", k, ")")
[연습문제]
* 2단부터 10단까지 구구단 계산기 만들기
# 2단부터 10단까지 구구단 계산기 만들기
for i in range(2,11,1) :
print(i, "단")
for k in range(1,10,1) :
print(f"{i} X {k}= {i*k}")
print()
for i in range(2,11,1) :
for k in range(1,10,1) :
print(i, "X", k, "=", i*k)
print("")
print("구구단 완료입니다.")
3. while문
: 반복횟수가 정해져 있지 않을 때 사용
cf. for문: 반복할 횟수를 range()에서 결정한 후 그 횟수만큼 반복
for i in range(0,3,1) :
print("난생처음 파이썬은 재미있습니다. ^^")
# >> for문과 같은 결과가 나오게 while문으로 바꿔보기
i = 0
while (i < 3):
print(i, " : 난생처음 파이썬은 재미있습니다.^^")
i = i + 1
▶ while 문의 무한반복
: <Ctrl + C> 를 누르기 전까지는 계속 반복됨.
while True :
print("ㅎ하", end = "")
# 입력한 두 숫자의 합계를 반복해서 계산하는 프로그램
hap = 0
num1, num2 = 0,0
while True:
num1 = int(input("숫자1 => "))
num2 = int(input("숫자2 => "))
hap = num1 + num2
print(num1, "+", num2, "=", hap)
▶ break문
: 반복문을 탈출하는 break문
: 반복문 안에서 break문을 만나면 무조건 반복문을 빠져나옴.
for i in range(1,1001,1) :
print("반복문을", i, "회 실행합니다.")
break
hap = 0
num1 , num2 = 0,0
while True :
num1 = int(input("숫자1 => "))
if num1 == 0 : # 0을 입력하면
break # break가 걸려서 마지막 print()함수 값이 출력됨
num2 = int(input("숫자2 => "))
hap = num1 + num2
print(f"{num1} + {num2} = {hap}")
print("0을 입력해서 계산을 종료합니다.")
▶ continue문
: 처음으로 돌아가는 continue문
: break문은 반복문을 빠져나가지만 continue문은 남은 부분을 모두 건너뛰고 반복문의 처음으로 돌아감.
[연습문제]
* 숫자 1~100을 더하되 4의 배수는 더하지 않는 프로그램 만들기
( 4의 배수를 건너뛰고 합계 구하기)
i, hap = 0,0
for i in range(1,101,1) :
if i % 4 == 0 : # i값에서 4를 나눈 값의 나머지가 0이 되면
continue # 다시 for문(처음)으로 돌아가서 다른 i 가져옴
# 4의 배수가 아닌 i값은 아래 계산식으로 넘어감
hap += i
print("1~100의 합계(4의 배수 제외): ", hap)
[연습문제]
* 주사위 3개를 동시에 던져 모두 동일한 숫자가 나와야만 반복문을 탈출할 수 있는 게임을 만들어보자.
몇 번을 던져야 3개의 주사위에서 동일한 숫자가 나올까?
import random
count = 0
dice1, dice2, dice3 = 0,0,0
while True :
count += 1
dice1 = random.randint(1,6)
dice2 = random.randint(1,6)
dice3 = random.randint(1,6)
if (dice1 == dice2) and (dice2 == dice3) :
break
print("3개 주사위는 모두", dice1, "입니다.")
print("같은 숫자가 나오기까지", count, "번 던졌습니다.")
[연습문제]
* 컴퓨터가 1~5까지 숫자 중 한 가지를 생각하면 사람이 그 숫자를 말하는 게임.
(단, 10번 안에는 맞혀야 함)
* 숫자를 맞히면 break문으로 반복문을 빠져나가고, 맞히지 못하면 continue문으로 다시 반복문의 처음 부분으로 돌아가기.
import random
i = 0
com = 0
me = 0
for i in range(1,11,1) :
com = random.randint(1,5)
print(f"게임 {i}회 :", end = "")
me = int(input("컴퓨터의 숫자는 뭘까요? => "))
if com == me :
print("맞혔네요! 축하합니다~ ")
break
else :
print("아쉬워요.", com, "였는데~ 다시 해보세요!")
continue
print("게임을 마칩니다.")
댓글