Форум сайта python.su
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
Например, месяц(2) возвращает “фев”
Как можно решить задаче, НЕ использовать условные операторы if для перечисления месяцев.
Офлайн
Офлайн
Задолбал спамить
Офлайн
def moth(digit): moths = {1: 'Янв', 2: 'Фев', 3: 'Мрт', 4: 'Апр', 5: 'Май', 6: 'Июн', 7: 'Июл', 8: 'Авг', 9: 'Снт', 10: 'Окт', 11: 'Нбр', 12: 'Дкб' } return moths[digit] print(moth(int(input())))
Офлайн
>>> def get_month(n): ... months = ('Янв', 'Фев', 'Мар', ... 'Апр', 'Май', 'Июн', ... 'Июл', 'Авг', 'Сен', ... 'Окт', 'Ноя', 'Дек') ... return months[n - 1] ... >>> get_month(1) 'Янв' >>> get_month(12) 'Дек' >>>
Офлайн
Проще
# find = lambda pos: "ЯнвФевМарАпрМайИюнИюлАвгСенОктНояДек"[(pos - 1) * 3:pos * 3] print(find(2))
Отредактировано 4kpt_IV (Ноя. 2, 2016 10:13:03)
Офлайн
Гггггг 4kpt_IV ЖЖОТЕ СУДАРЬ!
Офлайн
4kpt_IVА полные названия? Необязательно полные, просто произвольной длины.
Проще
Офлайн
serhii123
Как можна написать функцию месяц(), который я принимаю в качестве аргумента число от 1 до 12, а на выходе возвращает первые три буквы месяца, соответствующего числу.
Офлайн
Есть, короче, такое понятие “сила предусловия и постусловия”. Предусловие должно быть максимально ослаблено, тогда как постусловие должно быть максимально усилено. От этого зависит “применимость функции” - число задач, для решения которых эту функцию можно применить.
Вот, например, возьмём функцию 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)
Офлайн