阿萌在做一道数学题,题目是这样的:

阿萌根据题意列出了该数学题的代数式:

用绳子的长度a减去a的2/5就是剩余的绳子长度。
1、用Python求绳子剩余的长度
阿萌要用Python来求绳子剩余的长度。他写下了算法的步骤:
第一步:创建变量a,a的值为30;第二步:创建变量b,b的值为a的2/5;第三步:创建变量remain,remain的值为a-b;第四步:输出变量remain。
同时,他也绘制了算法的流程图:

在阿萌绘制的流程图中,将算法的文字步骤转换为Python语句。流程图的第二个步骤,将2/5转换为小数0.4(Python需要对分数进行特殊处理,分数放到后面再讲)。

阿萌在Shell窗口按照流程图的步骤,输入下面的Python语句:
>>> a = 30 >>> b = a * 0.4 >>> remain = a - b >>> print(remain)

阿萌在Shell窗口输入了四条语句:第一条语句是创建变量a,并赋值为30,表示绳子的长度为30;第二条语句创建变量b,将绳子长度的0.45倍赋值给变量b;第三条语句创建变量remain,将绳子的长度a与变量b的差赋值给变量remain;第四条语句使用print函数输出变量remain的值到Shell窗口。

2、用复合赋值运算优化代码
优化代码是指在不改变程序运行结果的基础上,对原来的代码进行改动,使代码生成的程序运行时间更短、占用存储空间更小。
阿萌对自己编写的代码进行了优化:

优化前的代码有四条语句,使用了三个变量,优化后的代码有三条语句,仅使用了一个变量。显然优化后代码生成的程序运行速度快、占用空间小。

优化后的代码语句:
a -= a * 0.4
实际上是将两条语句合并为一条语句,并省略了变量b和remain:

“-=”为复合赋值运算符,它把减法运算符“-”和赋值运算符“=”合二为一,它先求出运算符左侧变量的值与算术表达式a*0.4的差,然后将差赋值给变量a。

3、复合赋值运算符
复合是结合的意思,复合赋值就是结合算术运算符对变量进行赋值,被赋值的变量首先使用算术运算符与右侧的数值或算术表达式进行运算,然后将运算结果再赋值给变量。

赋值运算符可以和所有的算术运算符结合构成复合赋值运算符,运算效果等同于上图的“+=”复合赋值运算符。

在复合赋值运算符表格中,“例子”一栏中a是变量。运算顺序是先执行算术运算,然后再执行赋值运算。运算符右侧的操作数可以是数值、也可以是算术表达式,算术表达式的运算顺序同数学运算顺序一致。
了解了复合赋值运算符,阿萌要做下面的练习,请同学们一起来做!

在Shell窗口输入a+=30,因为变量a的当前值为20,a += 30赋值语句执行后,a的值为50。

在Shell窗口输入a+=30,因为变量a的当前值为20,a += 30赋值语句执行后,a的值为50。

在Shell窗口继续输入赋值语句a*=3,因为当前变量a的值为20,执行输入的赋值语句后,a的值变为60。

在Shell窗口继续输入赋值语句a/=3,该语句将a除以3的结果再赋值给a,当前变量a的值为60,执行该赋值语句后,变量a的值为20。

变量a的当前值为20,a+=a-10赋值语句执行后,a的值为30。该语句会先执行“+=”运算符右侧的算术表达式a-10,算术表达式计算结果为10,然后再执行a+=10。

4、课程小结
复合赋值就是对要赋值的变量先运算后赋值,对变量进行复合赋值时,要使用复合赋值运算符。复合赋值的主要作用是优化代码,使代码生成的程序运行时间更短、占用存储空间更小。但复合赋值也有自身的缺点,因为代码过于简化和一些变量的省略,让代码变得不容易理解。
具体编写程序时,要根据程序的具体要求,来判断是否使用复合赋值语句。如果程序要求运行效率高,存储空间小,建议对一些参与运算的变量使用复合赋值。
5、上机练习
在Shell窗口创建变量a和b,变量a的值为5,变量b的值为3。分别连续输入下面的复合赋值语句,执行并查看结果。
(1)a+=b*3
(2)b/=3
(3)b*=a%3