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