Crossin的编程教室

标题: 【Python 第6课】bool [打印本页]

作者: iamocean    时间: 2013-7-30 21:21
标题: 【Python 第6课】bool
本帖最后由 iamocean 于 2013-7-30 21:22 编辑

昨天说到了python中的几个基本类型,字符串、整数、浮点数都还算好理解,关于剩下的那个bool(布尔值)我要稍微多说几句。


逻辑判断在编程中是非常重要的。大量的复杂程序在根本上都是建立在“真”与“假”的基本逻辑之上。而bool所表示的就是这种最单纯最本质的True / Flase,真与假,是与非。


来看下面的例子:
  1. a = 1 < 3
  2. print a
  3. b = 1
  4. c = 3
  5. print b > c
复制代码
通过用“>”“<”来比较两个数值,我们就得到了一个bool值。这个bool值的真假取决于比较的结果。


“>”“<”在编程语言中被成为逻辑运算符,常用的逻辑运算符包括:


>:大于
<:小于
>=:大于等于
<=:小于等于
==:等于。比较两个值是否相等。之所以用两个等号,是为了和变量赋值区分开来。
!=:不等与
not:逻辑“非”。如果x为True,则not x为False
and:逻辑“与”。如果x为True,且y为True,则x and y为True
or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True


关于bool值和逻辑运算其实远不止这些,但现在我们暂时不去考虑那么多,以免被绕得找不到北。最基本的大于、小于、等于已经够我们先用一用的了。



试试把bool加到我们的小游戏里:
  1. num = 10
  2. print 'Guess what I think?'
  3. answer = input()


  4. result = answer<num
  5. print 'too small?'
  6. print result


  7. result = answer>num
  8. print 'too big?'
  9. print result


  10. result = answer==num
  11. print 'equal?'
  12. print result
复制代码
代码比之前稍微多了一点,解释一下。
第一段代码:先创建一个值为10的变量num,输出一句提示,然后再输入一个值给变量answer。
第二段代码:计算answer<num的结果,记录在result里,输出提示,再输出结果。
第三段、第四段都与第二段类似,只是比较的内容不一样。

51b746310a55b319664286cf42a98226cefc1741.jpg

看看结果是不是跟你预期的一致?虽然看上去还是有点傻,但是离目标又进了一步。


现在数数你手上的工具:输入、输出,用来记录数值的变量,还有可以比较数值大小的逻辑运算。用它们在你的python里折腾一番吧。



#==== Crossin的编程教室 ====#
微信ID:crossincode


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

扫描二维码添加微信

f68e6e3d269759eee7be4973b3fb43166c22df15.jpg

作者: Janie    时间: 2013-9-27 12:28
网页版无法INPUT吗?
作者: crossin先生    时间: 2013-9-27 13:35
Janie 发表于 2013-9-27 12:28
网页版无法INPUT吗?

是的
作者: nemo    时间: 2013-10-1 09:27
本帖最后由 nemo 于 2013-10-1 09:28 编辑

guess what i think?
100
too small?
False
too big?
True
equal?
10
------------------------
不对劲,结果为什么会这样?
程序是
num=10
print 'guess what i think?'
answer=input()

result=answer<num
print 'too small?'
print result

result=answer>num
print 'too big?'
print result

result=answer=num
print 'equal?'
print result


作者: puffbaby    时间: 2013-10-4 22:09
nemo 发表于 2013-10-1 09:27
guess what i think?
100
too small?

你的代码写错了:
倒数第三行 等于 ==  
应该是
result=answer==num
你写成result=answer=num,那就是把num赋值给answer,answer的值就是10 了,然后answer的值又给result
所以,result也等于10
。。。。。。。。。。。。。
作者: nemo    时间: 2013-10-11 12:07
puffbaby 发表于 2013-10-4 22:09
你的代码写错了:
倒数第三行 等于 ==  
应该是

谢谢啊,确实是这样。
作者: 很好很好很好    时间: 2014-2-19 13:30
为什么两次对比的结果一样呢?

捕获0000.PNG (50.55 KB, 下载次数: 401)

捕获0000.PNG


作者: crossin先生    时间: 2014-2-19 13:42
很好很好很好 发表于 2014-2-19 13:30
为什么两次对比的结果一样呢?

变量名拼错了
所以第二个值被赋到另一个变量上了
作者: 很好很好很好    时间: 2014-2-22 10:16
crossin先生 发表于 2014-2-19 13:42
变量名拼错了
所以第二个值被赋到另一个变量上了

谢谢
作者: 珍妮晚上好    时间: 2014-3-30 15:50
crossin先生 发表于 2014-2-19 13:42
变量名拼错了
所以第二个值被赋到另一个变量上了

那里错了?我怎么没发现?
作者: crossin先生    时间: 2014-3-30 21:41
珍妮晚上好 发表于 2014-3-30 15:50
那里错了?我怎么没发现?

楼上上那位的代码里,有个 result 拼成了 reult
作者: weinishen    时间: 2014-5-23 23:50
请教各位,这段代码有什么错误吗?总是得不到正确的结果

QQ图片20140523174852.jpg (80.93 KB, 下载次数: 259)

QQ图片20140523174852.jpg


作者: crossin先生    时间: 2014-5-24 21:55
weinishen 发表于 2014-5-23 23:50
请教各位,这段代码有什么错误吗?总是得不到正确的结果

你用的是python3
python 3里的input得到的是一个字符串。字符串和数字比大小是有问题的
你可以改为
  1. answer=int(input())
复制代码
另外可以参考这一课:【Python 第63课】python 2到3的新手坑
http://crossin.me/forum.php?mod= ... d=856&fromuid=3

