[Python] 반복문

·2023년 3월 2일
0

[Python] 제로베이스

목록 보기
6/11
post-thumbnail

✒️반복문 이란?

  • 반복문이란 특정 실행을 반복하는 것.
  • 반복문을 사용하면 프로그래밍이 간결하고 유지 보수가 쉽다.

반복문 사용 이유

효율적이다


print("{} * {} = {}".format(2, 1, 2 * 1))
print("{} * {} = {}".format(2, 2, 2 * 2))
print("{} * {} = {}".format(2, 3, 2 * 3))
print("{} * {} = {}".format(2, 4, 2 * 4))
print("{} * {} = {}".format(2, 5, 2 * 5))
print("{} * {} = {}".format(2, 6, 2 * 6))


for i in range(1, 7):
    print("{} * {} = {}".format(2, i, 2 * i))

반복문 종류

  • 횟수에 의한 반복
  • 조건에 의한 반복

✒️횟수에 의한 반복

횟수에 의한 반복이란?
정해 놓은 횟수에 따라 반복을 실행하는 것을 말한다.
주로 for문이 사용된다

for ~ in


for i in range(10):
    result = 7 * i
    print(f'7 * {i} = {result}')


📌결과

7 * 0 = 0
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63

Pass 키워드


for k in range(100):
    pass #pass 없이 실행 시 Error
    

END 개행


for h in range(5):
    print("hi", end="")
  
  
📌결과

hihihihihi
    

Range() 기본

for i in range (5 시작, 10 , 2 단계)

  • 5부터 9까지 2씩 증가하면서 반복

    단계가 1인 경우 & 시작이 0인 경우 생략 가능

startNum = int(input("반복의 시작 : "))
endNum = int(input("반복의 끝 : "))

for i in range(startNum, endNum):
    print(i)
    
📌결과    
    
반복의 시작 : 5
반복의 끝 : 10
5
6
7
8
9    

✒️조건에 의한 반복

조건에 의한 반복이란?

조건에 만족하면 반복 실행한다. 그렇지 않으면 반복을 중단한다.

주로 while문이 사용된다.


n = 1
while n < 10:
    result = 7 * n
    print('{} * {} = {}'.format(7, n, result))
    n += 1 #없을 시 무한루프 

📌결과    

7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
    

✍️실습

1부터 100까지의 정수 중 2의 배수와 3의 배수를 구분해서 출력하자


n = 1

while n <= 100:
    if n % 2 == 0:
        print(f'2의 배수 : {n}')
    elif n % 3 == 0:
        print(f'3의 배수 : {n}')
    n += 1
 
 
📌결과    
2의 배수 : 2
3의 배수 : 3
2의 배수 : 4
2의 배수 : 6
2의 배수 : 8

...

2의 배수 : 94
2의 배수 : 96
2의 배수 : 98
3의 배수 : 99
2의 배수 : 100

✒️for문과 while문 비교

for문이 적합한 경우

횟수에 의한 반복이라면 for문이 while문 보다 적합하다.

ex) 1부터 10까지 합

while문이 적합한 경우

조건에 의한 반복이라면 while 문이 for문 보다 적합하다.

ex) 7의 배수의 합이 50인 최초의 정수

✍️실습

자동차 바퀴가 한번 구를 때 0.15mm씩 마모
현재의 바퀴 두께 : 30mm , 최소 운행 바퀴 두께 : 20mm
앞으로 구를 수 있는 횟수는 ?

조건에 의한 반복이므로 while문이 더 적합하다고 판단


current = 30
rotation = 0
remove = 0.15

while current >= 20:
    rotation += 1
    current -= remove
    # print(f" 구른 횟수 : {rotation} | 현재 바퀴 두께 : {current}")

print(f'앞으로 구를 수 있는 횟수 : {rotation-1}')

📌결과 

앞으로 구를 수 있는 횟수 : 66

반복문 사용시 주의할 점

무한 반복 실행

반복문을 빠져나올 수 없는 경우를 무한 루프라고 한다.
while문의 조건식의 결과가 항상 True인 경우

while (True):
    print("무한루프")
    

✍️실습

하루에 독감 환자 수가 50 - 100 사이일 떼, 누적 독감 환자 수가 최초 10,000명 넘는 날짜 구하기


sum = 0
flag = True
date = 0

while flag:
    patient = random.randint(50, 100)  # 하루 독감 환자 수
    sum += patient
    date += 1
    if sum >= 10000:
        flag = False
        
    print(f"DAY {date} : 누적 환자 수 : {sum} ")
    

📌결과 
DAY 1 : 누적 환자 수 : 70 
DAY 2 : 누적 환자 수 : 128 
DAY 3 : 누적 환자 수 : 203 
DAY 4 : 누적 환자 수 : 268 

...

DAY 130 : 누적 환자 수 : 9770 
DAY 131 : 누적 환자 수 : 9835 
DAY 132 : 누적 환자 수 : 9918 
DAY 133 : 누적 환자 수 : 10017 

✒️반복문 제어

continue

반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어간다.


