파이썬(Python)_반복문

1. 반복 수행을 위한 for 문

  • for 문
    - 리스트, 튜플, 사진, 문자열과 같은 객체 항목들을 순회하며 특정 작업을 반복해서 수행하기 위해 사용

  • for 문의 문법

for 변수 in 순회할 객체: # 순회할 객체의 첫번째 항목부터 마지막 항목까지 차례로 변수에 대입
    명령문1
    명령문2

✨ ex. 구구단의 경우 한줄 한줄 일일이 코드를 짤 수 있으나, but 코드 상에 많은 중복이 나타나고 변경사항 발생시 수정사항이 많아짐
→ 코드의 중복된 부분을 찾아 반복문 안에서 처리하는 명령문으로 바꿔 해결!

  • for 문을 활용한 구구단 프로그램
dan = int(input("단을 입력하세요: "))
for i in (1,2,3,4,5,6,7,8,9):
    print("{0} x {1} = {2:>2}".format(dan, i, dan * i)) # >2 정렬의 방향을 우측으로 하고 자릿수는 2자리로 함
dan = int(input("단을 입력하세요: "))
for i in range(1, 10, 1):
    print("{0} x {1} = {2:>2}".format(dan, i, dan * i)) # 위 코드와 동일함.
  • range( ) 함수 :
    - 객체를 생성하는 코드
    • 범위를 다룸
    • range(범위의 시작 값, 종료 값, 증감치)
      1) 첫 번째 인자 값은 범위에 포함되고, 두 번째 인자로 전달된 값은 범위에 포함되지 않음
      2) 두 번째 인자는 생략할 수 없으며, 첫 번째 인자와 세 번째 인자는 생략 가능
      3) 인자를 생략할 경우 첫 번째 인자의 기본값은 0, 세 번째 인자의 기본값은 1
1 range(0, 10, 1) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2 range(10, 1) # 첫 번째(0) 인자 생략
3 range(10) # 첫 번째(0), 세 번째(1) 인자 생략
4 range(1, 10, 2) # 1, 3, 5, 7, 9
5 range(10, -1, -2) # 10, 8, 6, 4, 2, 0
  • for 문에서 사전(Dictionary) 객체를 이용해 항목 출력
dogs = {1: "골든리트리버", 2: "진돗개", 3: "보더콜리"}

for key in dogs:
    print("{0} : {1}".format(key, dogs[key]))
    
for key, value in dogs.items(): # <class 'dict_items'> 객체 활용
    print("{0} : {1}".format(key, value))
    
[결과]
1 : 골든리트리버
2 : 진돗개
3 : 보더콜리
  • for 문에서 문자열을 이용한 개별 문자 출력
str = "Python"

for c in str:
    print("{0}".format(c))
    
[결과]
P
y
t
h
o
n
  • for 문에서 리스트 객체를 이용해 총점을 구하는 코드
scores = [100, 95, 88, 98] # 리스트형으로 4개의 점수를 저장
total = 0 # 총점 초기화

for score in scores:
    total += score
    
print("총점: {0}".format(total))

[결과]
총점 : 381

2. 중첩된 for 문

  • 중첩된 for 문
    - for 문 안에 또 다른 for 문이 들어있는 형태

  • 중첩된 for 문의 문법
    - 순회할 객체1의 항목수 x 순회할 객체2의 항목수 만큼 반복문이 실행됨

for 변수1 in 순회할 객체1:
    for 변수2 in 순회할 객체2:
        명령문1
        명령문2
        ...
  • 중첩된 for 문을 활용한 구구단 출력 코드
dan = range(2, 10) # range 객체로 2~9 정수 값을 항목으로 가짐
num = range(1, 10) # range 객체로 1~9 정수 값을 항목으로 가짐

for i in dan:
    for k in num:
        print("{0} x {1} = {2:>2}".format(i, k, i * k))
        if k == 9: # True일 경우 각 단 사이에 공백 라인을 출력하기 위한 코드
            print()
            
for i in dan:
    for k in num:
        print("{0} x {1} = {2:>2}".format(i, k, i * k))
    print() # 위와 동일한 코드

[결과]
2 x 1 =  2
2 x 2 =  4
2 x 3 =  6
2 x 4 =  8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

3 x 1 =  3
3 x 2 =  6
...

3. 반복 수행을 위한 while 문

  • while 문
    - bool 값을 반환하는 조건식의 결과에 의해 반복 결정
    - 조건식이 False 값을 반환해야 while 문의 반복이 중지되므로 무한반복의 방지를 고려해야 함

  • while 문의 문법

while 조건식:
    명령문1
    명령문2
    ...
  • while 문으로 작성한 구구단 출력 코드
dan = int(input("단을 입력하세요: "))
i = 1

while i < 10: # i가 10일 경우 False를 반환하면서 while문이 종료됨
    print("{0} x {1} = {2:>2}".format(i, k, i * k)) # :>2 정렬방향 우측, 자릿수는 2자리
    i += 1 # 변수 i에 대해 반복이 일어날 때마다 1씩 증가시키는 문장이 없다면 무한루프에 빠짐
  • while 문에서 리스트 객체를 이용해 총점을 구하는 코드
scores = [100, 95, 88, 98] # 리스트형으로 4개의 점수 저장
total = 0 # 총점 변수 초기화
cnt = len(scores)
i = 0 # 첫 번째 항목의 위치(인덱스)를 나타내는 0을 저장

while i < cnt:
    total += scores[i]
    i += 1

print("총점: {0}.format(total))

[결과]
총점: 381

4. 반복을 제어하기 위한 break 문, continue 문

  • for 문 : 순회할 객체의 마지막 항목까지 반복

  • while 문 : bool 값을 반환하는 조건식이 False를 반환할 때까지 반복

  • break 문 : 논리적으로 반복문을 빠져나갈 때 사용

  • continue 문 : 이후 코드는 건너뛰고 반복문을 계속 실행할 때 사용

answer = "" # 변수 answer는 공백 문자열("")로 초기화

while True:
    answer = input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다. : ")
    if answer == "q":
        break # 'q' 입력시 while 문에서 벗어남
    print("'{0}'를 입력하셨습니다.".format(answer))

print("프로그램을 종료합니다...")

[결과]
명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다. : q
프로그램을 종료합니다...
answer = ""

while True:
    answer = input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다. : ")
    if answer == "q":
        break
    print("'{0}'를 입력하셨습니다.".format(answer))

print("프로그램을 종료합니다...")

[결과]
명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다. : a
'a'를 입력하셨습니다.
  • continue 문 예시
    - 1부터 10까지 저장되어 있는 리스트 객체에서 3의 배수를 제외한 합을 구하는 코드
numlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
total = 0 # 총합을 저장할 변수 초기화

for n in numlist:
    if n % 3 == 0: # n의 값이 3의 배수인지 검사하기 위해 나머지(%) 연사자 사용
        continue # n의 값이 3의 배수일 때 : 나머지 블록은 건너뛰고 for 문으로 제어를 옮김
    total += n # n의 값이 3의 배수가 아닐 때 : 변수 total에 값을 누적
    
print("3의 배수를 제외한 총합: {0}".format(total))

[결과]
3의 배수를 제외한 총합: 37

5. for문과 while문을 활용해 프로그램 만들기

  • Step 1.
  • Step 2.
  • Step 3.

해당 포스팅은 아래의 사이트를 참고하여 작성하였습니다.
SW Expert Academy https://swexpertacademy.com/

좋은 웹페이지 즐겨찾기