По номеру месяца вывести кол-во дней в нем

    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 шт):

Автор решения: Эникейщик

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

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

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

→ Ссылка
Автор решения: Zhihar

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

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, "пьян"))
→ Ссылка
Автор решения: Mer4

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

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

→ Ссылка