Python编程
现在我们知道如何处理数字和字符串了,让我们写一个实际有用的程序!假设你想知道自己的体重(单位:英石)。一个简洁的程序可以轻松完成这个任务。因为1英石等于14磅,而1千克大约等于2.2磅,所以以下公式可以帮我们计算:
\(mstone=mkg×2.214m_{stone} = \frac{m_{kg} \times 2.2}{14}\)
让我们把这个公式转化为程序!
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 | a × b | 乘法 |
a / b | a ÷ b | 除法 |
a // b | ⌊a ÷ b⌋ | 向下取整除法 |
a % b | a mod b | 取余 |
-a | -a | 负值 |
abs(a) | a | |
a ** b | a^b | 指数 |
math.sqrt(a) | √a | 平方根 |
注意:
要使用 math.sqrt()
函数,你需要显式地导入 math
模块。写上 import math
即可。此外,关于其他通过该语句提供的函数,详情请见文档。
浮点数的四舍五入误差
由于浮点运算的局限性,四舍五入错误可能导致一些意想不到的结果。例如:
>>> print(0.6 / 0.2)
3.0
>>> print(0.6 // 0.2)
2.0
对于 Python 2.x 系列,/
对整数和长整型执行“向下取整除法”,而对浮点数和复数执行“真除法”。而在 Python 3.x 中,/
对所有类型执行“真除法”。
这种问题的修复方法是使用 round()
函数对正常的除法结果进行四舍五入,因为 Python 中的错误导致 round(0.5)
向下舍入。
运算顺序
Python 使用标准的运算顺序(PEMDAS)来进行数学运算,类似于高中或中学代数和几何中的运算顺序。即,数学表达式的求值顺序如下(许多人用 PEMDAS 记住这个顺序),也适用于括号中的运算。
运算名称 | 语法 | 说明 | PEMDAS 记忆法 |
---|---|---|---|
括号 | ( ... ) | 在进行其他操作之前,Python 需要先评估所有括号中的内容 | Please |
指数 | ** | 由于指数是乘法或除法的简写,因此它应该先被计算 | Excuse |
乘法和除法 | * / // % | 乘法和除法应该先进行 | My |
加法和减法 | + - | 然后进行加法和减法 | Dear |
格式化输出
在做数学时,理想情况下我们希望得到整洁的数字。遗憾的是,现实世界中的数字并不总是那么整齐。例如,下面的计算结果是很长且难看的数字:
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.")
要了解更多格式化选项,请参阅输入和输出章节中的格式化部分。