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) |
平方根 |
注意,由于 浮点数运算 的限制,舍入误差可能会导致意外结果。例如
>>> 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.2
是 2.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.")
要了解有关更多格式化选项的信息,请参阅输入和输出章节中的 格式化 部分。