本节目标:
- 掌握Python中的算术运算。
如前所述,Python中的数字也是对象。 一个数的方法有加、减、乘、除等等。
如果我们要画一个正五边形,我们需要知道正五边形 的每个角多少度。一个方法是预先算好, 另一个方法是让Python帮我们算。
Learning By Doing 难度:★ 重要性:★★★★★
- 运行以下代码,观察结果。
x = int(360).__truediv__(5) # 注意前后都是两个下划线
t1.fd(50)
t1.rt(x)
t1.fd(50)
t1.rt(x)
t1.fd(50)
t1.rt(x)
t1.fd(50)
t1.rt(x)
t1.fd(50)
t1.rt(x)
print(type(x))这段代码中,我们首先创建了一个int(整数)类型的对象,参数360
表示这个整数的值是360。
__truediv__是创建出来的这个对象的一个方法,作用是做除法,返回除法的结果并且
再赋值给x。这样,我们就得到了一个五边形的外角度数。
这段代码看起来很蠢,所以Python为我们提供了便利,写成x = 360 / 5就好。
最后我们发现(提示:用type来发现),x的类型是一个浮点型float。
Learning By Reading 难度:★★ 重要性:★★★★★
- 阅读材料,了解Python的运算符
- 以及运算符对应的方法:
运算符相关的魔术方法。
- 它们的用法和
__truediv__类似,比如文章中的第一个函数__eq__,int(1).__eq__(1)即等价于求1 == 1, 求得的结果是一个bool类型(bool类型可以取两个值:真、假)。
- 它们的用法和
为什么必须写int(360).__truediv__(5)却不可以写成360.__truediv__(5)?
这其实跟解释过程中的“词法分析”有关。
"词法分析"是将代码切分成“词”的过程,比如在这里,
360.会被认为是浮点数360.0,因而这行代码变成360.,__truediv__,(,5,)5个词。
浮点数360.后面跟了一个__truediv__,这是不合Python语法的。
但写成(360).__truediv__是可以的,360 .__truediv__(注意空格)也可以,
360..__truediv__也是合法的(浮点数360.的__truediv__方法)。