如何解决如果通过一个或多个 if 语句,我如何执行相同的语句?
如果它传递一系列 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"
解决方法
这可能有点过于简洁:
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"
,
您可以保留 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
,
在这里我可以想到两种使用类似 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。