Форум сайта python.su
0
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
Например, месяц(2) возвращает “фев”
Как можно решить задаче, НЕ использовать условные операторы if для перечисления месяцев.
Офлайн
3
Офлайн
61
Задолбал спамить
Офлайн
8
def moth(digit): moths = {1: 'Янв', 2: 'Фев', 3: 'Мрт', 4: 'Апр', 5: 'Май', 6: 'Июн', 7: 'Июл', 8: 'Авг', 9: 'Снт', 10: 'Окт', 11: 'Нбр', 12: 'Дкб' } return moths[digit] print(moth(int(input())))
Офлайн
857
>>> def get_month(n): ... months = ('Янв', 'Фев', 'Мар', ... 'Апр', 'Май', 'Июн', ... 'Июл', 'Авг', 'Сен', ... 'Окт', 'Ноя', 'Дек') ... return months[n - 1] ... >>> get_month(1) 'Янв' >>> get_month(12) 'Дек' >>>
Офлайн
49
Проще
# find = lambda pos: "ЯнвФевМарАпрМайИюнИюлАвгСенОктНояДек"[(pos - 1) * 3:pos * 3] print(find(2))
Отредактировано 4kpt_IV (Ноя. 2, 2016 10:13:03)
Офлайн
61
Гггггг 4kpt_IV ЖЖОТЕ СУДАРЬ!
Офлайн
857
4kpt_IVА полные названия? Необязательно полные, просто произвольной длины.
Проще
Офлайн
49
serhii123
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
Офлайн
857
Есть, короче, такое понятие “сила предусловия и постусловия”. Предусловие должно быть максимально ослаблено, тогда как постусловие должно быть максимально усилено. От этого зависит “применимость функции” - число задач, для решения которых эту функцию можно применить.
Вот, например, возьмём функцию zip()
>>> list(zip('abc', 'def')) [('a', 'd'), ('b', 'e'), ('c', 'f')] >>> list(zip('abc', 'def', 'ghi')) [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')] >>> list(zip('abc', 'def', 'ghi', 'jkl')) [('a', 'd', 'g', 'j'), ('b', 'e', 'h', 'k'), ('c', 'f', 'i', 'l')] >>>
serhii123хоть и является конкретной (сильным предусловием), но это не значит, что надо писать такую же функцию (с сильным предусловием). Надо написать функцию, которая решит и эту задачу, и множество других задач. И для этого надо в этой формулировке ослабить всю конкретику.
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
serhii123
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
serhii123
Как можно написать функцию имя(), которая принимает в качестве аргумента число от начала до конца, а на выходе возвращает выбранную строку, соответствующую числу.
Отредактировано py.user.next (Ноя. 3, 2016 05:12:36)
Офлайн