鱼C论坛

 找回密码
 立即注册
查看: 5397|回复: 13

if多个条件判断

[复制链接]
发表于 2016-7-23 01:17:19 | 显示全部楼层 |阅读模式

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

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

x
要完成的是:在值不为‘1’ ‘2’ ‘3’的时候进入if循环,下面这么写为什么不对?
  1. if( var != '1' or '2' or '3'):
复制代码

应该怎么修改?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-23 07:18:01 | 显示全部楼层
var != '1' or var != '2'
或者建个列表。
var not in  ['1', '2']
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-23 08:28:19 | 显示全部楼层
  1. if '5' not in '123':
  2.         print("OK")
复制代码

--------
字符串就是个序列 和 list差不多~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-23 10:06:57 | 显示全部楼层
优先级的问题
  1. if( var != '1') or( '2') or( '3'):
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 11:11:56 | 显示全部楼层

这样写的优先级还是不对吧,现在的三个条件就变成了var != '1'    ,  ‘2’,‘3’后面两个为非零字符串,就会使条件永远成立的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 11:14:57 | 显示全部楼层
wei_Y 发表于 2016-7-23 07:18
var != '1' or var != '2'
或者建个列表。
var not in  ['1', '2']

恩恩,最后我也是这么解决的,之前一直想不明白为什么我那样写不对,后来发现是优先级的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 11:16:44 | 显示全部楼层
SixPy 发表于 2016-7-23 08:28
--------
字符串就是个序列 和 list差不多~

哦哦,原来还可以直接写字符串,不用列表。谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-23 15:08:18 | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-23 15:20:33 | 显示全部楼层
shuofxz 发表于 2016-7-23 11:11
这样写的优先级还是不对吧,现在的三个条件就变成了var != '1'    ,  ‘2’,‘3’后面两个为非零字符串 ...

我意思是你原来的式子错的原因
这个不是正确答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 18:35:45 | 显示全部楼层
小剑剑 发表于 2016-7-23 15:20
我意思是你原来的式子错的原因
这个不是正确答案

哦哦,我理解错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-23 20:07:27 | 显示全部楼层
用字符串风险比较大,如果是判断长度>=2的值用字符串很可能出现误差。

这个问题也是困扰我,后来发现是python的原因。

var == 1
在shell里,它会返回Ture或者False
直接写 var ,shell会返回var的值。

那么走入if,
if var  python会怎么判断是ture 还是 false?

var的值是0或者空就是false,非零非空就是true。
那么就是根据var的值作为判断依据,写if var 相当于 if var != 0 。等形式。
所以用上or,if var != 1 or 2,python会进行两个判断,判断var 是否等于1 ,判断2是否为true。
而不会出现判断 var是否是2这种情况。

关于优先级情况,我暂时想不到python要如何写,如习得此技能别忘记告诉我呦~。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 20:24:05 | 显示全部楼层
wei_Y 发表于 2016-7-23 20:07
用字符串风险比较大,如果是判断长度>=2的值用字符串很可能出现误差。

这个问题也是困扰我,后来发现是p ...


好详细,谢谢~

【关于优先级情况】  是只哪方面,没太明白?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-23 20:28:31 | 显示全部楼层
shuofxz 发表于 2016-7-23 20:24
好详细,谢谢~

【关于优先级情况】  是只哪方面,没太明白?

我之前试过这样写
if var == (1 or 2)但是python依然是先执行(1 or 2)里选值,想用or模拟in。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-23 20:46:18 | 显示全部楼层
wei_Y 发表于 2016-7-23 20:28
我之前试过这样写
if var == (1 or 2)但是python依然是先执行(1 or 2)里选值,想用or模拟in。

这个条件判断用or写,我也想过各种方法,但最后条件都会变成if( var != '1') or( '2')
最后就还是把条件写到列表里面,或者多写几个var=
如果以后我能在想出其他的办法再告诉你哈~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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