Python:创建一个 month() 函数以将 1 - 12 作为输入和 return 对应的月份

Python: Creating a month() function to take 1 - 12 as input and return corresponding month

我目前正在尝试创建一个 month() 函数,它将数字 1 到 12 作为输入,return 相应月份的三个字符缩写。我需要在不使用 if 语句和使用字符串操作的情况下执行此操作。我还必须使用一个字符串来存储所有缩写。我目前对这个功能感到困惑,以至于我什至想不出一种方法来开始它,这似乎是那些对我来说很复杂的简单问题之一。

提前感谢您抽出时间。

切片操作允许您 return 一段较大的字符串。

>>> 'abcde'[2:4]
'cd'
>>> 'fghijkl'[2:2+3]
'hij'

我不确定还有哪些其他限制,但拆分是一个字符串操作。所以,这样的事情应该有效:

split,会将字符串变成一个列表,然后你只需return你提供的索引对应的值。 “-1”是因为列表总是从索引 0 开始。

def month(n):
    a = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split()
    return a[n - 1]

演示:

月 (4) -> 4 月

没有限制,将数字转换为三个字母的月份缩写的理想方法是使用 Python 的日期时间:

from datetime import datetime
datetime.strptime('4', '%m').strftime('%b')

上面会输出'Apr'

def month(num):
    month = 'JanFebMarAprMayJunJulAugSepOctNovDec'
    print month[(num-1)*3:num*3]
def month(n):
    end = 3*n - 1
    start = end - 2
    return 'JanFebMarAprMayJunJulAugSepOctNovDec'[start:end+1]

for i in range(1,13):
    print(month(i))

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

另一种变体:

>>> for m in range(1, 13):
        print 'JanFebMarAprMayJunJulAugSepOctNovDec'[:3*m][-3:],

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

还有一个:

>>> for m in range(1, 13):
        print ' JFMAMJJASONDaeapauuuecoenbrrynlgptvc'[m::12],

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec