2013-01-21 60 views
32

斜槓我碰到這個示例代碼來自一個radix sort兩個前鋒在Python

def getDigit(num, base, digit_num): 
    # pulls the selected digit 
    return (num // base ** digit_num) % base 

什麼是「//」做在Python?

+0

的可能的複製[什麼在Python 「可變// =值」 語法意思?](http://stackoverflow.com/questions/40274205/what -does-the-variable-a-value-syntax-mean-in-python) – smci

回答

41

//是地板師的操作員。它產生其操作數的商的底線,對整數操作數沒有浮點舍入。這有時也稱爲整數除法,即使您可以將它與浮點數一起使用,因爲默認情況下用整數除以/來完成此操作。

在Python 3中,即使兩個操作數都是整數,普通的/除法運算符也會返回浮點值,因此需要使用不同的運算符進行平面分割。這不同於Python 2,其中/如果兩個操作數都是整數,並且浮點除法(如果至少一個操作數是浮點值),則執行floor division。

//運算符最初是在Python 2.2中進行前向兼容性時才確定的,因爲Python 3應該具備這種新功能。連同啓用通過from __future__ import division(Python 2.2中還引入)是Python 3的行爲的能力,這使您可以編寫Python 3兼容的代碼在Python 2

+0

要通過@DSM添加到評論中,''//'表示python2.x中的整數除法。如果你想做整數除法,你應該使用''而不是'/'而不管你正在使用的是什麼版本的Python。 – mgilson

+1

它向負無窮(即比例的底面)四捨五入。對於負數,它與C中的整數除法不同,該整數除以零。 http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html –

4

你可以只是嘗試:

In []: 5/2 
Out[]: 2 

In []: 5.0/2 
Out[]: 2.5 

In []: 5.0//2 
Out[]: 2.0 

這應該是不言自明的。

(這是在Python 2.7。)

+4

-1:找出問題的一種方法是通過試驗和錯誤。另一個是問。 – DilithiumMatrix

+0

回答問題的一種方法是直接給出答案,另一種方法是指向方向。我做了兩個順便說一句。 – LWZ

+0

我只是想給你一個downvote和一些反饋人的解釋。基於-1的答案,與+13的接受...我認爲很多人都認爲你實際上都沒有。 (直接或方向)。 – DilithiumMatrix