【Python入门】Python变量和数据类型(二)

3. Python变量和数据类型

3.3 Python的整数与浮点数

四则运算
整数、浮点数可以直接进行四则运算
在Python中,整数和浮点数虽然属于不同的数值类型,但是在运算上是可以一起运算的

  • 加法
num1 = 10
num2 = 0.5
result = num1 + num2
print(result) # ==> 10.5
  • 减法
result = num1 - num2
print(result) # ==> 9.5
  • 乘法
result = num1 * num2
print(result) # ==> 5.0
  • 除法
result = num1 / num2
print(result) # ==>20.0

从上面可以发现一个规律,整数和浮点数运算后 ,得到的结果不管小数点后是否有值,结果都变成浮点数了,这是合理的,浮点数可以表达整数的结果,但是整数不能表达浮点数的结果。
注意:在Python2使用除法可能和Python3得到不一样的结果

python2

num1 = 10
num2 = 3
result = num1 / num2
print(result) # ==> 3

python3

num1 = 10
num2 = 3
result = num1 / num2
print(result) # ==> 3.3333333333333335

可以看到在python2,得到的是一个整数的结果,这是因为除数和被除数都是整数时,得到的结果也默认保存为整数了,这是非常不科学的,因此在python3,改进了这一点。

  • 取模运算

Python数字支持取模运算,使用百分号%表示取模。

print(3 % 2) # ==> 1
print(33 % 10) # ==> 3
print(99 % 30) # ==> 9

恰当使用取模运算,可以判断一个数是否为偶数,当一个数对2取模结果为0时,则这个数为偶数,否则为奇数。

print(3 % 2) # ==> 1 因此3为奇数
print(33 % 2) # ==> 1 因此33为奇数
print(100 % 2) # ==> 0 因此100为偶数
  • 地板除

地板除得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//进行。

10//4 # ==> 2
10//2.5 # ==> 4.0
10//3 # ==> 3
  • 使用round保留两位小数

小数点位数

使用Python计算小数的时候,经常需要保留小数点后若干位,可以使用round()函数来处理,这里先了解round的调用方式,使用两个参数,第一个是需要保留小数点位数的数值,第二个是保留的位数。

num = 10 / 3
print(num) # ==> 3.3333333333333335
round(num, 2) # ==> 3.33

示例:

一个长方形的长为3.14cm,宽为1.57cm,请计算这个长方形的面积,保留小数点后两位。

length = 3.14
width = 1.57
result = round(length * width, 2)
print(result)

3.4 Python的布尔类型的运算

前面我们了解到,布尔类型是Python的基础数据类型,布尔类型只有True和False两种值

  • 与运算

只有两个布尔值都为 True 时,计算结果才为 True。

True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
  • 或运算

只要有一个布尔值为 True,计算结果就是 True。

True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
  • 非运算

把True变为False,或者把False变为True:

not True # ==> False
not False # ==> True

计算机程序是由无数的逻辑分支组成的,通过布尔运算,可以在计算机中实现条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码,因此学习布尔运算也是非常有必要的

  • 特别的

在Python中,布尔类型还可以与其他数据类型(字符串,数字等)做 and、or和not运算,请看下面的代码:

a = True
print(a and 0 or 99) # ==> 99

得到的计算结果不是布尔类型,而是数字99,这是为什么呢?

因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True,所以:

True and 0计算结果是0
继续计算0 or 99计算结果是 99
因此,结果是99。
需要注意的是,not计算的优先级是高于and和or的。

True and not False # ==> True

在上述布尔计算中,先计算not False = True,然后再计算True and True,因此得到True的结果。

  • 短路计算

在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

示例
请运行如下代码,并解释打印的结果:

a = 'python'
print('hello,', a or 'world')
b = ''
print('hello,', b or 'world')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42473228/article/details/125582727