我有一个函数可以返回三个值中的一个:a、b或c。
def f():
return x # a, b, or c
我需要根据f()
:A、B或C的返回值执行不同的语句。据我所知,最好的方法是:
v = f()
if v == a:
# Do A
elif v == b:
# Do B
else:
# Do C
如果不引入这个新变量v
,是否有其他方法来计算f()
的返回值<也许是这样的吧?
if f() == a:
# Do A
elif _value_from_above == b:
# Do B
else:
# Do C
如果/elif和Python没有开关语句,就没有办法做到这一点。你需要临时变量。
如果您知道a、b和c的确切值,也可以使用分派表。它更详细一点,但是如果您有很多可能的分支,它将更快,并且可能更容易遵循。
要制作调度表:
return DISPATCH_TABLE[f()]()
你可以在这里找到一些例子。
如果你只想映射答案(不需要进一步计算),那么你可以用一个简单的映射函数来解决它(类似于Junichiro的答案):
import random
def f():
foo = ['a', 'b', 'c', 'd', 'e']
return random.choice(foo)
if __name__ == '__main__':
from_to = dict(a=2, b=1, c=3, d=4, e=5)
print(from_to.get(f(), None))
如果您在f()
和之间有一个不可预见的值。get(f(),None)
将默认为None
可能不是您想要的,但一种选择是使用函数字典:
def do_a();
..
def do_b();
..
def do_c();
..
strategy = {
a: do_a,
b: do_b
c: do_c
}
strategy[f()]()
但是通常情况下,您需要一些错误处理,以防找不到字典条目,在这种情况下,您可能最终会有一个单独的变量,而且您现在必须将每个案例提取到自己的函数中。
如果只有两种情况,您可以使用三元运算符:
do_a() if f() == a else do_b()
虽然你可能已经知道了这一点,加上你的问题有两个以上的情况,加上很多人不喜欢三元运算符,但是不管怎样。
如果您有一种带有switch语句的语言,比如C#/Java/C等,或者一种模式匹配语句,比如Haskell/OCaml/F#/Scala/Erlang等,那么您可以使用它们。模式匹配语句如下所示:
match f() with
| a ->
// do something
// and maybe something else too
| b ->
// do some other thing
// and yet some other thing
但是Python中没有这样的特性。
Python的语句是否有等价物,类似于它的语句?这可以让我们简化这一点: 为此: 其中只有在满足条件并运行其“do东西”后才会被调用?相反,如果不满足条件,代码将不会被运行。 我不想滔滔不绝地说亵渎,但我能描述它的最好方式是在每一块“做事情”的末尾都有一个<code>GOTO。 本质上,它与< code>else语句相反。虽然< code>else仅在不满足其他条件时运行,但它仅在满足另一个条件时
本文向大家介绍Python if, elif, else,包括了Python if, elif, else的使用技巧和注意事项,需要的朋友参考一下 示例 在Python中,您可以定义一系列条件if,第一个条件用于elif其余条件,直到最后一个(可选)else用于其他条件条件未捕获的任何条件。 产出 Number is bigger than 2 使用else if代替elif会触发语法错误,因此是
问题内容: 是否可以通过if条件执行多个分配,如以下代码? 问题答案: 否。根据规范,在if语句的开头仅允许一个“简单语句” 。 该建议的方法是这可能会返回一个错误,所以我想你想是多重考验:
我似乎搞不清楚下面的语句与和有关的问题是什么。请记住,仍然在开发中,我只是还没有能够在语句中测试它,所以很可能是错误的。 我得到的错误是: 而语句是这样的。
本文向大家介绍Python中的if、else、elif语句用法简明讲解,包括了Python中的if、else、elif语句用法简明讲解的使用技巧和注意事项,需要的朋友参考一下 下面我们学习if语句,输入下面的代码,确保能够正确运行。 运行结果 加分练习 通过上面的练习,我们自己猜测一下if语句的作用,用自己的话回答下面的问题。 1. 你认为if对它下面的代码做了什么? 判断为True就执行它下面的
Python3 实例 以下实例通过使用 if...elif...else 语句判断数字是正数、负数或零: 实例(Python 3.0+)# Filename : test.py # author by : www.runoob.com # 用户输入数字 num = float(input("输入一个数字: ")) if num > 0: print("正数") elif num == 0: pri