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개의 문이 있는 집에 도착하여 빨간문, 노란문, 파란문을 선택할고 하는 출력문을 만듭니다.
  • 만약 빨간문을 선택했다면 보물을 찾았다며 당신이 이겼다는 출력문이 출력되고 게임이 종료됩니다.