请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 31600|回复: 15

【Python 第11课】 逻辑判断

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-13 19:59:30 |显示全部楼层

之前粗略地提到bool类型的变量,又说到if和while的判断条件。有些同学反馈说没怎么理解,为什么一会儿是bingo=False,一会又是bingo==False,一会儿是while在条件为True的时候执行,一会儿又是while在bingo==False的时候执行。别急,你听我说。


首先,要理解,一个逻辑表达式,其实最终是代表了一个bool类型的结果,比如:


1 < 3

这个就像当于是一个True的值


2 == 3

这个就是False


把它们作为判断条件放到if或者while的后面,就是根据他们的值来决定要不要执行。


同样的栗子再来几颗:


a = 1

print a>3  #False

print a==2-1  #True

b = 3

print a+b==2+2  #True


比较容易搞混的,是bool变量的值和一个逻辑表达式的值,比如:


a = False

print a  #False

print a==False  #True


虽然a本身的值是False,但是a==False这个表达式的值是True。(说人话!)“a”是错的,但“a是错的”这句话是对的。


回到上面那几个概念:


bingo=False

把bingo设为一个值为False的变量


bingo==False

判断bingo的值是不是False,如果是,那么这句话就是True


while在判断条件条件为True时执行循环,所以当bingo==False时,条件为True,循环是要执行的。


晕了没?谁刚学谁都晕。不晕的属于骨骼惊奇百年一遇的编程奇才,还不赶紧转行做程序员!


逻辑这东西是初学编程的一大坑,我们后面还要在这个坑里挣扎很久。


留个习题:

a = True

b = not a  #不记得not请看第6课

想想下面这些逻辑运算的结果,然后用print看看你想的对不对:

b

not b

a == b

a != b

a and b

a or b

1<2 and b==True


#==== Crossin的编程教室 ====#
微信ID:crossincode
论坛:http://crossin.me
QQ群:156630350

面向零基础初学者的编程课
每天5分钟,轻松学编程




#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

发表于 2014-6-1 07:16:15 |显示全部楼层
print 输出的值必须是bool的类型 或者 “”么?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-6-1 14:44:13 |显示全部楼层
mihchaelli 发表于 2014-6-1 07:16
print 输出的值必须是bool的类型 或者 “”么?

不是,几乎所有东西都可以被print输出,只不过输出来的形式不一样
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

1

好友

52

积分

注册会员

Rank: 2

发表于 2015-1-4 20:36:22 |显示全部楼层
  1. a = True
  2. b = not a

  3. print 1<2 and b == False
复制代码
请问最后一条,这个print出来应该显示True,因为1<2是True,b是False,合起来的值是False,
我尝试在后面加上==True变成
  1. a = True
  2. b = not a

  3. print 1<2 and b == False == True
复制代码
我想表达的是,“合起来的值是False这句是True”
我以为print也会输出True,结果是个False,是不是我多加的这个==True把前面的False给覆盖了?
如果我想表达“合起来的值是False这句话是True”,应该如何表达呢?
多谢!
回复

使用道具 举报

0

主题

0

好友

505

积分

高级会员

Rank: 4

发表于 2015-2-8 15:12:25 |显示全部楼层
Flughafencon 发表于 2015-1-4 20:36
请问最后一条,这个print出来应该显示True,因为1
  1. a = True
  2. b = not a

  3. print (1<2 and b == False)==True
复制代码
加个括号就好了
回复

使用道具 举报

0

主题

0

好友

505

积分

高级会员

Rank: 4

发表于 2015-2-8 15:13:03 |显示全部楼层
Flughafencon 发表于 2015-1-4 20:36
请问最后一条,这个print出来应该显示True,因为1
  1. a = True
  2. b = not a

  3. print (1<2 and b == False)==True
复制代码
加个括号就好了
回复

使用道具 举报

0

主题

0

好友

48

积分

新手上路

Rank: 1

发表于 2015-5-12 09:49:36 |显示全部楼层
难道我就是传说中百年一遇的编程奇才?啊哈哈
回复

使用道具 举报

0

主题

0

好友

54

积分

注册会员

Rank: 2

发表于 2015-5-27 18:30:44 |显示全部楼层
  1. a=True
  2. b=not a
  3. print b  #False
  4. print not b  #True
  5. print a==b  #False
  6. print a!=b  #True
  7. print a and b  #False
  8. print a or b  #True
  9. print 1<2 and b==True  #False
复制代码
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

发表于 2015-9-1 16:04:10 |显示全部楼层
难道我就是那个百年一遇的编程奇才?请老师招安我
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-9-1 17:43:42 |显示全部楼层
你让我好慌张 发表于 2015-9-1 16:04
难道我就是那个百年一遇的编程奇才?请老师招安我

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 22:36 , Processed in 0.019406 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部