Language/Python

[Section3] 흐름 제어와 논리 연산자

HeeWorld 2025. 1. 10. 15:37

[udemy] Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복을 통해 학습하고 있습니다.

 

if / else 구문

- 특정 조건에 따라 A 또는 B를 수행함.

- if와 테스트 조건이 있고, 참일 때 실행될 액션과 참이 아닐 때 (else) 실행할 액션을 작성함.

if condition:
	do this
else:
	do this

 

* 아이의 키를 받아 롤러코스터를 탈 수 있는지 없는지에 대하여 출력하기!

print("Welcome to the rollercoaster!")
height = int(input("What is your height in cm? "))

if height >= 120:
    print("You can ride the rollercoaster!")
else:
    print("Sorry you have to grow taller before you can ride.")

 

→ 입력된 키가 120이거나 120보다 크다면 롤러코스터를 탈 수 있고 120미만인 경우에는 탈수 없다는 문구를 출력함.

 

비교 연산자

- 특정 숫자나 값을 비교할 때 사용할 수 있음.

Operator Meaning
> 크다 (Greater than)
< 작다 (Less than)
>= 크거나 같다 (Greater than or equal to)
<= 작거나 같다 (Less than or equal to)
== 같다 (Equal to)
!= 같지 않다 (Not equal to)

 

※ 주의: =를 사용하면 오른쪽의 값을 왼쪽의 변수에 할당(Assignment)하는 것을 의미하고,

            ==를 사용하면 왼쪽의 값과 오른쪽의 값이 같은지 확인(Check Equality)하는 것을 의미함.

 

모듈 연산자

- %는 이진 연산자로 나머지 값을 출력 ex) 10%3 = 1, 10%5 = 0

 

 

 Qusetion

Q1. Check Odd or Even

Write some code using what you have learnt about the modulo operator and conditional checks in Python to check if the number in he input area is odd or even. If it's odd print out the word "Odd" otherwise printout "Even".

num = int(input("Please enter the desired number: "))

if num % 2 == 0:
    print("Even")
else:
    print("Odd")

 

→ num으로 숫자를 입력 받고, 2와 나누었을 때 나머지가 0이면 "Even(짝수)"를 출력하고 0이 아닌 경우 "Odd(홀수)"를 출력함.

 

중첩 if문과 elif문

- if문 안에 또 다른 if문과 else문을 사용할 수 있음.

- 하위 if문을 실행하기 위해서는 상위 if문이 참이어야하고, 하위 if문도 참이어야 함.

if condition:
  if another confition:
    	do this
  else:
    	do this
else:
  do this

 

print("Welcome to the rollercoaster!")
height = int(input("What is your height in cm? "))

if height >= 120:
    print("You can ride the rollercoaster")
    age = int(input("What is your age? "))
    if age <= 18:
        print("Please pay $7.")
    else:
        print("Please pay $12.")
else:
    print("Sorry you have to grow taller before you can ride.")

 

- if문에 원하는 만큼 elif 조건을 추가할 수 있음.

- 조건1이 참이면 A를 수행하고, 참이 아니면 조건2를 확인하여 참이면 B를 수행하고, 조건들이 모두 참이 아니면 else를 실행함.

if condition1:
  do A
elif condition2:
  do B
else:
  do this

 

print("Welcome to the rollercoaster!")
height = int(input("What is your height in cm? "))

if height >= 120:
    print("You can ride the rollercoaster")
    age = int(input("What is your age? "))
    if age <= 12:
        print("Please pay $7.")
    elif age <= 18:
        print("Please pay $10.")
    else:
        print("Please pay $12.")
else:
    print("Sorry you have to grow taller before you can ride.")

 

→ 롤러코스터를 타기 위해서는 120cm 이상이어야하고, 120cm 이상일 때 나이에 따라 지불하는 금액이 달라지는 코드.

 

 

실습1: 해설이 포함된 BMI 계산기

BMI 계산기에 if/elif/else 문을 추가하여 계산된 BMI 값들을 해석하도록 만드세요.

만약 bmi가 18.5 미만이면 "underweight"이라고 출력하세요.

만약 bmi가 18.5 이상 25 미만이면 "normal weight"이라고 출력하세요.

