龙空技术网

青少年Python编程系列7:Python的比较运算、逻辑运算和布尔值

凤城老人 173

前言:

当前你们对“python比较数字”可能比较讲究,同学们都需要分析一些“python比较数字”的相关文章。那么小编同时在网摘上网罗了一些对于“python比较数字””的相关内容,希望咱们能喜欢,你们快快来学习一下吧!

前面我们已经学习了输入和类型转换。现在我们可以使用Python解决一些实际的问题了。我们再引入一个数学的问题,2 + 3和2 × 3的结果谁大谁小?这个问题使用Python如何解决呢?这次的课我们将要讲一下比较运算、逻辑运算和布尔值。

一、布尔值1.1 什么是布尔值

布尔值(bool)由真(True)和假(False)这两个值组成,用于逻辑判断。布尔值的True对应数字1,False对应数字0。

1.2 布尔值与其他类型的转换

布尔值True转换为整数为1、转换为浮点数为1.0

布尔值False转换成整数为0、转换为浮点数为0.0

print(int(True))  # 1print(float(True)) # 1.0print(int(False)) # 0print(float(False)) # 0.0

整数0转换为布尔值为False,其他整数转换为布尔型都为True

浮点数0.0转换为布尔值为False,其他浮点数转换为布尔型都为True

空字符串转换为布尔值为False,其他字符串转换为布尔值都为True

print(bool(0)) # Falseprint(bool(0.0)) # Falseprint(bool(12)) # Trueprint(bool(0.1)) # Trueprint(bool('')) # Falseprint(bool('hello')) # True
二、比较运算符

比较运算符一共有六个:

运算符

作用

==

判断两个值是否相等

!=

判断两个值是否不相等

>

判断左边是否大于右边

<

判断左边是否小于右边

>=

判断左边是否大于或等于右边

<=

判断左边是否小于或等于右边

注意:等于的比较运算符是==,应当与赋值运算符=区分开,不能写错。

比较运算符的结果是布尔值,为True或者False。

例:

3 == 3.0

True

5 != 5

False

6 > 4

True

6 < 4

False

7 >= 6

True

6 <= 6

True

2.1 数字大小的比较

不管是整数还是浮点数,大小的比较与数学上数字的大小完全一致。

print(4.0 == 4) # Trueprint(2 > -1) # Trueprint(10 < -10) # False
2.2 字符串大小的比较

字符串的大小比较的原理来自于Unicode码(具体字符编码的知识在后面的高级课程中会涉及)。在现阶段我们只需要掌握如下规律:

数字 < 大写字母 < 小写字母 < 汉字

同样是大写字母(小写字母)的,按照英文字母表的顺序,前面 < 后面

字符串大小比较按照逐一比较的原则来比较大小。第一个字符不一样,即直接比较出大小,无论后面还有什么字符;第一个字符一样,则比较第二个字符,第二个字符不一样,即比较出大小;以此类推。

我们来看一下具体示例:

'123'

<

'abc'

数字 < 字母

'ABC'

<

'abc'

小写字母 < 大写字母

'ABC'

<

'BCD'

字母A在字母B前面

'ABC'

<

'ACD'

第一个字母相同,比较第二个字母

'12'

>

'111'

第一个字符都是1,第二个字符2>1

'AB'

>

'A'

第一个字符相同,右边没有第二个字符,左边大

三、逻辑运算符

逻辑运算符一共有三个,与(and)、或(or)、非(not)。

3.1 not运算符

not运算符是取反,not True结果为False、not False结果为True

大家可以思考一下,以下代码的运算结果是什么?

print(not 2)print(not '')

前面讲过,非0的数字都是True,因此not 2的结果是False;空字符串是False,因此not ''的结果是True。

3.2 or运算符

or是逻辑或,如果两边都是False,结果为False;只要有一个为True,结果就为True。

print(True or True) # Trueprint(True or False) # Trueprint(False or True) # Trueprint(False or False) # False

如果两边的值都是布尔值,or运算符非常好理解。但如果两边出现数字,就要说一下Python在处理or运算符的原理了。Python中采用一种非常“懒惰”的方式计算or运算符,如果左边的值为True,那运算结果一定是True,Python就不会看右边的值了;如果左边的值为False,那就要看右边的值是True还是False。说起来有点抽象,我们具体看一下下面几个运算式的结果。

print(2 or 4) # 2print(3 or 0) # 3print(0 or 6) # 6print(0 or 0) # 0

我们看第一行和第二行,左边的数字为非0,转换成布尔型是True,因此不再看右边的值,因此结果就等于左边的值;再看第三行和第四行,左边的数字为0,转换成布尔型是False,因此看右边的值,右边的值为多少最后的结果就是多少。

3.3 and运算符

and是逻辑与,如果两边都是True,结果为True;只要有一个为False,结果就为False。

print(True and True) # Trueprint(True and False) # Falseprint(False and True) # Falseprint(False and False) # False

如果两边的值都是布尔值,and运算符非常好理解。如果两边出现数字,又要提到Python在处理and运算符的原理了。Python中同样使用“懒惰”的方式处理and运算符。如果左边的值为False,那结果一定为False,Python就不会看右边的值了;如果左边的值为True,那就要看右边的值是True还是False。同样我们看下面几个运算式的结果。

print(5 and 8) # 8print(5 and 0) # 0print(0 and 7) # 0print(0 and 0) # 0

先看第一行和第二行,左边的值为非0,转换成布尔型是True,因此需要看右边的值,右边的值是什么结果就是什么;再看第三行和第四行,左边的值为0,转换成布尔型为False,因此不再需要看右边的值,左边的值是多少结果就是多少。

3.4 逻辑运算符的优先级

逻辑运算符中,优先级最高的是not,其次是and,最后再算or。

以True or not True and False为例:

① True or not True and False

② True or False and False

③ True or False

④ True

四、运算符的优先级

我们到目前为止,学了算术运算符、比较运算符和逻辑运算符。我们最后整体看一下所有运算符的优先级关系。

整体优先级为:算术运算符 > 比较运算符 > 逻辑运算符

运算符

描述

**

算数运算符——幂运算

*、/、%、//

算数运算符——乘、除、取模、整除

+、-

算数运算符——加、减

<、<=、>、>=、==、!=

关系运算符

not

逻辑运算符——非运算

and

逻辑运算符——与运算

or

逻辑运算符——或运算

五、课后思考题

1、假设a=20,b=3,那么a or b的结果是( )

A. 20 B. False C. True D. 3

2、已知x=5,y=6,则表达式not(x!=y)的值为( )

A. True B. False C. 5 D. 6

3、在下面的运算符中,按照运算优先级,哪一个是最高级?( )

A. ** B. * C. + D. //

4、假设a=2,b=1,c= a and b-1,那么c的值是( )

A. 3 B. 1 C. 2 D. 0

5、print(2*3 > 4*2 or 121>12 and 7%3 == 4%3)的结果是( )

A. False B. True C. 3 D. 4

6、编程题

小明带了100元钱去文具店买本子,已知每本本子的单价是3.3元。输入购买的本子的数量,计算小明身上的钱够不够。如果够,输出True;如果不够,输出False

输入:

一行输入,输入本子的数量

输出:

True或者False

六、上节课思考题答案

1、10

2、参考代码:

a = input("请输入长:")b = input("请输入宽:")a = float(a)b = float(b)s = a * bprint(s)

标签: #python比较数字 #python比较数字大小函数