반복문과 제어 키워드

송한솔·2023년 5월 24일
0

파이썬

목록 보기
7/16

반복문

프로그램은 반복+제어로 실행됩니다.

  • for 반복문
  • while 반복문

표현할 수 있는 반복 유형 범위

  • while > for
  • for는 특정 상황에서 유리하다는 장점이 있습니다.

for 반복문

  • 반복의 기준이 데이터의 개수일 때
  • 반복 횟수 n이 '데이터 개수 m' 과 동일할 때
  • 최대 반복 횟수가 실행 전에도 확정될 때
  • 코드 예시
for i in [0, 1, 2, 3, 4, 5]:
	print(i)

# 예제
# list 예시
texts = ["아아", "이이", "씨", "뱅", "큐"]
for text in texts:
    print(text)
'''
아아
이이
씨
뱅
큐
'''


# str 예시
texts = "아이씨뱅큐"
for text in texts:
    print(text)
'''
아
이
씨
뱅
큐
'''

# 문자열에서는 한글자씩 합쳐진 문자열을 하나의 배열로 치고 각 글자들을 index 단위로 판단
# 배열에서는 몇글자씩 합쳐지든  각 배열의 index단위로 판단
# 즉, 문자열 "abc"에서 "" = [], [0] = a, [1] = b, c = [2]라고 이해

#=====================================================

# 중첩리스트(이중리스트)
users = [
    ["송한솔", 500],
    ["마크", 4000],
    ["조안", 20]
]
print(users) # [['송한솔', 500], ['마크', 4000], ['조안', 20]]
print(users[0]) #['송한솔', 500]
print(users[1]) #['마크', 4000]
print(users[2]) #['조안', 20]

#=====================================================

# int-list
numbers = [3, 5, 7, 9, 12]
circles = []
for r in numbers:
    area = r * r * 3.14
    circles.append(area)
    print("반지름 {}에 원의 넓이는 {}입니다.".format(r, area))
    # 반지름 3에 원의 넓이는 28.26입니다.
    # 반지름 5에 원의 넓이는 78.5입니다.
    # 반지름 7에 원의 넓이는 153.86입니다.
    # 반지름 9에 원의 넓이는 254.34입니다.
    # 반지름 12에 원의 넓이는 452.16입니다.
print(circles) # [28.26, 78.5, 153.86, 254.34, 452.16]

for 반복문 range(n)

  • 연속된 int형 데이터 n개를 만들 때 사용
  • range(3) : [0,1,2] # 정수형 3개 생성
  • range(1,5) : [1, 2, 3, 4] # 1부터 5이전까지
  • range(1, 10, 2) : [1, 3, 5, 7, 9] # 1부터 10이전까지 2씩 띄어서
  • 코드 예시
for i in range(6):
	print(i)
    
#=====================================================

# 예제
# 연속된 숫자 데이터를 만드는 range([start], end[, step])
print(list(range(6)))
print(list(range(1, 6)))
print(list(range(1, 6, 2)))
print("="*20)


# list-for 예제
numbers = [0,1,2,3,4,5]
for n in numbers:
    print(n)
print("="*20)

for n in range(0, 6):
    print(n)
print("="*20)

# list-for 예제2
numbers = [1, 3, 5, 7, 9]
for n in numbers:
    print(n)

for n in range(1, 10, 2):
    print(n)

for반복문을 사용한 구구단만들기

# 특정 숫자 i의 구구단
for i in range(1, 10):
    print("{} x {} = {}".format(3, i, 3 * i))
print("="*20)

# 전체 구구단 1~9
for i in range(1, 10):
    print("="*20, i, "구구단")
    for j in range(1, 10):
        print("{} x {} = {}".format(i, j, i * j))

while 반복문

  • 모든 반복 상황을 표현할 수 있는 while문
  • 반복할 횟수가 명확하지 않을 때
  • 반복 종료 조건이 어떠한 목표/수치/상태의 달성일 때
  • 코드 예시
total = 1
while total < 1024:
	total *= 2
print(total)

#=====================================================

# 예제 - 몇번을 곱했을까
total = 1
count = 0
while total < 1024: # total이 1024보다 커지면 반복문 종료
    total = total * 2
    count += 1 # 반복문의 실행횟수를 확인
print(total, count) # 1024, 10

# while condition
number = int(input("0을 입력할 때까지 반복 : "))
while number != 0:
    number = int(input("0을 입력할 때까지 반복 : "))
    
print("종료")

# 0을 반환해야 false가 반환되고 반복문이 종료됨

# 같은 동작 다른 방식
number = int(input("0을 입력할 때까지 반복 : "))
while True:
    if number == 0:
        break
    number = int(input("0을 입력할 때까지 반복 : "))
print("종료")

#=====================================================

# while True 응용
basket = [] # 장바구니

while True:
    # if user_input == "0":
    #     break
    basket.append(user_input)
    print("추가 : {}".format(basket))
    user_input = input("0을 입력할 때까지 반복 :")
print("최종 : {}".format(basket))


# 종료조건을 장바구니의 상품 갯수로 바꾸면?
while True:
    user_input = input("0을 입력할 때까지 반복 :")
    basket.append(user_input)
    print("추가 : {}".format(basket))
    if len(basket) >= 3: # 3개 이상이 되면 기입종료
        break

print("최종 : {}".format(basket))


for과 while 비교

  • for로 가능한 건 while도 가능하다
  • while로 가능한데 for로 불가능한 경우는 있다.
    예시) 랜덤한 수를 생성할 때 7777이 나올 때까지 반복하라

다른 코드예시 for문을 while문으로 바꾸기

# for문의 경우
for i in [0, 1, 2, 3, 4, 5]
	print(i)
    
# while문의 경우
numbers = [0, 1, 2, 3, 4, 5]
index = 0
while index < len(numbers):
	print(numbers[index])
    index += 1

제어문 명령어 - pass, break, continue

  • pass : 아무 실행도 하지 않는다.
    주로 기능 구현 전 코드 구조를 잡기 위해 임시로 넣는다.
    아무것도 넣지 않을 경우 에러가 나는 상황이 있다고 합니다.
  • break : 현재 실행되는 반복문을 종료한다
    n개 이상의 반복문 상황일 때는 break가 가까운 반복문을 종료
  • continue : 현재 차례의 반복문은 넘어간다 (Skip)
    break는 반복문의 종료지만,
    continue는 현재 반복의 차례만 종료하고 다음 반복문을 진행합니다.

예제 코드

# pass 아무것도 안함, 구조를 지키기 위해서 일단 기입
a = 3
if a > 3:
    # 무언가를 하겠다.
    pass

    # for문 예시
for i in range(1, 10):
    if i % 3 == 0:
        pass # 3의 배수일 때의 어떤 처리 => 영역확보
        

# continue
print("="*20)
for i in range(1, 10):
    if i % 3 == 0:
        continue # 3의 배수일때 해당 반복문을 종료하고 다음 반복문으로 넘어감
    print(i)


# break
print("="*20)
for i in range(1, 10):
    if i % 3 == 0:
        break # 3의 배수 일때 반복문을 중지
    print(i)

0개의 댓글