Possible Duplicate:
What is the reason for having ‘//’ in Python?
当我试图做一个关于数字求和的练习时,我偶然发现了这个解决方案:
def sum_digits(n):
import math
total = 0
for i in range(int(math.log10(n)) + 1):
total += n % 10
n //= 10
return total
我的问题是,倒数第二行是做什么的?这是怎样正确的语法?
Tags:
它实现了所谓的
floor division
。Floor division(这里用//
表示)截断小数并返回整数结果,而“normal”division返回您可能“期望”的答案(带小数)。在Python3.x中,这两个操作符之间的区别更大,这意味着这两个操作符返回的结果不同。下面是使用Python3的示例:在Python 3.x之前,这两者没有区别,除非您使用特殊的内置
from __future__ import division
,这使得除法运算符的执行与python3.x中的一样(这是使用Python 2.6.5):因此,当您看到类似
n //= 10
的内容时,它使用的是您可能已经看到的相同的+=
/-=
/*=
/etc语法,其中它接受n
的当前值,并在等号之前执行操作,将以下变量作为第二个参数,将结果返回到n
。例如:第二行到最后一行是运算符的组合,在某种程度上,包括一个不常见的运算符,这就是它有点混乱的原因。
我们把它分开吧。
首先,Python中的
//
是floor division,基本上是除法四舍五入到最接近的整数。因此最后,之所以有
=
是因为Python语法允许对变量执行操作,然后立即将结果重新分配给变量。您可能在+=
中最常见的情况是:在这种情况下,
//=
表示“执行floor division,floor除以第二个参数,然后将结果赋给原始输入变量。”因此://
是楼层划分运算符。它总是将返回值截断为小于或等于答案的最大整数。相关问题 更多 >
编程相关推荐