Python - Testing set of conditions

GyungHo Go·2020년 4월 23일
0
post-thumbnail

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

and, or, not

조건을 판단하기 위해 사용하는 다른 연산자로는 and, or, not이 있다. 각각의 연산자는 다음처럼 동작한다.

  • x or y
    x와 y 둘중에 하나만 참이어도 참이다
  • x and y
    x와 y 모두 참이어야 참이다
  • not x
    x가 거짓이면 참이다

or

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

"돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어 가라."

money = 2500
card = True

if money >= 3000 or card:
	print("택시를 타고 가라!")
else:
	print("걸어가...")

결과 -- "택시를 타고 가라!"

and

외모가 준수하고, 노래를 잘하고, 춤을 잘춘다.

if appearance == "준수" and good_singer == True and dance == "Good":
    print("훌륭한 아이돌이 될 수 있는 가능성이 높습니다!")

and 구문을 사용할 때 염두해야 할 점은 and 구문을 사용하여 테스트 하는 모든 조이 True 일때만 if 구문의 코드가 실행이 된다는 점이다. 조건문들 중 하나라도 False 이면 실행이 안된다.

and 와 or

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

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

Assignment

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

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

4
1

hint
경우를 생각해보자.

  • 마지막 일이 31일인 달, 30일인 달
  • 2월 은 28일 까지 있는 경우
month = int(input())
day = int(input())

if day==31:  #day가 30일이 아닌 31일인 경우로 잡아보자.
  print(month+1)
  print(1)
elif day==28 and month==2:  #day가 28일로 끝나는 2월의 경우
 print(3)
 print(1)
else:  #나머지는 그대로 
  print(month)
  print(day+1) 

테스트 통과는 되지만... 결과적으로 오류가 생길수밖에 없는 코딩....
day가 30일인 경우에는 이 코딩은 오류가 발생한다..
빠밤!

profile
기록하는 습관

0개의 댓글