0
months = "JanFebMarAprMayJunJulAugSepOctNovDec"
n = int(input("Enter a month number"))

Выше - это исходные данные. Нужно вывести на экран аббревиатуру месяца, основываясь на числе, которое вводит пользователь. Остановился на типа таком, есть еще много подобных вариантов...

for i in range(len(months)):
    print(months[n])

Но это не то.

Укажите направление, куда думать, кроме направлений из 3-х букв и т.д. ))

2
  • Спасибо! за ответ
    – Oposum
    19 ноя 2014 в 18:13
  • @Oposum, Если вам дан исчерпывающий ответ, отметьте его как верный (нажмите на галку рядом с выбранным ответом). 19 ноя 2014 в 18:15

3 ответа 3

2

Как вариант, можно преобразовать исходную строку в список строк:

months_list = [months[i*3:(i+1)*3] for i in range(12)]

и дальше делать

print(months_list[n-1])

Обращаться с этим списком будет удобнее и несколько эффективнее, чем каждый раз делать срез, чтобы получить название месяца.

3
  • ох ох спасибо, когда я уже научюсь таким трюкам))
    – Oposum
    25 ноя 2014 в 11:51
  • 1
    @Oposum: можно ещё так: month_abbr = ['']+[months[i:i+3] for i in range(0, len(months), 3)] это общий способ обхода списка по n элементов за раз.
    – jfs
    25 ноя 2014 в 18:09
  • @jfs, сишник внутри меня говорит, что добавление дополнительного пустого элемента в начало списка вместо вычитания 1 из номера месяца неоптимально (лишние действия, дополнительная память и т.д.). Питонист говорит, что в данном случае это не критично. В остальном ваш вариант интересен, как всегда.
    – insolor
    28 ноя 2014 в 8:52
2

Входной формат не очень удачный, вместо этого можно использовать calendar.month_abbr, который может зависеть от текущей локали:

#!/usr/bin/env python3
from calendar import month_abbr

month_number = int(input("Enter a month number (Jan -> 1): "))
print(month_abbr[month_number])
1
  • Спасибо, это интересно.
    – Oposum
    25 ноя 2014 в 11:47
1
months[(n-1)*3:n*3]

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.