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的时候进行一个临时计算用于条件判断 True and False or True 这些会吗? 如果有复杂的条件判断,就要想一想,是否应该使用状态模式了 大佬在哪里???? 文字太多就不看了,通用的办法是化繁为简,把复杂的逻辑分化为一个个简单的逻辑。 fjqisba 发表于 2021-3-7 20:05
文字太多就不看了,通用的办法是化繁为简,把复杂的逻辑分化为一个个简单的逻辑。
说的有点啰嗦 但是实际上写的情况是比较简单的
本身是简单的逻辑 但是条件判断这里还是不好写啊 嵌套多了容易晕 本帖最后由 fjqisba 于 2021-3-7 20:15 编辑
netspirit 发表于 2021-3-7 20:07
说的有点啰嗦 但是实际上写的情况是比较简单的
本身是简单的逻辑 但是条件判断这里还是不好写啊
大概看了一下,首先,这个问题肯定是能解决的,那么现在问题还没解决,估计还是出在逻辑没有完全梳理清楚上,
真正梳理清楚了逻辑,代码都是浑然天成的,什么if,else if,bFlag之类的
比如说:
1.适当地封装一些函数
2.可以用flag变量来保存判断条件2结果的。 写个变量记一下 感谢分享
页:
[1]
2