作者: weinishen    时间: 2014-5-27 02:27
crossin先生 发表于 2014-5-24 21:55
你用的是python3
python 3里的input得到的是一个字符串。字符串和数字比大小是有问题的
你可以改为另外可 ...

谢谢回复!
作者: 打飞机的python    时间: 2014-6-2 13:50
脑袋有点大   但还是 搞懂了!!
作者: fuyuanjun12    时间: 2014-6-10 17:07
真是细致 发现了错误。
作者: daisuke    时间: 2014-8-8 00:56
3.4.1版本 程序如下
num = 10
print("Guess what I think?")
answer = input()


result= answer<num
print ('too small?')
print(result)


result = answer>num
print ('too big?')
print (result)


result = answer==num
print( 'equal?')
print (result)

运行
报错,格式错误
    result= answer<num
TypeError: unorderable types: str() < int()
好像是我输入的answer是字符串,而num是整数,无法比较。好心塞,求解
作者: crossin先生    时间: 2014-8-8 11:00
daisuke 发表于 2014-8-8 00:56
3.4.1版本 程序如下
num = 10
print("Guess what I think?")

python 3的input拿到的是字符串,必须得转一下
比如 answer = int(input())
作者: daisuke    时间: 2014-8-8 20:19
crossin先生 发表于 2014-8-8 11:00
python 3的input拿到的是字符串,必须得转一下
比如 answer = int(input())

get√
多谢啦~!
好像在回帖里看到这个问题的解答了
作者: cross    时间: 2015-4-20 16:11

作者: lovia    时间: 2015-5-27 19:04
  1. age=72
  2. str="teacher"
  3. print "Crossin is a %s,and his age is %s"%(str,age)
复制代码

作者: abdrdxqsj    时间: 2015-6-16 05:07
print "Hello World!\n"
print "guess what I think"
num = 7
answer=input()

print "too small?"
result = answer<num
print result

print"too big?"
result = answer>num
print result

print"equal?"
result = anwer==num
print result

为什么不能这么写?
作者: botter    时间: 2015-11-11 11:33
abdrdxqsj 发表于 2015-6-16 05:07
print "Hello World!\n"
print "guess what I think"
num = 7

最后的equal那里的变量answer拼错了。所以result被赋予了一个anwer的无效值
作者: weiliu    时间: 2015-12-17 15:29
珍妮晚上好 发表于 2014-3-30 15:50
那里错了?我怎么没发现?

too big...   too small....是这个么?
作者: crossin先生    时间: 2015-12-17 22:20
weiliu 发表于 2015-12-17 15:29
too big...   too small....是这个么?

他变量名拼错了

作者: 追风    时间: 2016-4-28 14:32
abdrdxqsj 发表于 2015-6-16 05:07
print "Hello World!\n"
print "guess what I think"
num = 7

我猜想你的本意是说,将先print 'too small?' 再比较赋值result = answer<num。因为我也是这么想的。我验证了一下这个是可以的。但是因为你一个变量拼写错误,出现了错误提示,让你误以为这样的顺序改变不行。实际上,仔细看错误提示是很容易找出问题的。
2.png
作者: 追风    时间: 2016-4-28 14:46
crossin先生 发表于 2015-12-17 22:20
他变量名拼错了

在这个练习中,我尝试将字母、标点符号和程序设定的num比较,但是,得到的结果都是too big为true,而且没有错误提示。而且,我将num设置为1000000000,也仍然是too big为true,这是为什么呢?
1.png

作者: crossin先生    时间: 2016-4-28 16:11
追风 发表于 2016-4-28 14:46
在这个练习中,我尝试将字母、标点符号和程序设定的num比较,但是,得到的结果都是too big为true,而且没 ...

字符和数字不好比较大小
直接输入数字才行
作者: emoheiri    时间: 2016-8-6 16:21
num=10
print'guess what i think'
answer=input()

result=answer<num
print'too big?'
print result

故意把第五行换成了too big,知道出来的结果不对,但是不知道为什么不对,希望给解答下,多谢。

sp160806_161945.png (32.08 KB, 下载次数: 274)

sp160806_161945.png


作者: crossin先生    时间: 2016-8-7 23:24
emoheiri 发表于 2016-8-6 16:21
num=10
print'guess what i think'
answer=input()

你这里还没有学到 if 的条件判断,你这是几行代码都是顺序执行的,你写的什么,它就输出什么,跟你输入什么完全没有关系
作者: katherinewnj    时间: 2017-7-24 22:30
为什么在Shell里面一直显示第一行有错误?
num=10
print('Guess what I think')
answer = eval(input())

result = answer<num
print('too small')
print (result)

result = answer>num
print('too big')
print (result)

result = answer==num
print('equal?')
print (result)
作者: crossin先生    时间: 2017-7-24 23:25
katherinewnj 发表于 2017-7-24 22:30
为什么在Shell里面一直显示第一行有错误?
num=10
print('Guess what I think')

上报错信息或者截图
作者: iris    时间: 2018-5-2 15:07
本帖最后由 iris 于 2018-5-2 15:34 编辑

输入之后,没有第二行数字,而是直接跳转到下面
为什么我的输入之后,第二行没有数字出现,而是直接进行判断
这是int(input())却报错
QQ截图20180502152848.png
作者: crossin先生    时间: 2018-5-2 23:28
iris 发表于 2018-5-2 15:07
为什么我的输入之后,第二行没有数字出现,而是直接进行判断
这是int(input())却报错
...

数字要你自己输入
作者: iris    时间: 2018-5-6 10:32
crossin先生 发表于 2018-5-2 23:28
数字要你自己输入

谢谢,我一直以为是电脑会自己判定选择。




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