만약 bmi가 25 이상이면 "overweight"이라고 출력하세요.

# Default
weight = 85
height = 1.85

bmi = weight / (height ** 2)

# Write your code here.

if bmi < 18.5:
    print("underweight")
elif bmi < 25:
    print("normal weight")
else:
    print("overweight")

 

 

다중 연속 if문

- 조건이 참이라도, 여러 조건을 확인해야 할 때 사용

ex) 롤러코스터 탑승 후 촬영된 사진을 함께 출력을 원한다면? 원한다면 티켓 가격에 +$3가 추가 됨.

print("Welcome to the rollercoaster!")
height = int(input("What is your height in cm? "))
bill = 0

if height >= 120:
    print("You can ride the rollercoaster")
    age = int(input("What is your age? "))
    if age <= 12:
        bill = 5
        print("Child tickets are $5.")
    elif age <= 18:
        bill = 7
        print("Youth tickets are $7.")
    else:
        bill = 12
        print("Adult tickets are $12.")

    photo = input("Do you want to have a photo take? (Type Y for Yes and N for No.) ")
    if photo == "Y":
        # Add $3 to their bill
        bill += 3
    print(f"Your final bill is {bill}.")
else:
    print("Sorry you have to grow taller before you can ride.")

Flow chart

 

 

실습2: 피자 주문

Congratulations, you've got a job at Python Pizza! Your first job is to build an automatic pizza order program.
Based on a user's order, work out their final bill. Use the input() function to get a user's preferences and then add up the total for their order and tell them how much they have to pay.

- Small pizza (S): $15
- Medium pizza (M): $20
- Large pizza (L): $25

- Add pepperoni for small pizza (Y or N): +$2
- Add pepperoni for medium or large pizza (Y or N): +$3
- Add extra cheese for any size pizza (Y or N): +$1

# Example Interaction

Welcome to Python Pizza Deliveries!
What size pizza do you want? S, M or L: L
Do you want pepperoni on your pizza? Y or N: Y
Do you want extra cheese? Y or N: N
Your final bill is: $28.

 

print("Welcome to Python Pizza Deliveries!")
size = input("What size pizza do you want? S, M or L: ")
pepperoni = input("Do you want pepperoni on your pizza? Y or N: ")
extra_cheese = input("Do you want extra cheese? Y or N: ")
bill = 0

if size == "S":
    bill += 15
    if pepperoni == "Y":
        bill += 2
    if extra_cheese == "Y":
        bill += 1
    else:
        bill += 0
elif size == "M":
    bill += 20
    if pepperoni == "Y":
        bill += 3
    if extra_cheese == "Y":
        bill += 1
    else:
        bill += 0
else:
    bill += 25
    if pepperoni == "Y":
        bill += 3
    if extra_cheese == "Y":
        bill += 1
    else:
        bill += 0
print(f"Your final bill is: ${bill}.")

 

✓ 나는 S,M,L 외에 type은 생각 안했는데 해설을 보다보니, 잘못 입력 했을 때도 고려해야 하는 것을 깨달음.

    아래 코드는 강의에서 강사님이 만드신 코드, 아래처럼 깔끔하게 할 수 있음도 알게 됨.

print("Welcome to Python Pizza Deliveries!")
size = input("What size pizza do you want? S, M or L: ")
pepperoni = input("Do you want pepperoni on your pizza? Y or N: ")
extra_cheese = input("Do you want extra cheese? Y or N: ")
bill = 0

if size == "S":
    bill += 15
elif size == "M":
    bill += 20
elif size == "L":
    bill += 25
else:
    print("You typed the wrong inputs.")

if pepperoni == "Y":
    if size == "s":
        bill += 2
    else:
        bill += 3

if extra_cheese == "Y":
    bill += 1

print(f"Your final bill is: ${bill}.")

 

 

논리 연산자

- 여러 조건을 결합하여 코드를 만들고 싶을 때 and, or, not 연산자를 사용할 수 있음.

- and는 A and B 둘 중 하나라도 false이면 결과가 false, 둘 다 true야 결과가 ture.

- or은 A or B 두 중 하나만 true이면 결과가 true, 둘다 false이어야 결과가 false.

