netspirit 发表于 2021-3-7 19:43

python如何处理复杂的条件判断?

举几个例子:
if 条件1:
xxx
elif 条件2:
(这里可能需要计算出一个临时条件用于条件3的判断)
if 条件3:
    xxx
elif 条件4:
xxx
else:
xxx
第一种情况:我希望在多重elif里面,需要同时判断同时满足多重情况,比如上面的条件2和条件3要同时满足才执行某些语句,否则继续看条件4和其他elif是否满足.但是在这里如果条件2满足条件3不满足就不继续执行下面的elif了.如何让条件2满足并且条件3不满足继续执行下面的elif?
条件2和条件3不能直接在elif里面用and链接,有这么几个原因:
1.条件2和条件3计算本身就很吃cpu资源,如果用and在复杂的情况会导致程序变得更慢.我试过python在处理if判断的时候会计算所有条件,不管if是否已经满足(比如and链接两个条件,第一个条件不满足也会计算第二个)
2.条件3必须在条件2成立之后才能进行判断,否则会出错.比如一个字符串,条件2是判断字符串里面有没有a,然后条件3是判断a后面有没有b.我不能在不确定字符串有没有a的情况下判断a后面有没有b
3.在条件2之后需要计算一个临时的结果用于条件3的判断.比如我需要判断一个字符串里面有没有a.然后如果有a那么要用切片生成一个临时字符串来判断a后面有没有b.

如果条件2满足了但是条件3不满足的情况下python会直接跳出整个if判断,如何让条件2满足但是条件3不满足的情况下继续下面的其他elif和else的判断?

第二种情况
if 条件1:
xxx
elif (我希望临时计算的表达式) 条件2 and 条件3:
xxx
else:
xxx

第二种情况:我希望在某些elif之后进行一些临时的运算来进行接下来的判断.比如上面的条件2和条件3都依赖于临时计算的判断条件.如果我都写在函数里面的话那又多了一个只用一次的临时函数,代码也会更乱.而且条件2和条件3需要分别计算一次,效率也很低.有没有办法在每次elif执行的时候先计算一些结果然后再进行判断?
不能直接写在if前面,因为如果第一个条件满足了那么这个计算就是纯粹浪费了.而我是要第一个条件不满足的情况下再每次elif的时候进行一个临时计算用于条件判断

Cool_Breeze 发表于 2021-3-7 19:51

True and False or True 这些会吗?

bigcan 发表于 2021-3-7 19:52

如果有复杂的条件判断,就要想一想,是否应该使用状态模式了

风之翼1240 发表于 2021-3-7 19:55

大佬在哪里????

fjqisba 发表于 2021-3-7 20:05

文字太多就不看了,通用的办法是化繁为简,把复杂的逻辑分化为一个个简单的逻辑。

netspirit 发表于 2021-3-7 20:07

fjqisba 发表于 2021-3-7 20:05
文字太多就不看了,通用的办法是化繁为简,把复杂的逻辑分化为一个个简单的逻辑。

说的有点啰嗦 但是实际上写的情况是比较简单的
本身是简单的逻辑 但是条件判断这里还是不好写啊

lsy832 发表于 2021-3-7 20:12

嵌套多了容易晕

fjqisba 发表于 2021-3-7 20:13

本帖最后由 fjqisba 于 2021-3-7 20:15 编辑

netspirit 发表于 2021-3-7 20:07
说的有点啰嗦 但是实际上写的情况是比较简单的
本身是简单的逻辑 但是条件判断这里还是不好写啊
大概看了一下,首先,这个问题肯定是能解决的,那么现在问题还没解决,估计还是出在逻辑没有完全梳理清楚上,
真正梳理清楚了逻辑,代码都是浑然天成的,什么if,else if,bFlag之类的
比如说:
1.适当地封装一些函数
2.可以用flag变量来保存判断条件2结果的。

nulla2011 发表于 2021-3-7 20:24

写个变量记一下

123456999 发表于 2021-3-7 20:34

感谢分享
页: [1] 2
查看完整版本: python如何处理复杂的条件判断?