3小时入门Python——第十三课整数算术
在现实生活中,我们经常执行算术运算。他们可以帮助我们计算购买的金额,确定房间的面积,计算排队人数等。程序中使用相同的操作。
基本操作
Python 支持基本的算术运算:
- 加成
+
- 减法
-
- 乘法
*
- 除
/
- 整数除法
//
以下示例显示了它如何处理数字。
print(10 + 10) # 20
print(100 - 10) # 90
print(10 * 10) # 100
print(77 / 10) # 7.7
print(77 // 10) # 7
除法 /
和整数除法之间有区别 //
。第一个产生一个浮点数(例如 7.7
),而第二个产生一个 7
忽略小数部分的整数值(例如)。
如果尝试除以零,Python 会引发错误。
ZeroDivisionError: division by zero
编写复杂的表达式
算术运算可以组合起来以编写更复杂的表达式:
print(2 + 2 * 2) # 6
计算顺序与算术运算规则一致。乘法比加法和减法具有更高的优先级,因此 2 * 2
首先计算运算。
要指定执行顺序,可以使用**括号,**如下所示:
print((2 + 2) * 2) # 8
像算术一样,括号可以嵌套在彼此之间。您也可以使用它们来说明。
减号运算符具有一元形式,可否定值或表达式:
print(-10) # -10
print(-(100 + 200)) # -300
其他作业
除法余数。 Python 模运算符 %
用于获取除法的余数。当您要检查数字是否为偶数时,它可能会派上用场。应用于 2
,它返回 1
奇数和 0
偶数。
print(7 % 2) # 1, because 7 is an odd number
print(8 % 2) # 0, because 8 is an even number
这里还有更多示例:
# Divide the number by itself
print(4 % 4) # 0
# At least one number is a float
print(11 % 6.0) # 5.0
# The first number is less than the divisor
print(55 % 77) # 55
# With negative numbers, it preserves the divisor sign
print(-11 % 5) # 4
print(11 % -5) # -4
将除法的其余部分乘以 0
也会得到 ZeroDivisionError
。
乍看之下,Python 中 mod 函数的行为可能看起来是意外的。虽然 11 % 5 = 1
与 -11 % -5 = -1
当左边两个数字都是相同的符号,11 % -5 = -4
并且 -11 % 5 = 4
如果我们有一个负数。问题是,在 Python 中,其余部分始终与除数具有相同的符号。
在第一种情况下,11 % -5 = -4
由于余数应为负,因此我们需要比较 15 和 11,而不是 10 和 11 :11 = (-5) * (-3) + (-4)
。在第二种情况下,-11 % 5 = 4
其余部分应为正数:-11 = 5 * (-3) + 4
。
求幂。 这是一种将数字提高到幂的方法:
print(10 ** 2) # 100
该操作比乘法具有更高的优先级。
操作优先
总结起来,下面列出了所有考虑的操作的优先级:
- 括弧
- 功率
- 一元减
- 乘法,除法和余数
- 加减
有时,操作具有相同的优先级:
print(10 / 5 / 2) # 1.0
print(8 / 2 * 5) # 20.0
上面的表达式对您来说可能似乎是模棱两可的,因为它们根据操作顺序具有其他解决方案:第一个示例中的一个 1.0
或 4.0
一个,而第二个示例中的一个 20.0
或 0.8
一个。在这种情况下,Python 遵循数学中从左到右的操作约定。知道这是一件好事,所以也请记住这一点!
PEP 时间!
关于二进制运算符的使用,有几件事需要提及,即影响两个操作数的运算符。如您所知,Python 中的可读性很重要。因此,首先,请记住在二进制运算符的两边都加上一个空格:
number=30+12 # No!
number = 30 + 12 # It's better this way
同样,有时人们在二元运算符之后 使用 break 。但这会以两种方式损害可读性:
- 操作员不在同一列中
- 每个运算符已从其操作数移至上一行:
# No: operators sit far away from their operands
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
数学家及其发布者遵循相反的约定,以解决可读性问题。Donald Knuth 在他的“ 计算机和排版” 系列中对此进行了解释 :“尽管段落中的公式总是在二进制运算和关系之后中断,但是显示的公式总是在二进制运算之前中断”。遵循这一传统可使代码更具可读性:
# Yes: easy to match operators with operands
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
在 Python 代码,它是允许前或二元运算后打破,只要约定是局部一致的。对于新代码, 根据 PEP 8,建议使用 Knuth 的样式。