@provocatorr
python student

Как можно сократить / оптимизировать такой код на Python?

Всем привет. Подскажите пожалуйста ученику, как такой код можно сократить. Спасибо.
month = int(input())
if month == 1 or month == 2 or month == 12:
    print('зима')
elif month == 3 or month == 4 or month == 5:
    print('весна')
elif month == 6 or month == 7 or month == 8:
    print('лето')
elif month == 9 or month == 10 or month == 11:
    print('осень')
else:
    print('error')
  • Вопрос задан
  • 598 просмотров
Решения вопроса 2
использование словаря поможет значительно сократить код:
month = int(input())
seasons = {0:'зима', 1:'весна', 2:'лето', 3:'осень', 4:'зима'}
if 1 <= month <= 12: print(seasons[month//3])
else: print('error')

если ещё не знаком со словарями, во второй строке можно использовать аналогичный список
seasons = ['зима', 'весна', 'лето', 'осень', 'зима']
Ответ написан
Deissh
@Deissh
I like Python, Node.JS, Go, pain, bugs and my cat.
Если минимум, то можно сделать так.
month = int(input())
if month in (1, 2, 12):
    print('зима')
elif month in (3, 4, 5):
    print('весна')
elif month in (6, 7, 8):
    print('лето')
elif month in (9, 10, 11):
    print('осень')
else:
    print('error')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
netpastor
@netpastor
Python developer
month = int(input())
seasons = {
    'winter': (1, 2, 12), 
    'spring': (3, 4, 5),
    'summer': (6, 7, 8),
    'autumn': (9, 10, 11)
}
result = 'error'
for name, monthes in seasons.items():
    if month in monthes:
        result = name
        break
print(result)
Ответ написан
@PEGS
Лучше поздно, чем никогда, такое код работает.
n = int(input())
if 1 <= n <= 12:
print(''.join((
('', 'Зима', 'Зима', 'Весна', 'Весна', 'Весна', 'Лето', 'Лето', 'Лето', 'Осень', 'Осень', 'Осень', 'Зима')[n]
)))
else:
print('Ошибка')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы