본문 바로가기
IT/파이썬

[파이썬 함수] while, if , esle, elif 문 실습

by 149c 2022. 3. 13.

# while 반복문


i = 1      
while i <= 5:   # i가 5보다 작거나 크다면 아래로, 그렇지 않으면 종료
   print("나는 잘생겼다!")  
   i += 1        # i에 1을 더해줌

[결과 값]

나는 잘생겼다!

나는 잘생겼다!

나는 잘생겼다!

나는 잘생겼다!

나는 잘생겼다!

 

 

# if, else, elif문

 

# 예시 : if, else, elif문을 활용하여, 학점을 계산해보자. 

 

def print_grade(midterm_score, final_score): # grade 함수를 정의해봅시다.
   total = midterm_score + final_score        # total 점수는 midterm_score와 final_score의합으로 구합니다.
   if total >= 90:                                    # 만일, total 점수가 90점 보다 크거나 같으면: 
      print("A")                                       # A 학점
   elif total >= 80:                                 # if문 안에 다시 if를 넣을 수도 있지만, elif를 쓰면 간단하게 됩니다.
      print("B")
   elif total >= 70:
      print("C")
   elif total >= 60:
      print("D")
   else:                                                # 마지막으로 이도 저도 아니면, 
      print("F")                                       # F학점이 되겠군요.

print_grade(35, 50)                                # 총점 85점이므로, B 학점이 출력됩니다.

 

 

# while문과 if문을 함께 활용

# [실습] 100 이하의 자연수 중 2의 배수이지만, 3의 배수는 아닌 것을 모두 출력해봅시다.

 

i = 2               
while i <= 100:                      # 100 이하의 자연수 중
   if i % 2 == 0 and i % 3 != 0:  # x의 배수라는 의미는, x로 나눴을 때 나머지가 x인 수를 의미.
      print(i)                          
      i += 1                                 
   else:
      i += 1                            # 위 조건에 해당하지 않을 경우 i의 값을 1씩 더해줌

[결과 값]

2
4
...(생략)...
98
100

 

# 누적된 합을 보관하는 변수 tatal

# 1 부터 9까지 숫자를 모두 더한 값을 출력해봅시다.

 

i = 1
total = 0          # total 변수에 합산한 값을 저장합니다.

while i < 10:     # 9보다 작을 경우,
   total += i      # total = total + i와 동일, 즉 total 값에 i 값을 더해줍니다.
   i += 1          # i에 1씩 더해줍니다.

print(total)

 

[결과 값] 45

 

# [실습] 이번엔 1,000보다 작은 자연수 중 2 또는 3의 배수의 합을 출력해봅시다.

 

i = 1
total = 0              # 합산을 구함

while i < 1000:      # 1,000보다 작은 자연수 중
   if i % 2 == 0 or i % 3 ==0:       # 2의 배수 또는 3의 배수일 경우
      total += i                           # total의 값에 i값을 더함
      i += 1 
   else:
      i += 1

print(total)

 

[결과 값] 333167

 

 

# [실습] 정수 N의 약수를 모두 출력하고, 총 몇 개의 약수가 있는지 출력해봅시다.

N = 3
i = 1
count = 0


while i <= N:                 # i가 N 이하일 경우에만,
   if N % i == 0:             # N을 i로 나누었을 때, 나머지가 0인 경우라면,
      print(i)                    # i의 값을 출력하고,     
      count += 1             # count에 1개씩 더해 줌
   i += 1                     

# 참고로 i += 1은 if문 밖에 있어야 함. 그렇지 않으면 "무한 루프"에 빠지게 됨!

print("{}의 약수는 총 {}개입니다.".format(N, count))

 

 

# [실습] 2000년 5천만원을 투자했을 때, 2022년에는 얼마를 벌게 됐을까?
# (1번 선택지) 5천만원을 펀드에 투자했을 때, 매년 동일한 이자 5%씩이라고 가정

# (2번 선택지) 2022년 현재 아파트 시세는 10억원이라고 가정

# 펀드와 아파트 중 어느 곳에 투자한 것이 수익률이 높았을까?

# 먼저 상수(바뀌지 않을 값)와 변수(바뀔 값)를 모두 정의
# 01. 상수 정의 (상수 이름은 모두 대문자로!)

# 이자율 (INTEREST_RATE) → 5%로 동일(고정)
# 2022년 아파트 가격 (APARTMENT_PRICE_2022) → 10억원으로 고정

INTEREST_RATE = 0.05
APARTMENT_PRICE_2022 = 1000000000

# 02. 변수
# 2000년부터 시작, 2022년까지 반복을 하기 위한 연도 변수 year 설정
# 매년 펀드의 잔액이 최초 50000000 부터 시작해서 매년 쌓임. 이를 bank_balance 변수에 저장

year = 2000
bank_balance = 50000000

# while 반복문이 수행될 때마다, bank_balance가 5%씩 늘어나도록 하면 됨. 코드로 표현하면?

 

bank_balance = bank_balance * (1 + INTEREST_RATE)

while year < 2016:
   bank_balance = bank_balance * (1 + INTEREST_RATE)
   year += 1

# if, else문을 통해 펀드 투자 잔액이 더 큰지, 아파트 가격이 더 큰지에 따라서 출력 결과를 정해 주면 됨

if bank_balance > APARTMENT_PRICE_2022:
   print("{}원 차이로 펀드 투자가 맞습니다.".format(int(bank_balance - APARTMENT_PRICE_2022)))
else:
   print("{}원 차이로 아파트 투자가 맞습니다.".format(int(APARTMENT_PRICE_2022 - bank_balance)))

 

[결과 값] 885,399,084원 차이로 아파트 투자가 맞습니다.

 

 

# [실습] 피보나치 수열(Fibonacci Sequence) 구하기
# 피보나치 수열의 첫 50개 항을 차례대로 출력하는 프로그램을 작성해 봅시다.
# 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 피보나치 수열은 "직전의 수"와 "현재의 수"를 더한 값이 다음의 수가 되는 것이므로, 단순하게 생각했을 때, previous + current 정도로 구할 수 있을 것 같네요.

i = 1
previous = 0
current = 1

while i <= 50:
   print(current)                       
   temp = previous                 

# previous를 임시 보관소 temp에 저장합니다. 이유는 아래에 설명
   previous = current

# preivous=current가 되기에, temp가 없었다면 previous + current가 아닌 current + current가 될 뻔 했군요.
   current = current + temp

   i += 1

 

 

# 중첩 while 문

# [실습] 구구단 만들기

i = 1
while i <= 9:                                 # i가 1단 부터 9단까지
   j = 1                                     
   while j <= 9:                              # j는 x1~x9 까지
      print("{} * {} = {}".format(i, j, i * j))
      j += 1                                   # j가 x9가 되면 빠져나감
   i += 1                                      # i가 9단이 될 때까지 1단씩 더함

 

 

# break문
# while문의 조건과 상관 없이, 반복문에서 빠져나오고 싶다면, break문을 사용

I = 100

while True:
   if I % 23 == 0:            # i가 23의 배수면 반복문을 끝냄
      break
   I = I + 1

print(I)

 

'IT > 파이썬' 카테고리의 다른 글

내가 보려고 만든 파이썬 기초함수_01  (0) 2022.03.13

댓글