Skip to main content
 首页 » 编程设计

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

2025年05月04日13Terrylee

我有一个 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 selected。 get 将接受一个额外的参数,如果提供的 key 无效,该参数将被返回。

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

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