0
    user_input = input('Введите, пожалуйста, номер месяца: ')
month = int(user_input)
print('Вы ввели', month)
month31 = [1, 3, 5, 7, 8, 10, 11]
month30 = [4, 6, 9, 12]
month28 = [2]
if month == month31:
        print(31)
elif month == month30:
        print(30)
elif month == month28:
        print(28)
else: print('Нет такого месяца, ты пьян, иди домой.')

Выводит постоянно, что нет такого месяца. Направьте на путь истинный..

3 Answers3

4

а почему бы просто так не сделать:

day = int(input())

days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,]

print(days[day - 1] if 1 <= day <= 12 else "пьян")

или так:

days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,]

print(days[day] if 1 <= day <= 12 else "пьян")

или даже так:

days = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31,}

print(days.get(day, "пьян"))

или также, но чуть покороче

days = dict(zip(range(1, 13), [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,]))

print(days.get(day, "пьян"))

Zhihar
  • 37,513
2

month - число, все остальные - списки. Число никогда не равно списку.

Замени == на in.

И поменяй 11 и 12 местами.

-1

Держи, дружище.

month = int(user_input)
print('Вы ввели', month)
month31 = [1, 3, 5, 7, 8, 10, 11]
month30 = [4, 6, 9, 12]
month28 = [2]
for i in month31:
    if month == i:
            print(31)

for l in month30: if l == month30: print(30)

for k in month28: if k == month28: print(28)

if month >= 13: print('Пьян, иди домой!') else: pass

Mer4
  • 17
  • можно последний if ткнуть перед тремя for, тогда мы сэкономим время на проверке, если месяц заведомо не подходит.. – finally Mar 11 '21 at 13:20
  • 1
    поразительно. Автор принял ответ, который не решает его задачу :D – Эникейщик Mar 11 '21 at 14:29
  • Принял быстрее, чем проверил. Ошибка не большая, надо было местами поменять month == l и т.д – Михаил Mar 12 '21 at 10:09