鱼C论坛

 找回密码
 立即注册
查看: 1546|回复: 2

[已解决]while多条件循环

[复制链接]
发表于 2020-7-15 15:29:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
while 条件1 and 条件2:
         循环体

这种多条件的格式,判断结果是  “但凡有一个条件不成立,就退出循环”  吗?
如果条件再多点,需要怎么判断呢?如加入or或not,not 条件1 and 条件2 or条件3
最佳答案
2020-7-15 16:25:52
while循环,不管有多少条件,都会看做是一个条件
while 条件1 and 条件2 or 条件3 ……
红色括号内算是while的条件,不管你写多少,最终看的是整个的结果。

对于这多个条件结果的运算,那就是另外一回事儿了。多逻辑条件表达式的运算
多逻辑表达式运算,先进行优先级划分,然后从左向右开始运算,运算过程中会有短路逻辑判断,返回值是最后一步运算所得到的值。

在Python中,逻辑运算符的优先级是最低的,要低于所有的其他运算符。
这三个运算符的优先级呢,也是有区别的,not>and>or,同一优先级从左至右进行运算,即当表达式中有多个逻辑操作符时,优先对not进行运算,之后是and,最后是or运算。
例如:表达式 a or b and not c,实际上进行运算的是a or (b and (not c))

那它们的返回值是不是逻辑值呢?
答案:一元操作符not的返回值是逻辑值True或False二元操作符and和or的返回值不一定是逻辑值,而且一般情况都不 是逻辑值。这是咋回事儿呢?它们是怎么运算的呢?
我们进行详细分析。
先说说比较简单的not。这个一元操作符直接对操作对象进行bool判断,not a, 则判断bool(a),若为True,则返回False;若为False,则返回True。
接下来看看and,例如,表达式a and b,该表达式的运算过程,先对a进行bool判断,若bool(a)=False,则返回a值,否则返回b值。
最后我们看看or,例如表达式a or b,该表达式的运算过程:先对a进行bool判断,若bool(a)=True,则返回a值,否则返回b值。

bool为False的值有: 0, None,  (),  [], {}, ''等。即 0,None,空元组,空列表,空字典,空字符串等
运算过程中会有短路逻辑出现
可以看看我的这个帖子:Python细节之4、逻辑运算符(and、or、not)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-15 15:35:09 | 显示全部楼层
本帖最后由 yhhpf 于 2020-7-15 15:36 编辑

优先级顺序:not>and>or
and 是左右都需要满足,所以你上面那个必须两个都满足才会执行,其中一个不满足就跳出了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-15 16:25:52 | 显示全部楼层    本楼为最佳答案   
while循环,不管有多少条件,都会看做是一个条件
while 条件1 and 条件2 or 条件3 ……
红色括号内算是while的条件,不管你写多少,最终看的是整个的结果。

对于这多个条件结果的运算,那就是另外一回事儿了。多逻辑条件表达式的运算
多逻辑表达式运算,先进行优先级划分,然后从左向右开始运算,运算过程中会有短路逻辑判断,返回值是最后一步运算所得到的值。

在Python中,逻辑运算符的优先级是最低的,要低于所有的其他运算符。
这三个运算符的优先级呢,也是有区别的,not>and>or,同一优先级从左至右进行运算,即当表达式中有多个逻辑操作符时,优先对not进行运算,之后是and,最后是or运算。
例如:表达式 a or b and not c,实际上进行运算的是a or (b and (not c))

那它们的返回值是不是逻辑值呢?
答案:一元操作符not的返回值是逻辑值True或False二元操作符and和or的返回值不一定是逻辑值,而且一般情况都不 是逻辑值。这是咋回事儿呢?它们是怎么运算的呢?
我们进行详细分析。
先说说比较简单的not。这个一元操作符直接对操作对象进行bool判断,not a, 则判断bool(a),若为True,则返回False;若为False,则返回True。
接下来看看and,例如,表达式a and b,该表达式的运算过程,先对a进行bool判断,若bool(a)=False,则返回a值,否则返回b值。
最后我们看看or,例如表达式a or b,该表达式的运算过程:先对a进行bool判断,若bool(a)=True,则返回a值,否则返回b值。

bool为False的值有: 0, None,  (),  [], {}, ''等。即 0,None,空元组,空列表,空字典,空字符串等
运算过程中会有短路逻辑出现
可以看看我的这个帖子:Python细节之4、逻辑运算符(and、or、not)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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