<python> and, or연산자를 이용한 if문

jm_yoon·2020년 12월 17일
1

replit

목록 보기
2/5

단순 if문은 한가지의 조건문만 테스트하는 간단한 구조지만 실제로는 여러가지 조건문들을 테스트 해야하는 복잡한 케이스들이 많다.

여러가지 조건문들을 테스트하기 위해 and, or연산자를 사용한다.

and 연산자

and를 이용해 if문 코드가 실행되기 위해서는 and 구문을 사용하여 테스트하는 모든 조건문이 True이여야 한다.
하나라도 False일 경우 코드가 실행되지 않는다.

or 연산자

and의 반대의 경우에 해당, 테스트 하는 조건들 중 하나만 True여도 if문 코드가 실행된다.

and, or

and, or을 같이 사용할 수도 있다.
예를들어, 어떤 은행의 전세대출 우대자 조건은 "30대 미만의 성인 청년 이거나 1년 수입이 1억 미만인 신혼 기혼자"일 경우 다음과 같이 파이썬으로 표현 할 수 있다.

if (age > 19 and age < 30) or (married == True and income < 100000000):
    print("전세대출 우대자 이십니다")

and와 or이 너무 많아 어떤것을 테스트 하는지 명확하지 않기때문에 ()괄호를 사용하는 것이 좋다.

Assignment

월(month)와 일(day), 이 2가지를 input 값으로 받았을때, 2019년의 해당 월과 일의 다음 날의 월과 일을 출력해주세요.

예를 들어, month 는 3이고 일은 31이면 2019년 3월 31일의 다음날은 4월 1일 임으로 다음과 같이 출력이 되면 됩니다 (월 과 일을 각각 다른 줄에 출력 해주세요).

우선 마지막 날이 30일과 31일인 달을 생간한다.
30일 (4월, 6월, 9월, 11월)
31일 (1월, 3월, 5월, 7월, 8월, 10월, 12월)
그 외 2월

month = int(input("월(month) 를 숫자로 입력해주세요: "))
day = int(input("일(day) 를 숫자로 입력해주세요: "))

#12월을 제외하고 날짜가 31일경우 다음날 시작
if day == 31 and month != 12: 
  print(month+1)
  print(1)
  
#12월31일 다음날은 1월1일이기 때문에
elif day == 31 and month == 12:
  print(1)
  print(1)

#month에 꼭 괄호 쳐줄것! 안했더니..6월5일 입력시 7월 1일 나옴,,, 
elif day == 30 and (month == 4 or month == 6 or month == 9 or month == 11):
  print(month+1)
  print(1)

#2월은 마지막날이 28일이니깐..
elif day == 28 and month == 2:
  print(month+1)
  print(1)

#나머지는 날짜만 +1해주기
elif day != 30 or 31:
  print(month)
  print(day+1)

결과

월(month) 를 숫자로 입력해주세요: 6
일(day) 를 숫자로 입력해주세요: 30
7
1

월(month) 를 숫자로 입력해주세요: 11
일(day) 를 숫자로 입력해주세요: 30
12
1
profile
Hello!

0개의 댓글