Python 3.9.7 函数中if条件成立时,如何继续执行后续其他条件判断?
解答
你写的第一种非嵌套、全独立if的写法,本身就是满足需求的正确实现。
按照你贴出的这段代码逻辑,输入30时必然会同时触发三条条件、输出对应三行内容,你现在仅输出第一条,大概率是实际运行的代码里把后两个if误写为elif了:
# 错误写法(互斥判断,不符合需求) def function(n): if n % 2 == 0: print("Number is even") elif n >= 10: # 只要前面的if条件成立,该分支及后续所有elif/else都会直接跳过 print("Number is at least two digits") elif n % 3 == 0: print("3 is a divisor of number")
elif属于互斥判断分支,天然不满足你需要全量校验所有条件的场景,把所有elif修改为独立的if即可正常运行。
如果后续判断规则持续增多,还可以用规则列表的写法,更易维护:
def function(n): # 所有规则统一存为 (判断条件, 对应输出) 的元组列表 rules = [ (lambda x: x % 2 == 0, "Number is even"), (lambda x: x >= 10, "Number is at least two digits"), (lambda x: x % 3 == 0, "3 is a divisor of number") ] # 遍历所有规则依次校验,符合条件就输出对应内容 for condition, output in rules: if condition(n): print(output)
内容的提问来源于stack exchange,提问作者user17034852
相关产品推荐
相关产品推荐