for i in range(100):
    if i % 7 != 0:
        continue
    print(f"7의 배수 : {i}")


📌결과 
7의 배수 : 0
7의 배수 : 7
7의 배수 : 14
7의 배수 : 21
7의 배수 : 28
7의 배수 : 35
7의 배수 : 42
7의 배수 : 49
7의 배수 : 56
7의 배수 : 63
7의 배수 : 70
7의 배수 : 77
7의 배수 : 84
7의 배수 : 91
7의 배수 : 98

else 키워드

else의 실행문은 반복문이 종료된 후 실행된다.


cnt = 0
for i in range(100):
    if i % 7 != 0:
        continue

    print(f"7의 배수 : {i}")
    cnt += 1

else:
    print(f'99까지 의 정수 중 7의 배수는 {cnt} 개')


📌결과 

7의 배수 : 0
7의 배수 : 7
7의 배수 : 14
7의 배수 : 21
7의 배수 : 28
7의 배수 : 35
7의 배수 : 42
7의 배수 : 49
7의 배수 : 56
7의 배수 : 63
7의 배수 : 70
7의 배수 : 77
7의 배수 : 84
7의 배수 : 91
7의 배수 : 98
99까지 의 정수 중 7의 배수는 15

✍️실습

1부터 100까지 정수 중 3과 7의 공배수와 최소 공배수 출력


minNum = 0

for i in range(1, 101):
    if i % 3 != 0 or i % 7 != 0:
        continue

    print(f'공배수 : {i}')

    if minNum == 0:
        minNum = i
else:
    print(f'최소 공배수 : {minNum} ')


📌결과 

공배수 : 21
공배수 : 42
공배수 : 63
공배수 : 84
최소 공배수 : 21 

break

반복 실행 중 break를 만나면 반복문을 빠져나온다.


num = 0
while (True):
    print("Hello Python")
    num += 1
    if (num > 10):
        break
        
        
📌결과    

Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python
Hello Python

✍️실습

10의 팩토리얼(10!)을 계산하는 과정에서 결과값이 50을 넘을 때의 숫자를 구하자


num = 1

for i in range(1, 10):
    # print(f'{num} * {i + 1} = {num * (i + 1)}')
    num = num * (i + 1)
    if num > 50:
        print(f" num = {i + 1} , 50 이상의 값 : {num}")
        break


📌결과 

num = 5 , 50 이상의 값 : 120



✒️중첩 반복문

반복문안에 또 다른 반복문을 선언한다.

for i in range(1, 10):
    for j in range(i):
        print("*", end='')
    print()
    

📌결과 
*
**
***
****
*****
******
*******
********
*********  

✍️실습

구구단 전체 출력


for i in range(1, 10):
    for j in range(2, 10):
        print(f'{j} * {i} = {j * i} \t', end='')
    print()
    
📌결과 

2 * 1 = 2 	3 * 1 = 3 	4 * 1 = 4 	5 * 1 = 5 	6 * 1 = 6 	7 * 1 = 7 	8 * 1 = 8 	9 * 1 = 9 	
2 * 2 = 4 	3 * 2 = 6 	4 * 2 = 8 	5 * 2 = 10 	6 * 2 = 12 	7 * 2 = 14 	8 * 2 = 16 	9 * 2 = 18 	
2 * 3 = 6 	3 * 3 = 9 	4 * 3 = 12 	5 * 3 = 15 	6 * 3 = 18 	7 * 3 = 21 	8 * 3 = 24 	9 * 3 = 27 	
2 * 4 = 8 	3 * 4 = 12 	4 * 4 = 16 	5 * 4 = 20 	6 * 4 = 24 	7 * 4 = 28 	8 * 4 = 32 	9 * 4 = 36 	
2 * 5 = 10 	3 * 5 = 15 	4 * 5 = 20 	5 * 5 = 25 	6 * 5 = 30 	7 * 5 = 35 	8 * 5 = 40 	9 * 5 = 45 	
2 * 6 = 12 	3 * 6 = 18 	4 * 6 = 24 	5 * 6 = 30 	6 * 6 = 36 	7 * 6 = 42 	8 * 6 = 48 	9 * 6 = 54 	
2 * 7 = 14 	3 * 7 = 21 	4 * 7 = 28 	5 * 7 = 35 	6 * 7 = 42 	7 * 7 = 49 	8 * 7 = 56 	9 * 7 = 63 	
2 * 8 = 16 	3 * 8 = 24 	4 * 8 = 32 	5 * 8 = 40 	6 * 8 = 48 	7 * 8 = 56 	8 * 8 = 64 	9 * 8 = 72 	
2 * 9 = 18 	3 * 9 = 27 	4 * 9 = 36 	5 * 9 = 45 	6 * 9 = 54 	7 * 9 = 63 	8 * 9 = 72 	9 * 9 = 81 	





드디어 파이썬 기초 강의 끝!
짧은 소감
아직 기초지만,, 오랜만에 코딩 공부하니까 재밌다..ㅎㅎ
profile
개발하고싶은사람

0개의 댓글