Python Study
Python Study(조건문/중첩 조건문/논리 연산자)
Box Maker
2023. 1. 26. 19:58
1. if / else 조건문
- 파이썬에서 if문은 "만약에"에 대한 처리를 파이썬에서는 if 조건문을 이용해서 처리를 합니다.
- 파이썬 문법을 이용하여 if 를 만들면 다음과 같이 됩니다.
if 배가 고프면:
밥을 먹는다.
else:
음료를 마신다.
if -> 만약에
else -> 만약에 그렇지 않으면
- 자세히 보면 if와 else 문자의 끝에 콜론(:)이 있습니다.
- 이것은 쉽게 말하면 파이썬에서 조건이 참이면 "다음 문구를 실행합니다." 라는 것을 알려주는 것입니다.
- 그리고 그 다음줄에는 위의 if, else 문 다음 문장은 한단계 들여쓰기 하여서 문법을 작성합니다.
- 그 이유는 파이썬 문법으로 위에 있는 if, else 에 포함된 문장이라는 것을 인식하게됩니다.
- 파이썬에서는 들여쓰기를 잘못해도 문법오류가 발생해 프로그램 실행이 안될 수 있습니다.
1) 실습예제
Exercise)
number = int(input("Which number do you want to check? "))
위의 코드는 수정하지 않고 코드를 추가하여 입력받은 정수를 홀수인지 짝수인지 알려주는 프로그램을 만드세요
Solution)
number = int(input("Which number do you want to check? "))
if (number % 2 == 0):
print("This is an even number")
else:
print("This is an odd number")
- 이번문제는 생각보다 간단합니다 짝수는 2로 나누었을때 나누어 떨어지므로 나머지가 0이고 홀수는 나머지가 1이 남기 떄문에 이 논리를 이용하면 쉽게 풀립니다
- 나머지를 구하는 연산자인 % 연산자를 사용해 2로 나누었을때 나머지가 0이면 짝수이고
- 그 외에는 홀수다 라는 출력문을 출력하면 됩니다.
2. 중첩 if / elif
1) 중첩 if
- 중첩 if문은 간단히 말해 if문 안에 또다른 if문을 삽입하는 것입니다.
- 중첩 if문은 횟수 제한없이 무한으로 계속 넣을 수 있습니다.
- 중첩 if문을 예시로 만들면 다음과 같습니다.
x = 10
if x >= 8:
print("8이상입니다.")
if x == 10
print("10입니다")
if x == 15
print("15입니다")
2) elif
- elif는 else if라는 뜻으로 if문 없이 독단적으로 사용할 수 없습니다.
- elif는 위의 if문의 조건이 거짓일때 실행되는 조건문입니다.
1-1 실습예제
Exercise)
height = float(input("enter your height in m: "))
weight = float(input("enter your weight in kg: "))
저번에 만들었던 BMI 계산기입니다. 이번엔 더 업그레이드하여 계산된 BMI수치에 따라 저체중, 적정체중, 과체중, 비만으로 분류해서 알려주는 프로그램을 만드세요
Solution)
height = float(input("enter your height in m: "))
weight = float(input("enter your weight in kg: "))
BMI = round(weight / (height * height), 1)
if BMI < 18.5:
print("Your BMI is" + str(BMI) + ", you are underweight")
elif BMI < 25:
print("Your BMI is" + str(BMI) + ", you have a normal weight.")
elif BMI < 30:
print("Your BMI is" + str(BMI) + ", you are slightly overweight.")
elif BMI < 35:
print("Your BMI is" + str(BMI) + ", you are obese.")
else:
print("Your BMI is" + str(BMI) + ", you are clinically obese.")
- 먼저 저번과 똑같이 BMI를 계산해주는 수식을 만들어 변수에 저장해줍니다.
- 저장된 변수의 값에 따라 조건문을 이용해 체중수준을 알려줍니다.
- 처음은 if문을 이용해 BMI가 18.5미만이면 저체중이라고 출력합니다.
- 다음은 elif문을 이용해 위 if문의 조건이 거짓일때 다음 elif문을 실행합니다.
- 위와같은 방식으로 조건을 설정하여 마지막에는 위 조건들이 다 거짓일 경우 비만이라고 출력합니다.
1-2 실습예제
Exercise)
year = int(input("Which year do you want to check? "))
위의 코드는 수정하지 않고 코드를 추가하여 년도를 입력받으면 해당 년도가 윤년인지 알려주는 프로그램을 만드세요
* 윤년 계산법은 다음과 같습니다.
1. 해당 년도를 4로 나누어떨어질때 즉 나머지가 0이여야 하고
2. 해당 년도를 100으로 나누었을때 나머지가 0이 아니면 윤년입니다. 하지만 나머지가 0이여도 윤년인 다른 조건이 있습니다.
3. 해당 년도를 100으로 나누었을 때 나머지가 0이 아니여도 400으로 나누었을 때 나머지가 0이면 윤년입니다.
Solution)
year = int(input("Which year do you want to check? "))
if year % 4 == 0:
if year % 100 != 0:
print("Leap year")
elif year % 400 == 0:
print("Leap year")
else:
print("Not leap year")
else:
print("Not leap year")
- 처음은 if문으로 4로 나누었을 때 나머지가 0인지 확인하는 조건문을 만듭니다.
- 참일경우 아래 if문으로 내려가 100으로 나누었을 때 나머지가 0이 아닌지 확인하는 조건문을 만듭니다.
- 위 두조건이 모두 참일 경우 윤년이라는 출력문이 출력됩니다.
- 만약 100으로 나누었을 때 나머지가 0이면 거짓이므로 다음 elif문으로 넘어갑니다.
- 400으로 나누었을 때 나머지가 0인지 확인하는 조건문을 만듭니다.
- 위 3개의 조건은 4로 나누어지고 100으로 안나누어져도 400으로 나누어지면 윤년이라는 출력문이 출력되는 조건들이 만들어집니다.
- 400으로 나누었을 때 나머지가 0이 아니면 거짓이므로 밑에 else문이 실행되어 윤년이 아니라는 출력문이 출력됩니다.
- 마지막 else문은 처음 조건이 거짓이면 바로 맨 밑으로 내려가 윤년이 아니라는 출력문이 출력됩니다.
3. 논리 연산자
- 논리연산은 '둘중 하나가 참이면 참이다', '둘다 참(true) 이면 이 조건문은 참(true)이다' 처럼.
조건문이 참(True)인지 거짓(False)인지 판단하는 것을 의미합니다. - 논리 연산자의 종류에는 다음과 같습니다
and
or
not
1) and, or, not
1-1 A and B
- 조건 A 와 조건 B가 모두 참이면 참(True)을 반환합니다.
- 조건 A 나 조건 B 중 둘 중 하나라도 거짓이면 거짓(False)를 반환합니다.
- 당연히 조건 A, B가 둘다 거짓이면 거짓(False)를 반환합니다.
1-2 A or B
- or 연산은 조건 A, B 둘중 하나라도 True 이면 True가 나오게 됩니다.
- 둘다 False가 인 경우에만 False 이고, 조건중 하나라도 True 이면 True 입니다.
1-3 not A
- not 조건은 조건을 반대로 해석하면 됩니다.
- A가 거짓이라면 참(True)를 반환하고 A가 참이라면 거짓(False)를 반환합니다.
4. 보물찾기 게임
Exercise)
print('''
*******************************************************************************
| | | |
_________|________________.=""_;=.______________|_____________________|_______
| | ,-"_,="" `"=.| |
|___________________|__"=._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.")
위 코드는 수정하지 않고 코드를 추가하여 조건문들을 이용해 사용자의 선택에 따라 엔딩이 달라지는 게임을 만드세요
Solution)
print('''
*******************************************************************************
| | | |
_________|________________.=""_;=.______________|_____________________|_______
| | ,-"_,="" `"=.| |
|___________________|__"=._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.")
direction = input("Where do you want to go? Type 'left' or 'right'\n")
if direction == "left":
print("You eaten by a dragon. Game Over")
elif direction == "right":
act = input(
"You've come to a lake. There is an island in the middle of the lake. Type 'wait' to wait for a boat. Type 'swim' to swim across.\n"
)
if act == "wait":
print("You starved to death")
elif act == "swim":
color = input(
"You arrive at the island unharmed. There is a house with 3 doors. One 'red', one 'yellow' and one 'blue'. Which colour do you choose?\n"
)
if color == "red":
print("You found the treasure! You Win!")
elif color == "yellow":
print("You enter a room of beasts. Game Over.")
else:
print("You get attacked by an angry trout. Game Over.")
- 처음은 방향을 입력받아 왼쪽 오른쪽에 따른 게임결과를 조건문으로 만듭니다.
- 저는 오른쪽을 선택했을 때 게임이 계속 진행되도록 만들었습니다.
- 다음은 강가에 도착했다며 기다릴것인지 수영할것인지 선택하라고 하는 출력문을 만듭니다.
- 저는 수영을 선택했을 때 게임이 계속 진행되도록 만들었습니다.
- 다음은 3개의 문이 있는 집에 도착하여 빨간문, 노란문, 파란문을 선택할고 하는 출력문을 만듭니다.
- 만약 빨간문을 선택했다면 보물을 찾았다며 당신이 이겼다는 출력문이 출력되고 게임이 종료됩니다.