更多课程 选择中心


Python培训

400-111-8989

如何用Python做些基本的数学运算

  • 发布:Rambo
  • 来源:Python之父
  • 时间:2018-02-09 16:40

         每个游戏都有某种需要累计的分数;在屏幕上绘制图形时必须使用数字来确定图形的位置和颜色;移动的物体会有方向和速度,这都要用数字来描述。所有有意思的程序几乎都会以某种方式使用数字和数学。所以下面就来学习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记法。

测试题

  1. Python中乘法使用哪个符号?

  2. Python计算8/3的答案是什么?

  3. 怎么得到8/3的余数?

  4. 怎么得到8/3的小数结果?

  5. Python中计算6*6*6*6的另一种做法是什么?

  6. 采用E记法,17 000 000要写作什么?

  7. 4.56e-5如果按常规的写法是什么(不是E记法)?

动手试一试

  1. 使用交互模式或者编写一个小程序解决下面的问题。

    (a)3个人在餐厅吃饭,想分摊饭费。总共花费35.27美元,他们还想留15美分的小费。每个人该怎么付钱?

    (b)计算一个12.5mX16.7m的矩形房间的面积和周长。

  2. 写一个程序,把温度从华氏度转换为摄氏度。转换公式是C=5/9*(F-32)。(提示:当心整除问题)

  3. 你知道怎么计算坐车去某个地方需要花多长时间吗?相应的公式(用文字表述)是“旅行时间等于距离除以速度”。编写一个程序,计算以80km/h的速度行驶200km需要花多长时间,并显示答案。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:在linux系统中搭建Python环境
下一篇:教你用python群发微信新年祝福

Python IDE推荐7个你可能会错过的Python IDE

Python面试题之Python中爬虫框架或模块的区别

2021年Python面试题及答案汇总详解

python数据分析,你需要这些工具

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省