如果通过一个或多个 if 语句,我如何执行相同的语句?

时间:2021-07-13 22:32:29

标签: python simplify

如果它传递一系列 if-elif 语句,我想执行相同的任务。

下面展示的是我正在努力实现的一个例子。该程序运行时没有错误,但我想知道是否有一种更简单的方法可以将 continue_program 分配给 Yes,如果它满足其中一个条件,而无需多次输入。

word_form = "A string!"
continue_program = "No"

number = 2

if number == 1:
    word_form = "one"
    continue_program = "Yes"
elif number == 2:
    word_form = "two"
    continue_program = "Yes"
elif number == 3:
    word_form = "three"
    continue_program = "Yes"

3 个答案:

答案 0 :(得分:2)

这可能有点过于简洁:

d = {1: "one", 2: "two", 3: "three"}

continue_program = bool(word_form := d.get(number, "")))

number 中查找 d,这将导致所需的字符串或空字符串。作为副作用,将该字符串分配给 word_form。该字符串的布尔值进一步分配给 continue_program

一些例子;首先,number == 6

>>> bool(word_form := d.get(6, ""))
False
>>> word_form
''

现在,number == 1

>>> bool(word_form := d.get(1, ""))
True
>>> word_form
'one'

更新:使用条件表达式将 True/False 映射到 "Yes"/"No""

continue_program = "Yes" if (word_form := d.get(number, "")) else "No"

3.8 之前,

word_form = d.get(number, "")
continue_program = "Yes" if word_form else "No"

答案 1 :(得分:1)

您可以保留 if 块并在最后检查“word_form”是否有长度,然后您可以将 coninue_program 指定为 True,例如:

word_form = ""
continue_program = False

number = 2

if number == 1:
    word_form = "one"
elif number == 2:
    word_form = "two"
elif number == 3:
    word_form = "three"

if len(word_form) > 0:
   continue_program = True

答案 2 :(得分:0)

在这里我可以想到两种使用类似 switch-case 的方法的解决方案:

1)

def num(arg):
switcher = {
    1:True,
    2:True,
    3:True,
    4:False
}
return switcher.get(arg, False)
def func1():
    print("hi func1")
def func2():
    print("hi func2")
def default():
    print("hi default")
def num2(arg):
    switcher = {
        1:func1,
        2:func2,
    }
    return switcher.get(arg, default)

num2(1)()
print("space")
num2(3)()

会像这样打印:

hi func1
space
hi default

您可以从这里了解更多信息switch-case

相关问题