Обращение к массиву python
Хочу сделать простой код, который будет говорить когда вы родились. Как мне сделать обращение к массиву, чтобы он читал вложение?
season_1 = [12, 1, 2]
season_2 = [3, 4, 5]
season_3 = [6, 7, 8]
season_4 = [9, 10, 11]
a = input('введите номер месяца, когда вы родились: ')
if int(a) == [season_1]:
print('вы родились зимой')
elif int(a) == [season_2]:
print('вы родились весной')
elif int(a) == [season_3]:
print('вы родились летом')
elif int(a) == [season_4]:
print('вы родились осенью')
else:
print('введите настоящий номер месяца')
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Вообще это можно сделать проще, используя в 2 раза меньше кода:
seasons = ['зимой', 'весной', 'летом', 'осенью']
month = int(input('введите номер месяца, когда вы родились: '))
if month in range(1, 13):
n = (month % 12) // 3
print(f'вы родились {seasons[n]}')
else:
print('введите настоящий номер месяца')
С помощью остатка от деления на 12 превращаем декабрь в 0 и все месяцы выстраиваются последовательно группами по 3 месяца, остаётся только нацело разделить на 3, чтобы получить номер этой группы и взять потом её написание из списка.
Автор решения: Lith
→ Ссылка
season_1 = [12, 1, 2] # Зима
season_2 = [3, 4, 5] # Весна
season_3 = [6, 7, 8] # Лето
season_4 = [9, 10, 11] # Осень
try:
a = int(input('Введите номер месяца, когда вы родились (1-12): '))
if a < 1 or a > 12:
print('Введите настоящий номер месяца (от 1 до 12).')
else:
if a in season_1:
print('Вы родились зимой.')
elif a in season_2:
print('Вы родились весной.')
elif a in season_3:
print('Вы родились летом.')
elif a in season_4:
print('Вы родились осенью.')
except ValueError:
print('Пожалуйста, введите целое число для месяца.')
Не забудьте проверить ввод пользователя, при помощи оператора in можно с легкостью получить необходимый нам результат. Либо решить все в 1 строку
print(f'вы родились {"введите настоящий номер месяца" if (month := int(input("введите номер месяца, когда вы родились: "))) not in range(1, 13) else ["зимой", "весной", "летом", "осенью"][(month % 12) // 3]}')