поиск NEXT Day с использованием python условных выражений - PullRequest
0 голосов
/ 11 июля 2020

Я запускаю следующий код, чтобы получить следующий день в формате год / месяц / день по условию, но один дает желаемый результат, но с небольшим изменением кода - нет. Я использовал високосные и невисокосные годы во вложенных if, где это было необходимо.

Вот код, который выдает результат:

y=int(input('Enter a year:'))
d=int(input('Enter a day:'))
m=int(input('Enter a month:'))
print('Present Day= '+str(y)+':'+str(m)+':'+str(d))
if m==2:
    if ((y%4==0 and y%100!=0) or y%400==0) and d<29:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif (y%100==0 and y%400!=0) and d<28:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif ((y%4==0 and y%100!=0) or y%400==0) and d==29:
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
    elif d==28:
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
elif m==1 or m==3 or m==5 or m==7 or m==8 or m==10:
    if d<31:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif d==31:
        print('Next Day= '+str(y)+':'+str(m+1)+':'+str(1))
elif m==4 or m==6 or m==9 or m==11:
    if d<30:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif d==30:
        print('Next Day= '+str(y)+':'+str(m+1)+':'+str(1))
elif m==12 and d==31:
    print('Next Day= '+str(y+1)+':'+str(1)+':'+str(1))

Вот код, который не дает вывода if строка 12 заменяется на это:

    elif (y%100==0 and y%400!=0) and d==28:               
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
  

Может ли кто-нибудь объяснить разницу, почему этот код 2 не дает результат как код 1?

O / P по code1 : Сегодняшний день: 2019/2/28 Следующий день: 2019/3/1

O / P по code2: Настоящий день: 2019/2/28

1 Ответ

0 голосов
/ 12 июля 2020

Как сказал @Adam Smith в комментариях, если это не домашнее задание, вам не следует делать это вручную, а вместо этого следует использовать библиотеку datetime.

Но чтобы ответить на ваш вопрос, изменяя эту строку, вы не получите вывода, потому что (y%100==0 and y%400!=0) and d==28 ложно, когда y равно 2019. Таким образом, ни одно из ваших условий не соответствует, и программа завершается.

...