


Python培训
400-996-5531
每个游戏都有某种需要累计的分数;在屏幕上绘制图形时必须使用数字来确定图形的位置和颜色;移动的物体会有方向和速度,这都要用数字来描述。所有有意思的程序几乎都会以某种方式使用数字和数学。所以下面就来学习Pyhton中有关数学和数字的一些基础知识。
四大基本运算
在第1篇中我们已经看到Python可以做一些数学运算:使用加号(+)完成加法,另外使用星号(*)完成乘法。
如你所料,Python使用连字号(-)(也称为减号)来做减法:
由于计算机键盘上没有除号(÷),所以所有程序都使用前斜杠(/)表示除法。
不过有时Python做除法时会得到意外的结果:
所有人都知道
3 / 2 = 1.5
这到底是怎么回事?
我先给你解释下这几个术语
整数(integer)就是我们平常数数时所说的数,如1、2、3等,另外还包括0和负数,如-1、-2、-3等。
小数(decimal number)也称为实数(real number),这些数有小数点而且后面有小数位,如1.25、0.3752和-101.2。
在计算机编程中,小数也称为浮点数(floating-point number,有时简写为floats,或者如果只有一个浮点数,就简写float)。这是因为小数点会“浮动”。如0.00123456或12345.6都是浮点数。
现在我们来看看刚刚那个例子。
因为你输入的3和2都是整数,所以Pyhton认为你同样想要整数作为答案。它会把答案1.5取整为最接近的整数,也就是1。换句话说,Python完成了不带余数的除法。
要解决这个问题,可以这样试试看:
这样就好多了!如果把两个数中的任何一个作为小数输入,Python就会知道你想在答案中保留小部分。
要记住Python的这种整除行为。因为bug或者错误就是经由这样一些途径悄悄出现在你的代码中的。
操作符
+ 、 - 、 * 和 / 符号都称为操作符。这是因为它们会“操作”或处理放在符号两边的数字。
=号也是一个操作符,这称为赋值操作符(assignment operator),因为我们用它为一个变量赋值。
我们再来看看,如果把3乘5次,可以写成:
如果我们要是把3乘100次呢?
要我们写出100次乘法,这很浪费时间。
其实,Python用了一个双星号(**)来表示指数或者将一个数自乘为一个幂。你可以这样写出刚刚上述的例子:
这样键入是不是更容易一些呢!不过用了一个双星号(**)来表示指数,更重要的原因是,可以用来作非整数的指数运算,如下:
而要想利用乘法来做到这一点可不容易。
我们再来看一个除法例子,如果两个数不能整除,最后会得到一个余数(remainder):
7 / 2 = 3 ,余数是1
7 / 2的答案中有一个商(quotient),在这里就是3,还有一个余数1。如果在Python中将两个整数相除,它会给你商。不过余数呢?
Python有一个特殊的操作符来计算整数相除的余数。这称为取余操作符,这个符号是百分号(%)。可以像这样使用:
所以如果同时使用 / 和 %,就可以得到整数相除的完整答案:
可以看到,7除以2得3,余数是1。如果做浮点数除法,会得到小数答案:
以上算术操作符加(+)、减(-)、乘(*)、除(/)、指数(求幂)(**)和取余(%),在程序中需要的99%的操作符就是六个操作符。
自增和自减
操作符:+=(自增)和 -=(自减),在编程中经常出现。我们可以将它们认为是一个赋值运算的简写方式,如:
score = score + 1
我们可以简写成:
score += 1
举例说明一下:
或者
其中第一个例子将number增1(这会从7变成8)。第二个例子将number减去1(从7变成6)。
E记法
我们来试试在IDLE中写下以下两个数字:
27000000000000000000000
和
0.000000000000000000032
看到这么多0,数不数得对还是个问题。
不过,在Python中,我们是可以用E记法来写的。如上两个数字,我们可以写成:
2.7E22或2.7e22
3.2E-20或3.2e-20
这就是E记法,和我们学习的数学一样。
但是,我们不要把指数求幂(**)与E记法(E或e)弄混了。
3**5 表示 3 * 3 * 3 * 3 * 3,等于243。
3e5 表示 3 * 10 * 10 * 10 * 10 * 10,等于30000.0。
我们可以看到E记法是个浮点数。
运算顺序
下面哪一个正确?
2 + 3 * 4 = 20
还是
2 + 3 * 4 = 14
这要看你采用什么顺序来计算。如果先做加法,会得到
2 + 3 = 5
然后得到
5 * 4 = 20
如果先做乘法,就会得到
3 * 4 = 12
然后是
2 + 12 = 14
第二个顺序是正确的,所以正确答案是14。
在数学中有一种运算顺序(order of operation),指定了先计算哪些操作符,后计算哪些操作符,而不管它们的书写顺序如何。
在我们的这个例子中尽管 + 号在 * 号前面,但是应当先算乘法。Python会遵循正确的数学规则,所以它会先做乘法再做加法。可以在交互模式中试试看能不能得到这个结果:
可以看到,Python使用的顺序与你在数学课上学到的规则完全相同。指数运算最优先,然后是乘法,再后面是加减运算。
如果想先算2+3该怎么办呢?
我们只需要在它两边加上括号(()),比如:
这一次,Python会先做2+3(因为有括号),可以得到5,然后再做乘法5*4,得到20。
再强调一次,Python的运算顺序与数学课上讲的是一样的。
END
回顾
用Python如何完成基本数学运算。
整数和浮点数。
求幂(**)。
如何计算取余(余数)。
E记法。
测试题
Python中乘法使用哪个符号?
Python计算8/3的答案是什么?
怎么得到8/3的余数?
怎么得到8/3的小数结果?
Python中计算6*6*6*6的另一种做法是什么?
采用E记法,17 000 000要写作什么?
4.56e-5如果按常规的写法是什么(不是E记法)?
动手试一试
使用交互模式或者编写一个小程序解决下面的问题。
(a)3个人在餐厅吃饭,想分摊饭费。总共花费35.27美元,他们还想留15美分的小费。每个人该怎么付钱?
(b)计算一个12.5mX16.7m的矩形房间的面积和周长。
写一个程序,把温度从华氏度转换为摄氏度。转换公式是C=5/9*(F-32)。(提示:当心整除问题)
你知道怎么计算坐车去某个地方需要花多长时间吗?相应的公式(用文字表述)是“旅行时间等于距离除以速度”。编写一个程序,计算以80km/h的速度行驶200km需要花多长时间,并显示答案。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有