我在Udemy的Python课程中找到一个练习,要求我创建一个名为return_day的函数。它建议我使用字典,但是过去两个小时我一直没有成功。因此,我通过了练习写作:
def return_day(x):
if x == 1:
return "Sunday"
elif x==2:
return "Monday"
elif x==3:
return "Tuesday"
elif x==4:
return "Wednesday"
elif x==5:
return "Thursday"
elif x==6:
return "Friday"
elif x==7:
return "Saturday"
return None
...但是完全不同。有人可以帮我吗? 为什么下面的代码不起作用?
def return_day(x):
if x > 0 and x<=7:
return x=dict(1="Sunday",2="Monday",3="Tuesday",4="Wednesday",5="Thursday",6="Friday",7="Saturday")
return None
答案 0 :(得分:1)
字典是从键到值的映射。在这种情况下,您希望将星期几编号映射为字符串。
有两种方法可用于提取给定键的值:dict.__getitem__
和dict.get
。当您可以确保键在字典中存在时,使用第一个键。否则结果将为KeyError
。如果找不到密钥,后者将返回None
。
因此,首先定义字典:
day_map = {1: "Sunday", 2: "Monday", 3: "Tuesday", 4: "Wednesday",
5: "Thursday", 6: "Friday", 7: "Saturday"}
接下来定义一个使用字典作为输入的函数:
def return_day(x, day_map_dict):
return day_map_dict[x]
print(return_day(1, day_map)) # 'Sunday'
将字典定义为输入的好处是,每次运行函数时都不需要重新定义字典。此外,您可能有多个映射(例如,从星期一开始的一周),这种结构将使您可以在不同的映射之间无缝切换。
请注意,dict[k]
是dict.__getitem__(k)
的简写。如果该数字不是1到7之间的整数,即与KeyError
键一致,则上述函数将返回day_map
。如果您希望返回None
,请使用dict.get
:
def return_day(x, day_map_dict):
return day_map_dict.get(x)
print(return_day(8, day_map)) # None
答案 1 :(得分:0)
语法returnx=dict()
没有意义。您应该做的是先定义字典,然后将键插入字典以返回相关值。
首先定义
d=dict(1="Sunday",2="Monday",3="Tuesday",4="Wednesday",5="Thursday",6="Friday",7="Saturday")
然后return d[x]
。
答案 2 :(得分:0)
您应该指定使用的语言。从函数定义看来,似乎是Python,从字典定义来看,我也不知道。正确的Python代码如下:
d={1:"Sunday",2:"Monday",3:"Tuesday",4:"Wednesday",5:"Thursday",6:"Friday",7:"Saturday"}
def return_day(x):
return d[x]
return_day(7) # return 'Saturday'