- not은 기본적으로 조건을 반대로 출력하여, 조건이 false이면 true, 조건이 true이면 false.

 

 

 Qusetion

Q1. Age 45 to 55 Modifier
Update the code so that people age 45 to 55 (inclusive of both ages) ride for free. Use logical operators to check that the age is greater than 45, and it's also less than 55.

print("Welcome to the rollercoaster!")
height = int(input("What is your height in cm? "))
bill = 0

if height >= 120:
    print("You can ride the rollercoaster!")
    age = int(input("What is your age? "))
    if age < 12:
        bill = 5
        print("Child tickets are $5.")
    elif age <= 18:
        bill = 7
        print("Youth tickets are $7.")
    elif age >= 45 and age <= 55:
        print("Everything is going to be ok. Have a free ride on us!")
    else:
        bill = 12
        print("Adult tickets are $12.")

    wants_photo = input("Do you want a photo taken? Y or N. ")
    if wants_photo == "Y":
        bill += 3

    print(f"Your final bill is ${bill}")

else:
    print("Sorry, you have to grow taller before you can ride.")

 

→ elif를 추가하여 45세 이상 55세 이하의 사람은 무료로 탈수 있음을 안내하는 코드를 추가함.

 

 

3일차 프로젝트

아래와 같이 보물섬 게임 만들기

 

Flow chart

 

Code

print(r'''
*******************************************************************************
          |                   |                  |                     |
 _________|________________.=""_;=.______________|_____________________|_______
|                   |  ,-"_,=""     `"=.|                  |
|___________________|__"=._o`"-._        `"=.______________|___________________
          |                `"=._o`"=._      _`"=._                     |
 _________|_____________________:=._o "=._."_.-="'"=.__________________|_______
|                   |    __.--" , ; `"=._o." ,-"""-._ ".   |
|___________________|_._"  ,. .` ` `` ,  `"-._"-._   ". '__|___________________
          |           |o`"=._` , "` `; .". ,  "-._"-._; ;              |
 _________|___________| ;`-.o`"=._; ." ` '`."\ ` . "-._ /_______________|_______
|                   | |o ;    `"-.o`"=._``  '` " ,__.--o;   |
|___________________|_| ;     (#) `-.o `"=.`_.--"_o.-; ;___|___________________
____/______/______/___|o;._    "      `".o|o_.--"    ;o;____/______/______/____
/______/______/______/_"=._o--._        ; | ;        ; ;/______/______/______/_
____/______/______/______/__"=._o--._   ;o|o;     _._;o;____/______/______/____
/______/______/______/______/____"=._o._; | ;_.--"o.--"_/______/______/______/_
____/______/______/______/______/_____"=.o|o_.--""___/______/______/______/____
/______/______/______/______/______/______/______/______/______/______/_____ /
*******************************************************************************
''')
print("Welcome to Treasure Island.")
print("Your mission is to find the treasure.")

q1 = input("You're at a cross road. Where do you want to go? \nType \"left\" or \"right\"\nEnter: " )

if q1 == "right":
    print("Fall into a hole.\n Game Over!")
elif q1 == "left":
    q2 = input("Do you want to Swim or Wait? \nEnter:")
    if q2 == "Swim":
        print("Attacked by trout. \n Game Over!")
    elif q2 == "Wait":
        q3 = input("Which door? \nRed or Blue or Yellow\nEnter:")
        if q3 == "Red":
            print("Burned by fire. \n Game Over!")
        if q3 == "Blue":(
            print("Eaten by beasts. \n Game Over!"))
        elif q3 == "Yellow":
            print("You Win!")
else:
    print("Game Over!")

 

 

p.s 흠흠 이렇게 각잡고 하니까 시간이 오래걸리네 ㅎㅎ 그래도 완전 재미있음!

'Language > Python' 카테고리의 다른 글

[Section6] 파이썬 함수와 카렐  (0) 2025.01.13
[Section5] 파이썬 반복문  (0) 2025.01.13
[Section4] 파이썬 리스트  (0) 2025.01.12
[Section2] 데이터 형식 이해 및 문자열  (0) 2025.01.09
[Section1] 파이썬 변수 사용  (0) 2025.01.08