Hi 大家好,我是王可乐。上一节课里,可乐带大家了解了 Python 中的数字、数字类型以及变量。在这一节课里,可乐继续为大家介绍 Python 中的运算。
首先,我们先来看一下最简单的四则运算,也就是加减乘除。在前面的课程中,我们已经反复看到了这个运算 6 * 7,其中星号表示乘法运算。此外,我们常见的 + 号和 - 号可以对数值进行加减运算,除法运算的符号是 /,此外还有一个取整除法双 //。
我们一起来试一下:输入 1 + 1,回车,确实等于 2;输入 2 - 3,回车,看到是 -1;输入 5 / 4,回车,可以看到,两个整数相除得到了浮点数 1.25,我们可以验证一下,输入 x = 5 / 4,回车,然后检查一下 type(x),结果类型确实是float。说到除法和浮点数,可乐有必要提醒大家一下,在计算机中浮点数的表示是有精度限制的,也就是说无法表示任意精度的小数。例如我们计算一下 5 / 3,结果应该是无限循环的 1.无限个6...,但是 Python 由于精度的限制只能表示有限位,因此结果就变成了 1.6666……7。
以上这些运算都是比较直观的,另一个特殊的除法称作取整除法,我们来 看一下:输入 5 // 4,回车,结果竟然是 1;而 6 // 7 呢,结果是 0。并且我们 可以看一下,输入 type(5 // 4),结果还是 int 类型。这是怎么回事呢?
这里可乐要为大家介绍一点古老的计算机历史。在 Python2 以及很多早期的编程语言中,整数的除法默认都是只能得到整数结果的。
除了四则运算,Python 还支持另外两个算术运算符,它们分别是 % 表示的取模运算和 ** (念两个星号)表示的求幂运算。我们来分别看一下:
取模运算和另一种称作取余运算的运算一起,都是对除法求余数的运算,它们的不同点在于做除法运算时对商的选取方法不同。不过在我们的初级课程中,你只需要知道正整数取模这一种运算就可以了。如果你有兴趣,可以在课后自己搜索一下取余和取模运算,以及负整数、实数的取模取余运算规则。
我们只来看一下正整数。在我们的 Python Shell 里,输入 7 % 3,回车,可以看到结果为 1。这是什么意思呢,很简单,就是说 7 除以 3 的余数是 1。我们再来看一下,42 % 6,回车,可以看到结果为 0,也就是说 42 除以 6 余数为 0,可以整除。
在日常开发中,取模计算最常见的应用应该算是判断奇数偶数了。例如我们定义变量 x,输入 x = 42,然后继续输入 x % 2,看到结果是 0,那么 42 是偶数;再试一个,x = 13,x % 2 回车,结果显然为 1。
另一种计算叫做求幂,也就是我们常说的求次方,这个运算用两个紧挨着的星号来表示。例如我们试一下输入:2 ** 10,回车,也就是说 2 的 10 次方等于 1024。和数学上一样,实数域上都可以进行求幂运算,例如 4 的 0.5 次幂(边念边输入 4 ** 0.5),结果是 2.0。
说完了这些数学运算符,和大家接触过的基础数学知识是不是非常像呢?下面我们再来看一下另一种运算符,称作赋值运算符,赋值运算符用 = 表示,但是它和我们在数学里常见的等号可不是一回事。
在前面的课程中,可乐为大家介绍过变量的概念。例如我们输入 x = 2,回车。这时我们说定义了一个变量 x,这个操作除了定义,还使得 x 的值为 2。如果我们再输入 x = 3,那么这个语句就是将 x 赋值为 3 了。
赋值运算和数学中等号的区别在于,Python 中只能给变量赋值。也就是说等号左边必须是一个变量,而等号右边则必须能够计算出来一个合法的值。赋值运算的功能就是将等号右边计算出来的值赋予左边的变量。
例如,我们可以写出 x = 1 + 1,y = x ** 2 这样的赋值语句。我们来看一下,输入 x 回车,值为 2;输入 y 回车,值为 4。而如果我们尝试输入 1 = x,或者 1 = 1,Python 解释器会向我们提示说存在 SyntaxError,也就是语法错误,因为等号左边不是一个变量。再比如我们尝试输入 x = not_exist * 2,这时 Python 解释器向我们提示发生了 NemaError,因为等号右边的变量 not_exist 是不存在的,自然无法求值。而如果我们输入 x = x + 1,Python 就不会报错了。虽然把 x = x + 1 看做一个数学式子的话很荒谬,但是我们要理解这里的等号并不等同于数学上的等号。这个表达式要从右向左理解,它是先把变量 x 的值拿出来,这时 x 是 2,然后计算 2 + 1 得到结果为 3,再把 3 这个结果赋予给变量 x。所以我们现在输入 x 回车,发现 x 已经变成 3 了。
赋值运算和上面的数学运算结合,有一些简便的写法。例如我们可以输入 x += 1,这个操作符的实际效果等效于上面这个 x = x + 1;回车,这时我们看 x(输入),回车,发现 x 的值已经等于 4 了;类似的,还可以使用 x -= 2,回车,然后我们看 x 这时已经是 2 了;继续,x *= 6,回车,可以看到 x,这时已经等于 12;然后 x /= 3,回车,我们发现这时 x 变成了 4.0。同样地取整除法,取模和求幂运算都支持这种简写方式,大家不妨在自己的 Python Shell 里试一试吧。
另一个 Python 中常见的数学运算是比较运算,这些也是我们在数学中常见的运算,包括等于、不等于、大于、小于、大于等于和小于等于。使用比较运算可以写出来比较语句,例如:
我们先重新给变量 x 赋值为 1 (边说边输入 x = 1,回车)。然后输入 x == 1,回车,可以看到结果为 True,这里两个等号连写就不再是赋值操作,而是比较操作了。上面这个语句的意思是比较 x 是否等于 1,结果为 True,也就是 x 确实等于 1;然后我们再试一下 2 == x,回车,结果是 False。我们再来试一下其他的操作符,如 3 != x,意思是比较 3 是否不等于 x,答案是 True,因为 x 确实不等于 3;然后输入 x > 0,回车,答案为 True;再输入 x = 1,答案是 True,这个操作符比较左边是否大于或者等于右边;与之对应的还有(输入) x
除了数学计算,可乐再为大家介绍 Python 编程中另一个常见的计算,也就是逻辑运算——与、或、非。在 Python 中,逻辑运算操作符就使用它们对应的英语单词,与就是 and,或就是 or,而非就是 not。
逻辑运算的对象是布尔值,也就是上面我们见到过的 True 和 False。和整数是 int 类型,浮点数是 float 类型类似,布尔值在 Python 中的类型是 bool 类型。例如,我们输入 type(False) 回车,就可以看到 False 是 bool 类型。我们上面介绍的比较运算符进行的比较运算就会产生 bool 类型的结果 True 或者 False,
例如我们试一下 type(2 > 1),它的结果就是 bool 类型。
布尔值和逻辑运算非常简单,例如我们输入 not True,结果就是 False;输入 True and False,结果是 False;而输入 True or False 结果则是 True。如果你还不熟悉逻辑运算的规则,那么请自行搜索一下,或者复习一下中学数学里的相关内容哦。
在计算机的世界里,经常使用数字 1 表示 True,数字 0 表示 False。在 Python 中,如果你对 True 和 False 做一些奇怪的数学计算,那么 Python 就会把 True 当作 1,False 当作 0。例如我们看一下 True * 2,回车,结果是 2;而 True + False,回车,结果是 1。可乐不建议你这么来写代码,因为大部分情况下这种代码并没有什么意义。
事实上,and, or 和 not 逻辑运算符也不止能对布尔值进行运算,还能对数字数值进行运算。在我们的初级课程里,可乐就不为大家介绍这些了,我们先学会基本的用法即可。
除了上面介绍到的这些之外,Python 中还有身份运算符 is,成员运算符 in 以及位运算符。这些内容需要后续的知识来帮助大家理解,因此可乐会把他们放在后面的课程中。
好了,本节课的内容我们就先介绍到这里。通过这节课的内容,我们了解了 Python 中的数学许多基础运算,以及非常常见的赋值运算。到这里,Python Shell 对你而言已经成为了一个顺手而好用的计算器。可乐希望大家多和 Python Shell 一起玩耍,熟悉一下 Python 语言的这些特性。
在下一节课程中,我们会暂时告别这些数学计算,可乐将为大家介绍 Python 中另一个非常重要的概念——字符串。敬请期待哦,我们下期见。
往期课程:
《
0基础学Python之二:玩个小游戏
》
《0基础学Python之一:什么是程序?》
领取专属 10元无门槛券
私享最新 技术干货