吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1532|回复: 11
收起左侧

[求助] python如何处理复杂的条件判断?

[复制链接]
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 这些会吗?

免费评分

参与人数 1热心值 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

bigcan 发表于 2021-3-7 19:52
如果有复杂的条件判断,就要想一想,是否应该使用状态模式了

免费评分

参与人数 1热心值 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

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

免费评分

参与人数 1热心值 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

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

说的有点啰嗦 但是实际上写的情况是比较简单的
本身是简单的逻辑 但是条件判断这里还是不好写啊
lsy832 发表于 2021-3-7 20:12
嵌套多了容易晕  

免费评分

参与人数 1吾爱币 +1 收起 理由
netspirit + 1 那咋办?

查看全部评分

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结果的。

免费评分

参与人数 1热心值 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

nulla2011 发表于 2021-3-7 20:24
写个变量记一下

免费评分

参与人数 1吾爱币 +1 收起 理由
netspirit + 1 谢谢@Thanks!

查看全部评分

123456999 发表于 2021-3-7 20:34
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 06:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表