gpt4 book ai didi

python - 在 Python 中运行七个 if 语句的最短方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:18 25 4
gpt4 key购买 nike

我有一个 if 语句来检查一个数字,然后相应地返回一个字符串值。

代码:

def get_weekday(day):
if day in ['1', 1]:
return 'Monday'
elif day in ['2', 2]:
return 'Tuesday'
elif day in ['3', 3]:
return 'Wednesday'
elif day in ['4', 4]:
return 'Thursday'
elif day in ['5', 5]:
return 'Friday'
elif day in ['6', 6]:
return 'Saturday'
elif day in ['7', 7]:
return 'Sunday'
return 'Invalid day selected'

这个问题可能看起来很主观,但我认为应该有一种pythonic并且更好、更短、更干净的方式来写这个。

最佳答案

相反,我会做的是创建一个字典,并将您的 day 转换为单一类型,然后在您的字典中查找它。这大大减少了您的代码:

def get_weekday(day):
days_dict = {
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday',
'7': 'Sunday'
}
return days_dict.get(str(day), 'Invalid day selected')

所以,上面的函数中发生了什么,你传递的是你的 day,不管你是将它作为字符串还是 int 传递,转换都是作为 str 已经。你的字典现在为你保存了映射,查找将花费 O(1)。

get 方法将返回 None 如果它没有在您的字典中找到条目。但是,根据您的要求,您希望为无效条目返回 Invalid day selectedget 将接受一个额外的参数,如果提供的 key 无效,该参数将被返回。

下面是可能出现的不同情况以及函数行为方式的演示:

>>> print(get_weekday(2))
Tuesday
>>> print(get_weekday('5'))
Friday
>>> print(get_weekday("invalid_thing"))
Invalid day selected

关于python - 在 Python 中运行七个 if 语句的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39936512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com