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

Python:创建一个month()函数,将1-12作为输入并返回相应的月份,python,string,function,operations,Python,String,Function,Operations,我目前正在尝试创建一个month()函数,该函数将数字1到12作为输入,并返回相应月份的三个字符缩写。我需要在不使用if语句和字符串操作的情况下执行此操作。我还必须使用一个字符串来存储所有缩写。我现在被这个函数难住了,以至于我甚至想不出一个开始它的方法,这似乎是那些对我来说很复杂的简单问题之一 提前感谢您的时间。切片操作允许您返回一段较大的字符串 >>> 'abcde'[2:4] 'cd' >>> 'fghijkl'[2:2+3] 'hij' 切片操作允许您

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


提前感谢您的时间。

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

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

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

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

我不确定还有什么其他限制,但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)->4月

如果没有这些限制,将数字转换为三个字母的月份缩写的理想方法是使用Python的datetime:

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

上面将输出'Apr'

我不确定还有什么其他限制,但split是一个字符串操作。因此,类似这样的方法应该会奏效:

def month(num):
    month = 'JanFebMarAprMayJunJulAugSepOctNovDec'
    print month[(num-1)*3:num*3]
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)->4月

如果没有这些限制,将数字转换为三个字母的月份缩写的理想方法是使用Python的datetime:

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

以上将输出“Apr”

只是另一个变体:

def month(num):
    month = 'JanFebMarAprMayJunJulAugSepOctNovDec'
    print month[(num-1)*3:num*3]
>>> 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

只是另一个变化:

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

Inizalizad数组不是更有效吗?@beppe9000操作要求首先将所有内容存储在字符串中。理想情况下,如果你想做这样的查找,你应该使用字典。此外,对于日期,您也可以很容易地使用datetime来获得您想要的内容。使用datetime可以很容易地做到这一点:
datetime.strtime('3','%m').strftime('%b')
。我更新了我的答案以反映这一点。哎哟,我忽略了这一部分:)Nizalizad数组不是更有效吗?@beppe9000操作要求首先将所有内容存储在一个字符串中。理想情况下,如果你想做这样的查找,你应该使用字典。此外,对于日期,您也可以很容易地使用datetime来获得您想要的内容。使用datetime可以很容易地做到这一点:
datetime.strtime('3','%m').strftime('%b')
。我更新了我的答案以反映这一点。哎呀,我忽略了这一部分:)