python 7장. 반복문

Hyuna·2024년 7월 21일

Python 기본

목록 보기
7/17
post-thumbnail

오늘은 반복문에 대해 알아보자


반복문을 사용하지 않는다면
n1 = int(input("정수 한 개를 입력하세요: "))
n2 = int(input("정수 한 개를 입력하세요: "))
n3 = int(input("정수 한 개를 입력하세요: "))
sum = n1 + n2 + n3
print(sum)

연산이 간단할 때는 반복문이 없어도 잘 처리할 수 있다
하지만 숫자가 엄청나게 커지거나 연산을 많이 한다면?


아주 아주 복잡한 코드가 될 것이다


1. while

while 조건표현식:
코드블록

  • 조건이 만족되지 않을 때까지 반복
  • break는 특정 조건이 만족됐을 때 루프를 종료시킨다

💡 1~10까지 합계 구하기

sum = 0   # 사용할 연산식은 = 0 써주기
n = 1
while n <= 10:
sum += n
n += 1

print(sum)


💡 숫자를 입력받아 합이 100을 넘으면 프로그램을 종료하고 최종합을 출력해보자

>> 입력하는 숫자는 모두 0보다 큰 양수
def sum_100() :
    total = 0
    n = 1
    while total <= 100:
        n = int(input("숫자를 입력하세요: "))
        total += n
    print(f"최종합계는 {total}")
    
sum_100()
    


💡 "비밀번호"를 입력할때까지 반복하여 입력받는 프로그램을 작성해보자

>> 올바른 비밀번호를 입력하면 "인증성공" 출력
>> 비밀번호는 "HELLO"

def user_password():
    password = 'HELLO'
    
    while True:
        user_input = input("비밀번호를 입력하세요: ")
        if user_input == password:
            print("인증성공")
            break
        else:
            print("다시 입력하세요: ")
      
user_password()
            



2. for

for 변수 in 순서가 있는 객체:
코드블록

  • 순서가 있는 객체: 문자열, range, 리스트. 튜플
  • 순서가 있는 객체 각 요소들은 변수로 치환되어 코드 블록 실행
    s = "hello"
    
    for ch in s :   # s 문자열을 하나씩 순회하면서 반복
        print(ch)
    >> h
    >> e
    >> l
    >> l
    >> o

for 변수 in range:
코드블록

  • range내 특정 횟수/주기만큼 반복

    
    # 1~10 까지 합
    sum = 0
    for n in range(1, 10):
        sum += n
        
    print(sum)

    >> 45

💡 문자열을 입력받아 그 문자열을 역순으로 출력해보자


def reverse_string(s):
  reversed_s = ""
  for char in s:
      reversed_s = char + reversed_s
  return reversed_s    
  
s = input("문자열을 입력하세요: ")
reversed_s = reverse_string(s)
print(f"역순 결과는 {reversed_s}")

📌 역순되는 원리

reverse_s = ""
s= 'abc'
reverse_s = chr + reverse_s
   = a + " "  >> a
   = b + a    >> ba
   = c + ba   >> bac

💡 N개의 랜덤 숫자를 생성하고 그 숫자들의 합을 계산해보자

>> 랜덤 숫자는 1부터 100사이
>> import random

import random

def random_sum(n):
    total = 0
    for _ in range(n):
        random_num = random.randint(1, 100)
        print(random_num)
        total += random_num
    return total


n =  int(input("랜덤한 숫자를 입력하세요: "))
result = random_sum(n)

print(f"랜덤한 숫자의 합은 {result}")



3. break/continue


📌 if문에서 else를 안 쓰는게 효율적이다

  • break
    반복문을 중단하고 빠져나온다

💡 문자열에서 첫번째 숫자 위치를 출력해보자

s = "지금 쇼핌몰에서 10번쨰 베스트 셀러 책은 뭐야?"

#while
char = 0
while char < len(s):
    if s[char].isdigit():
        print(char)
        break
    char += 1 #숫자를 찾지 못했을 때



#for
for char in range(len(s)):
    if s[char].isdigit():
        print(char)
        break

>> 9


  • continue
    남은 코드의 실행을 중단하고 처음으로 되돌아 간다

💡 10개의 양의 정수를 입력받고 합을 구해보자

sum = 0
count = 0
while count < 10:
    n = int(input("10개의 양의 정수를 입력하세요: "))
    if n <= 0:
        continue
    sum += n
    count += 1
    print("입력한 숫자 개수는: ", count)
         
print("숫자 총 합은: ", sum)





💡 정수를 입력 받아 1부터 해당 정수까지 합을 계산해보자

>> 정수는 1부터
def Sum(num):
 

   if num > 1:
       
       sum = 0
       for i in range(1, num+1):
        sum += i
       
       return sum   
   else:
       print("잘못된 출력입니다")

user_input = int(input("정수를 입력하세요(1이상): ")) 
print(Sum(user_input))


# 함수를 하나만 사용한다면 함수 안에서 input을 줄 수 있다
def Sum():
   user_input = int(input("정수를 입력하세요(1이상): ")) 
 

   if user_input > 1:
       
       sum = 0
       for i in range(1, user_input +1):
        sum += i
       
       return sum   
   else:
       print("잘못된 출력입니다")

result = Sum()
print(result)


💡 정수를 입력받아 해당 정수만큼 별(*)을 출력해보자

>> while 사용
def star():
   n = int(input("정수를 입력하세요: "))
   
   star_total = ""
   while n > 0:
       star_total += "*"
       n -= 1 # n=0이 될때까지 반복
   
   print(star_total)
   return star_total

star()


💡 1부터 100사이 숫자를 랜덤하게 선택하고 숫자를 맞추는 게임프로그램을 작성해보자

>> 숫자를 입력할 때마다 "크다" "작다" "정답이다" 중 하나를 출력
import random

def correct_num():
    num = random.randint(1,100)
    while True:
          user_num = int(input("숫자를 입력하세요: "))
          if user_num > num:
              print("당신의 숫자가 정답보다 큽니다")
          elif user_num < num:
              print("당신의 숫자가 정답보다 작습니다")
          else:
              print("정답입니다")
              break
          
    
correct_num()
           

💡 1부터 9까지 정수를 입력받아 해당 숫자의 구구단을 출력해보자

def solution():
    n = int(input("구구단을 출력해보고 싶은 숫자를 입력하세요(1~9): "))
    for i in range(1, 10):
        print(f"{n}x{i}={n*i} ")
        
    
solution()

💡 문자열을 입력받아 문자열 내 모든 숫자 합을 계산해보자

def sum_string():
    s = input("숫자를 포함한 문자열을 입력하세요: ")
    
    total = 0
    index = 0 
    
    while index < len(s):
        if s[index].isdigit():
            total += int(s[index])
        index += 1     
           
        
    print('문자열 내 숫자합은: ', total)
    
    
sum_string() 


0개의 댓글