Python:创建一个month()函数,以1 - 12作为输入并返回相应的月份

时间:2015-10-19 00:20:57

标签: python string function operations

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

感谢您提前抽出时间。

5 个答案:

答案 0 :(得分:3)

我不确定有什么其他限制,但split是一个字符串操作。所以,这样的事情应该有效:

split,将字符串转换为列表,然后只返回与您提供的索引对应的值。 “-1”是因为列表总是从索引0开始。

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

演示:

月(4) - >四月

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

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

以上将输出'Apr'

答案 1 :(得分:0)

切片操作允许您返回一个较大的字符串。

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

答案 2 :(得分:0)

def month(num):
    month = 'JanFebMarAprMayJunJulAugSepOctNovDec'
    print month[(num-1)*3:num*3]

答案 3 :(得分:0)

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

答案 4 :(得分:0)

另一种变化:

>>> 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