[Python] Control Flow and Logical Operators
- -
흐름 제어와 논리 연산자
[if / else 및 조건 연산자를 통한 흐름 제어]
우리는 특정 조건에 따라 A 또는 B를 수행하게 된다.
이를 파이썬 코드로 작성하면 아래와 같이 나타난다.
if condition:
do this
else:
do this
코드에는 if라는 키워드와 우리가 검사할 조건이 있다.
조건 다음에는 콜론이 있고, 콜론 다음에는 if문이 True일 때 실행될 코드가 있다.
if문이 True가 아니면 else 블록으로 넘어간다.
else 블록은 if문이 거짓일 때 실행된다.
간단한 예시를 사용해서 이해해보자.
[예시]
우리가 욕조에 물을 가득 받았을 때, 넘치지 않는 이유는 무엇일까?
그것은 바로 공학적 설계인 오버플로 덕분이다.
물이 특정 높이를 넘어서면 물이 구멍으로 들어가기 때문에 물이 넘치지 않게 된다.
이 욕조 상황을 아래와 같은 코드로 표현할 수 있다.
water_level = 50
if water_level > 80:
print("Drain water")
else:
print("Continue")
배운 내용을 이용해서 실습을 해보자.
[실습]
Description
당신은 놀이공원 롤러코스터 티켓 박스를 만들려고 합니다.
롤러코스터를 타기 위해 티켓을 구매하려면 키가 120cm 이상이어야 합니다.
만일 구매자의 키가 120cm미만이라면 Can't ride를 출력하고,
120cm이상이면 Can ride를 출력하는 코드를 만드세요.
1. Welcome to the rollercoaster! 출력
2. What is your height in cm? 프롬프트 출력하고 사용자 키 입력 받기
3. 사용자가 입력한 키가 120이상인지 확인
4. 120이상이면 Can ride 120미만이라면 Can't ride 출력
[답]
a > b : a가 b보다 크다.
a < b : a가 b보다 작다.
a >= b : a가 b보다 크거나 같다
a <= b : a가 b보다 작거나 같다
비교 연산자 (Comparison Operators)
Operator Meaning
> Greater than
< Less than
>= Greater than or equal to
<= Less than or equal to
== Equal to
!= Not equal to
[Modulo Operator]
다른 수학 연산자, 조건 연산자와 유사하게 연산자는 특정 기능을 가진 프로그래밍의 기호이다.
% 이 기호는 어떤 역할을 할까?
퍼센트 기호처럼 보이지만 단순히 퍼센트 기호는 아니다.
% 기호는 숫자 사이에 위치한다. ex) 10 % 5
따라서 이진 연산자이며 나눗셈 후의 나머지를 계산한다.
10 % 3을 한다면 나머지가 얼마일까?
밑에서 확인해보자.
10을 3으로 나누면 나머지가 1이다. (10 % 3 = 1)
모듈로 연산자는 나눗셈을 한 후 나머지를 알려주기 때문이다.
[실습]
Description
입력 영역에 사용자가 입력한 숫자가 홀수인지 짝수인지 확인하는 코드를 작성해보자.
[답]
[중첩 if문과 elif문]
중첩 if문과 elif문(Nested if / else)
if confition:
if another conditoin:
do this
else:
do this
else:
do this
이렇게 작성하면 if문 안에 또 다른 if문과 else문을 가질 수 있다.
하위 if문을 실행하기 위해서는 상위 if문이 참이어야 하고 하위 if문도 참이어야 한다.하위 else문을 실행하려면 상위 if문은 참이어야 하지만 하위 if문은 거짓이어야 한다.
그래서 컴퓨터는 기본적으로 먼저 첫 번째 조건이라는 큰 그림을 보고else 블록으로 들어가야 할지,아니면 if문 안의 중첩 블록으로 들어가야 할지를 결정한다.
if / elif / else
if confition1:
do A
elif confition2:
do B
else:
do this
[실습 1]
위에서 만든 롤러코스터 코드에 나이를 묻고 18세보다 나이가 많다면 12달러, 12 ~ 18세 이하라면 7달러를,12세미만이면 5달러를 지불하게 하는 코드를 작성해보자.
[실습 2]
Description
BMI 계산기에 if/elif/else문을 추가하여 계산된 BMI 값들을 해석하도록 만들자.
만약 BMI가 18.5미만이면 "underweight"라고 출력한다.
BMI가 18.5 이상 25미만이라면 "normalweight"라고 출력한다.
BMI가 25이상이면 "overweight"라고 출력한다.
[답]
weight = 85
height = 1.85
bmi = weight / (height ** 2)
if bmi < 18.5:
print("under weight")
elif bmi < 25:
print("normal weight")
else:
print("over weight")
[다중 연속 if문]
다중 연속 if문(Muliple if)
if condition1:
do A
if condition2:
do B
if condition3:
do C
if / elif / else 조건문에서는 A, B 또는 C 중 하나만 수행됐다.
하지만 다중 연속 if문에서는 A, B, C를 모두 검사한다.
세 가지 조건이 모두 참일 때 A, B, C가 모두 실행된다.
[실습 1]
위에서 계~속 우려먹는 롤러코스터 코드에 또 추가를 해보자.
이번에는 키, 나이를 확인하고 마지막에 사진을 찍고 싶으면 추가로 3달러를 지불하고 청구서를,
사진을 찍지 않는 선택지를 고르면 3달러를 포함하지 않은 청구서를 제공하는 코드를 만들어보자.
[답]
[실습 2]
Description
Based on a user's order, work out their final bill.
Use the input() funciton to get a user's preference 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 peppernoi 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
지금까지 배운 것을 이용해 파이썬 피자 배달 프로그램을 만들어보자.
1. Welcome to Python Pizza Deliveries! 출력
2. What size pizza do you want? S, M or L: 프롬프트 출력 후, 사용자 값 입력받기
3. Do you want pepperoni on your pizza? Y or N: 프롬프트 출력 후, 사용자 값 입력받기
4. Do you want extra cheese? Y or N: 프롬프트 출력 후, 사용자 값 입력받기
5. 최종 청구서 출력하기
[답]
[논리 연산자]
논리 연산자 (Logical Operators)
A and B : A와 B가 모두 참일 때만 True (하나라도 거짓이면 false)
C or D : C 또는 D가 참일 때 (C와 D 중 하나라도 참이면 True)
not E : E가 아닐 때 (E가 아니라면 True)
[실습]
또~ 다시 롤러코스터 코드에 추가로 작성해보겠다.
위키피디아에 따르면 중년의 위기는 45 ~ 55세에 온다고 한다.
중년의 위기를 맞은 중년들에게는 롤러코스터를 무료로 태워주자.
'Programming > Python' 카테고리의 다른 글
| [Python] Python Functions & Karel (0) | 2024.12.01 |
|---|---|
| [Python] Python Loops (0) | 2024.12.01 |
| [Python] Randomisation and Python Lists (0) | 2024.12.01 |
| [Python] Understanding Data Types and How to Manipulate Strings (0) | 2024.11.28 |
| [Python] Working with Variables in Python to Manage Data (0) | 2024.11.28 |
소중한 공감 감사합니다