날짜를 입력하면 다음 날짜가 출력되도록 하고 싶다
예를 들어
month= 3
day= 31
=>
출력
4
1
month = int(input("월(month) 를 숫자로 입력해주세요: "))
day = int(input("일(day) 를 숫자로 입력해주세요: "))
if month == 1 or 3 or 5 or 7 or 8 or 10 or 12 :
if day == 31 :
print(month+1);
print(1);
elif day >= 1 and day <=30 :
print(month);
print(day+1);
elif month == 4 or 6 or 9 or 11 :
if (day == 30) :
print('======')
print(month+1);
print(1);
elif (day >= 1 and day <=29) :
print('=====')
print(month);
print(day+1);
그래서 위와같이 코드를 짜고 있던 중 코드를 돌려보니 month 에 4를 입력해주어도 첫번째 if 에서 코드가 실행되어서
입력
month = 4
day = 30
=>
출력
month = 4
day = 31
이 출력되는거 아닌가
Python의 문법들이 자연어처럼 보이고 그렇게 작동 하는 경우들이 많지만 해당 or 의 구문은
if month == 1 or 3 or 5 :
print('True')
else :
print('False')
에서 'month' 는 '같다' '1' ,'3', '5'
이 같다 라는 동사에 1, 3, 5가 전부 걸리는 것처럼 보이지만
파이썬 인터프리터는 해당 코드를 있는 그대로 받아들여서
if (month == 1) or (3) or (5) :
이런식으로 코드를 읽는다
따라서 내가 month 에 4를 입력하는 순간
if (false) or (3) or (5)
이런식으로 치환돼고 내가 4를 입력했기 때문에
첫번째 조건 값 다음의 조건값인 3에 걸려서
if (3) :
print('True')
else :
print('False')
위와같이 작동하게 되는것이다
따라서 if (3)은 true값을 지니기 때문에
'True' 를 출력하게 되는것이다.
if (month == 1) or (month == 3) or (month == 5) :
if month in (1, 3, 5):