python 4장. 조건문, 비교/논리 연산자

Hyuna·2024년 7월 14일

Python 기본

목록 보기
4/17
post-thumbnail

오늘은 조건문 비교/논리 연산자에 대해 공부했다
조건문 완전 재밌어!


조건문은 왜 쓸까?
프로그램문을 작성하다 보면 여러 선택지 중 한가지를 결정해서 실행하는 경우가 많다


1. 조건문 if()

  • if 조건 표현식:
    <코드블록>

  • 코드블록은 들여쓰기 필수
    4칸 띄워쓰거나 탭(tab) 사용
    한가지 방법으로만 쓰는것이 좋음



  • 중첩 조건문
    elif 또는 else if / else



2. 비교/논리 연산자

  • 우선순위는 산술>비교>논리
  • 항상 왼쪽에서 오른쪽으로 읽는다
  • 비교 연산자 종류
연산자설명예제
==값이 같은지 비교a == b
!=값이 다른지 비교a != b
>왼쪽 값이 오른쪽 값보다 큼a > b
<왼쪽 값이 오른쪽 값보다 작음a < b
>=왼쪽 값이 오른쪽 값보다 크거나 같음a >= b
<=왼쪽 값이 오른쪽 값보다 작거나 같음a <= b
  • 논리 연산자 종류
연산자설명예제
and모든 조건이 참이어야 참a and b
or조건 중 하나만 참이면 참a or b
not조건의 반대를 반환not a

📍 단락평가 📍
논리 연산식에서 결과를 빨리 평가하기 위해 조건 일부만 검사
오류예방 코드를 왼쪽에 놓으면 실행 중 발생할 수 있는 오류 방지
and 연산에서 왼쪽이 False면 전체 논리 연산 결과도 False
or 연산에서 왼쪽이 True면 전체 논리 연산 결과도 True



💡 두 개의 문자열을 입력받아 두 문자열이 같거나 그 길이가 같은지 판별해보자

>> len() 명령어 활용

a = input("첫번째 문자열을 입력하세요: ")
b = input("두번째 문자열을 입력하세요: ")

if (a == b) and len(a) == len(b):
  print("두 문자열은 같은 문자열이고", end=" ")
  print("두 문자열의 길이가 같습니다")

elif (a != b) and len(a) == len(b):
  print("두 문자열은 같지 않고", end=" ") 
  print("두 문자열의 길이가 같지 않습니다")
else:
  print("두 문자열은 완전히 다릅니다")


💡 두 숫자를 입력받아 첫번째 숫자가 두번째 숫자의 배수인지 여부와 두 숫자 합이 100이상인지 판별해보자

num1= int(input("첫번째 숫자를 입력하세요: "))
num2= int(input("두번째 숫자를 입력하세요: "))

if num1 % num2 == 0 and (num1 + num2) >= 100 :
  print(f"{num1}{num2}는 배수 관계이고," , end=" ")
else:
  print(f"{num1}{num2}는 배수 관계가 아니고," , end=" ")

if (num1 + num2) >= 100 :
  print("두 수의 합은 100 이상입니다")
else:
  print("두 수의 합은 100 미만입니다")


💡 구매 금액이 100,000원 이상이면 10% 할인, 50000원 이상이면 5% 할인

>> 그 외는 할인이 적용되지 않게 해보자
buying = float(input("구매 금액을 입력하세요:"))

if buying >= 100000 :
  print(f"할인된 가격은 {buying * 0.9 : .2f}원 입니다 ")
elif buying >= 50000 :
  print(f"할인된 가격은 {buying * 0.95 : .2f}원 입니다 ")
else:
  pass


💡 나이와 성별을 입력받아 특정 활동을 추천하는 코드를 작성해보자

>> 20세 이상 남성에게는 "헬스장", 20세 이상 여성에게는 "요가"
>> 20세 미만에게는 "공부"를 추천
 ch = input("성별을 입력하세요: ")
year = int(input("나이를 입력하세요:"))

if year >= 20 :
   if ch == "남자":
       print("헬스장을 추천합니다")
   elif ch == "여자":
       print("요가를 추천합니다")
else :
   print("공부를 추천합니다")



💡 년/월/일을 정수값으로 입력 받고 적절한 날짜인지 확인해서 출력하자

>> 윤년은 고려하지 않고2월 28일까지만 있다고 가정
year = int(input("년을 입력하세요: "))
month = int(input("월을 입력하세요: "))
day = int(input("일을 입력하세요: "))


if month < 1 or month > 12:
  print("유효하지 않은 날짜입니다")
else:
 if month == 2 and 1 <= day <= 28:
     print(f"{year}{month}{day}일은 유효한 날짜입니다")
 elif month == ( 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12) and  (1 <= day <= 31):
         print(f"{year}{month}{day}일은 유효한 날짜입니다")
 elif month == (4 or month == 6 or month == 9 or month == 11) and (1 <= day <= 30) :
         print(f"{year}{month}{day}일은 유효한 날짜입니다")
 else:
     print("유효하지 않은 날짜입니다")

📌 큰 가지인 month 부터 유효한지 확인하고 day 유효한지 확인



💡 연도와 월이 주어졌을 때 해당 날짜가 실제로 존재하는지 파악해보자

>> 편의를 위해 날짜는 따지지 않으며 연도는 0보다 큰 경우 정상
year = int(input("연도를 입력하세요: "))

if year <= 0 :
     print("유효하지 않은 연도 또는 월입니다.")
else:
    month = int(input("월을 입력하세요: "))
    
    if year > 0 and 1 <= month <= 12:
        print(f"{year}{month}월은 유효한 날짜입니다.")
    
    
    else:
        print("유효하지 않은 연도 또는 월입니다.")
  



💡 1부터 99까지 정수 중 난수로 3개의 정수를 생성해서 가장 큰 정수를 출력해보자

>> random.randitnt( , ) 사용
  import random
a1= random.randint(1 , 99)
a2= random.randint(1 , 99)
a3= random.randint(1 , 99)

print(" 난수 3개는: ", a1, a2, a3)

if a1 > a2 :
    max_n = a1
else:
    max_n = a2

if max_n > a3 :
    print(f"가장 큰 수는 {max_n} 입니다")
else :
    max_n = a3
    print(f"가장 큰 수는 {max_n} 입니다")



💡 4개의 정수를 입력받아 가장 작은 수를 출력해보자

import random
a1 = random.randint(1, 100)
a2 = random.randint(1, 100)
a3 = random.randint(1, 100)
a4 = random.randint(1, 100)
print(a1, a2, a3, a4)
if a1 < a2 :
  min_n1 = a1
else :
  min_n1 = a2

if a3 < a4 :
  min_n2 = a3
else :
  min_n2 = a4
  
if min_n1 < min_n2 :
  print(f" 가장 작은 수는 {min_n1}")
else :
  print(f"가장 작은 수는 {min_n2}")

0개의 댓글