跳转到内容

Python 编程/基础数学

来自维基教科书,开放书籍,开放世界


现在我们已经知道如何使用数字和字符串了,让我们编写一个可能真正有用的程序!假设你想知道你的体重是多少石。一个简洁的程序可以轻松完成这个任务。由于 1 石等于 14 磅,而 1 公斤大约等于 2.2 磅,因此以下公式应该可以做到这一点

所以,让我们把这个公式变成一个程序!

mass_kg = int(input("What is your mass in kilograms?" ))
mass_stone = mass_kg * 2.2 / 14
print("You weigh", mass_stone, "stone.")

运行这个程序,获取你的体重(以石为单位)!请注意,应用公式就像输入几个数学语句一样简单

mass_stone = mass_kg * 2.2 / 14

数学运算符

[编辑 | 编辑源代码]

以下是一些常用的数学运算符

语法 数学 运算名称
a+b 加法
a-b 减法
a*b 乘法
a/b 除法(参见下面的备注)
a//b 向下取整 除法(例如 5//2=2) - 在 Python 2.2 及更高版本中可用
a%b 取模
-a 负值
abs(a) 绝对值
a**b 指数
math.sqrt(a) 平方根

备注
为了使用 math.sqrt() 函数,你必须明确告诉 Python 你希望它加载数学模块。为此,请在你的文件顶部写入

import math

有关此语句提供的其他功能,请参见 此处.

注意,由于 浮点数运算 的限制,舍入误差可能会导致意外结果。例如

 >>> print(0.6/0.2)
 3.0
 >>> print(0.6//0.2)
 2.0

对于 Python 2.x 系列,/ 对整数和长整数进行“向下取整除法”(例如 5/2=2),但对浮点数和复数进行“真除法”(例如 5.0/2.0=2.5)。对于 Python 3.x,/ 对所有类型进行“真除法”。[1][2]

可以通过在常规除号周围放置 round([math]-0.5) 来解决此问题,因为 Python 错误导致 round(0.5) 向下取整。

运算符 // 始终执行欧几里得(或整数类型)除法,其中包括商项(从 // 运算符获得)和余数项(从 % 运算符获得)。在前面的示例中,我们已经看到商项 0.6 // 0.22.0,这可以通过扩展上面的示例来验证

 >>> 0.6 == 0.2 * ( 0.6 // 0.2 ) + 0.6 % 0.2
 True
 >>> 0.6 // 0.2
 2.0
 >>> 0.6 % 0.2
 0.19999999999999996

/// 运算符应用于小数时,它们之间的区别是由于 Python 中存储小数的方式以及舍入方式造成的。

 >>> print(0.6 / 0.2)
 3.0
 >>> 0.6 / 0.2
 2.9999999999999996
 >>> 2.0 + ( 0.6 % 0.2 ) / 0.2
 3.0
 >>> 0.6 / 0.2 == ( 0.6 // 0.2 ) + ( 0.6 % 0.2 ) / 0.2
 False
 >>> round( 0.6 / 0.2 ) == ( 0.6 // 0.2 ) + ( 0.6 % 0.2 ) / 0.2
 True

运算顺序

[编辑 | 编辑源代码]

Python 使用高中或中学代数和几何课上教授的标准运算顺序。也就是说,数学表达式按以下顺序计算(许多人将其记忆为 PEMDAS),这也适用于括号。

(请注意,在同一表格行中共享的运算从左到右执行。也就是说,在没有括号的情况下,位于乘法左侧的除法在乘法之前执行,仅仅因为它位于左侧。)

名称 语法 描述 PEMDAS 助记符
Parentheses(括号) ( ... ) 在对任何其他内容进行运算之前,Python 必须从最内层开始评估所有括号。(这包括函数。) Please(请)
Exponents(指数) ** 由于指数只是简短的乘法或除法,因此应在它们之前进行评估。 Excuse(原谅)
Multiplication(乘法)和

Division(除法)

* / // % 再次强调,乘法是快速加法,因此必须先进行。 My

Dear

Addition and

Subtraction

+ - Aunt

Sally

格式化输出

[编辑 | 编辑源代码]

如果我们在进行数学运算时总是使用漂亮的整数,那该多好啊?不幸的是,现实世界并不像我们希望的那样整洁。有时,我们会得到像下面这样的长而难看的数字

What is your mass in kilograms? 65
You weigh 10.2142857143 stone.

默认情况下,Python 的 `print` 语句将数字打印到小数点后 10 位。但是,如果您只需要一位或两位呢?我们可以使用 `round()` 函数,它将数字四舍五入到您选择的位数。`round()` 接受两个参数:您要四舍五入的数字,以及要四舍五入的小数位数。例如

>>> print (round(3.14159265, 2))
3.14

现在,让我们更改程序,只将结果打印到小数点后两位。

print ("You weigh", round(mass_stone, 2), "stone.")

这也展示了嵌套函数的概念。如您所见,您可以将一个函数放在另一个函数中,一切仍然按您的预期工作。如果您不喜欢这样做,您可以始终使用多个变量,而不是

twoSigFigs = round(mass_stone, 2)
numToString = str(twoSigFigs)
print ("You weigh " + numToString + " stone.")

要了解有关更多格式化选项的信息,请参阅输入和输出章节中的 格式化 部分。

  1. Python 2.2 中的新增功能
  2. PEP 238 - 更改除法运算符
华夏公益教科书