이것저것 공부기록

3. 반복문 본문

언어/Python

3. 반복문

채도리 2020. 5. 19. 20:21

반복문

- 프로그램에서 동일한 문장을 여러 번 반복하는 제어 구조

 

1. while: 조건 제어 반복 → 몇 번 반복할 지 모를 때 사용

2. for: 횟수 제어 반복 → 몇 번 반복할 지 알 때 사용

 

while 반복문

· 반복문을 끝내는 조건이 반드시 존재해야 함. → 그렇지 않으면 무한반복 오류 발생

· 조건식 뒤 콜론(:) 필수! (while과 : 사이를 조건식이라고 인식하기 때문)

· 들여쓰기 중요

for 반복문

· 반복한 문장을 시작값부터 증가값만큼씩 증가시키면서 끝값만큼 반복한다.

· 끝 값만 필수, 시작값의 기본값은 0, 증가값의 기본값은 1

· for 변수 in range(): 콜론 필수!

· 들여쓰기 중요

for i in range(5): # range(5)는 range(0,5,1)과 같음
	print(i)

# 0,1,2,3,4 한줄씩 띄어서 출력됨

끝값까지 출력되는 것이 아니라, 끝값번만큼 출력한다는 것 주의!

 

**그냥 내 생각이지만,

초기값과 증감값을 웬만하면 건들지 않고 조건식을 잘 만드는 것이 보기 편한 것 같다.

 

사실 for문은 항목을 모아놓은 시퀀스(sequence)에서 항목을 하나씩 가져와서 더 이상 가져올 항목이 없을 때까지 반복하는 것. (시퀀스: 리스트, 튜플, 딕셔너리, 문자열 등 데이터에 순서를 붙여 나열한 것)

for i in [0,1,2,3,4]:
    print(i, end=' ')
# 0 1 2 3 4 출력

 

break문

· 반복문에서 반복문 밖으로 무조건 탈출하기 위해 사용

· while True: → 무한반복문

 

continue문

· 반복문에서 무조건 블록의 남은 부분을 건너뛰고 반복문의 처음으로 돌아가기 위해 사용

q를 입력하면 종료, 홀수 입력했을 때만 제곱값을 출력하는 예제

*위의 예제에서 주의할 점

q와 비교해야하기 때문에 처음에 입력받을 때 문자열로 입력받음

후에 짝수인지 홀수인지 비교해야 하기 때문에 int() 함수를 사용해 number라는 새로운 변수에 할당

 


숫자 맞추기 게임

1. 정답 변수를 1~100 사이의 임의의 수로 정한다.

2. "1부터 100 사이의 숫자를 맞춰보세요"라고 말하고 대답을 입력받는다.

3. 대답이 정답이라면 "정답!"을 출력한다.

4. 정답이 아니라면 정답과 비교하여 큰 지, 작은 지 알려준다.

5. 답을 맞출 때까지 계속 물어볼 수 있도록 계속 반복한다.

6. 정답을 맞춘 경우 반복을 중단한다.

import random # random 모듈 임포트
answer = random.randint(1,100) # (a,b) a~b 사이의 임의의 수 randint() 사용하여 구함
while True:
    num = int(input("1부터 100 사이의 숫자를 맞춰보세요: "))
    if num == answer:
        print("정답!")
        break
    elif num > answer:
        print("너무 커요")
    else:
        print("너무 작아요")

 

응용 - 대답을 입력 받을 때마다 '대답횟수' 변수에 1씩 추가하여 정답을 맞춘 경우 몇 번만에 맞추었는지 출력하도록 수정

import random
answer = random.randint(1,100)
cnt = 0
while True:
    num = int(input("1부터 100 사이의 숫자를 맞춰보세요: "))
    if num == answer:
        cnt += 1
        print("정답!",cnt,"번 만에 맞추셨습니다.")
        break
    elif num > answer:
        print("너무 커요")
        cnt += 1
    else:
        print("너무 작아요")
        cnt += 1

 

끝말잇기 게임

1. 문자열의 관련 명령과 조건문, 반복문 이용하기

2. 문자열의 글자 수 알아내는 함수: len(변수)

3. 시작단어를 담을 수 있는 변수 var 만들기

4. 사용자 입력은 ans 변수로 받기

5. var 변수의 마지막 글자와 ans 변수의 첫 번째 글자가 같은 지 확인하기

6. 같다면 ans 변수의 내용을 var 변수로 덮어쓰기

7. 다르다면 "땡" 출력하고 위 과정 반복하기

print("끝말잇기 게임")
print("시작")
var = "가나다"
print(var)

while True:
    ans = input("단어: ")
    if var[len(var)-1] == ans[0]:
        var = ans
    else:
        print("땡!")

 

i부터 n까지 값을 합산하는 프로그램

1. 변수 i, n, result를 만들고 초기화

2. "연산할 수를 입력하세요"를 묻고 대답을 변수 i에 저장

3. "연산할 끝 수를 입력하세요"를 묻고 대답을 변수 n에 저장

4. i부터 n값이 될 때까지 다음을 반복 → 시작 수(i)에서 끝 수(n)가 될 때까지 덧셈을 하여 결과값(result)에 저장

5. 결과값 출력

i, n, result = 0, 0, 0
print("i부터 n까지의 합을 계산하면 얼마일까요?")
i = int(input("연산할 시작 수를 입력하세요: "))
n = int(input("연산할 끝 수를 입력하세요: "))

for k in range (i, n+1, 1):
    result += k
print("합은 %d입니다" %result)

 

구구단 출력 프로그램

print("while문을 이용한 구구단 출력")
i = 2
k = 1

while i < 10:
    while k < 10:
        print("%d X %d = %2d" %(i, k, i*k)) # 2d -> 오른쪽 정렬
        k += 1
    k = 1
    i += 1
print("for문을 이용한 구구단 출력")
for i in range (2, 10, 1):
    for k in range (1, 10, 1):
        print("%d X %d = %d" %(i, k, i*k))

* 서식문자

'언어 > Python' 카테고리의 다른 글

[소창] 10주차 응용 실습 복습  (0) 2020.05.31
5. 함수, 파일, 모듈, 패키지  (0) 2020.05.20
4. 리스트, 튜플, 딕셔너리  (0) 2020.05.19
2. 조건문  (0) 2020.05.19
1. 변수, 숫자, 문자열  (0) 2020.05.18