Crossin的编程教室

标题: 【Python 第11课】 逻辑判断 [打印本页]

作者: crossin先生    时间: 2013-9-13 19:59
标题: 【Python 第11课】 逻辑判断

之前粗略地提到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分钟,轻松学编程





作者: mihchaelli    时间: 2014-6-1 07:16
print 输出的值必须是bool的类型 或者 “”么?
作者: crossin先生    时间: 2014-6-1 14:44
mihchaelli 发表于 2014-6-1 07:16
print 输出的值必须是bool的类型 或者 “”么?

不是,几乎所有东西都可以被print输出,只不过输出来的形式不一样
作者: Flughafencon    时间: 2015-1-4 20:36
  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”,应该如何表达呢?
多谢!

作者: xiaohuzai    时间: 2015-2-8 15:12
Flughafencon 发表于 2015-1-4 20:36
请问最后一条,这个print出来应该显示True,因为1
  1. a = True
  2. b = not a

  3. print (1<2 and b == False)==True
复制代码
加个括号就好了
作者: xiaohuzai    时间: 2015-2-8 15:13
Flughafencon 发表于 2015-1-4 20:36
请问最后一条,这个print出来应该显示True,因为1
  1. a = True
  2. b = not a

  3. print (1<2 and b == False)==True
复制代码
加个括号就好了
作者: fix    时间: 2015-5-12 09:49
难道我就是传说中百年一遇的编程奇才?啊哈哈
作者: lovia    时间: 2015-5-27 18:30
  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
复制代码

作者: 你让我好慌张    时间: 2015-9-1 16:04
难道我就是那个百年一遇的编程奇才?请老师招安我
作者: crossin先生    时间: 2015-9-1 17:43
你让我好慌张 发表于 2015-9-1 16:04
难道我就是那个百年一遇的编程奇才?请老师招安我


作者: 草办    时间: 2015-12-2 14:36
一个是bool类型变量,一个是作为一般的变量来进行比较是否一致。
作者: Killuia    时间: 2016-4-21 16:09
貌似我的逻辑都有一定能力,看之前的代码都暂时可以理解到意思,但就系之前的习题独自做不出,要参考过才可以粗略写出……而且自己注释的怎样才可以保存,以后打开重看有了解自己当初是怎样理解怎样思考的?
作者: crossin先生    时间: 2016-4-22 11:08
Killuia 发表于 2016-4-21 16:09
貌似我的逻辑都有一定能力,看之前的代码都暂时可以理解到意思,但就系之前的习题独自做不出,要参考过才可 ...

这其实还是写得不够多,熟能生巧

注释就直接和代码一起保存啊
作者: fjxc1893    时间: 2016-11-25 13:59
感谢!!!
作者: cheer    时间: 2021-8-10 16:20
完蛋,卡壳了!还是不懂bingo在这里有什么用!这还学的下去吗
作者: crossin先生    时间: 2021-8-10 23:15
cheer 发表于 2021-8-10 16:20
完蛋,卡壳了!还是不懂bingo在这里有什么用!这还学的下去吗

把bingo想象成一个开关(这个词中文意思是“猜中”)
循环的条件是这个开关是关着的
猜中了,就把这开关打开,循环就结束了




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5