2013-01-21 73 views
32

Tôi đã xem qua mẫu mã này từ một radix sort:Hai dấu gạch chéo bằng Python

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

Gì '//' làm bằng Python?

+0

có thể trùng lặp của [Gì "biến // = giá trị" cú pháp có nghĩa là bằng Python?] (Http://stackoverflow.com/questions/40274205/what -does-the-variable-a-value-syntax-mean-in-python) – smci

Trả lời

41

// là toán tử phân chia tầng. Nó tạo ra sàn của thương số của các toán hạng của nó, mà không làm tròn dấu chấm động cho các toán hạng số nguyên. Điều này cũng đôi khi được gọi là phân chia số nguyên, mặc dù bạn có thể sử dụng nó với phao, bởi vì chia các số nguyên với / được sử dụng để làm điều này theo mặc định.

Trong Python 3, toán tử phân chia / bình thường trả về giá trị dấu phẩy động ngay cả khi cả hai toán hạng là số nguyên, do đó cần có toán tử khác để chia tầng. Điều này khác với Python 2, trong đó / phân chia tầng thực hiện nếu cả hai toán hạng là số nguyên và phân chia dấu phẩy động nếu ít nhất một trong các toán hạng là một giá trị dấu phảy động.

Toán tử // lần đầu tiên được giới thiệu để tương thích về phía trước trong Python 2.2 khi quyết định rằng Python 3 sẽ có khả năng mới này. Cùng với khả năng kích hoạt các hành vi Python 3 qua from __future__ import division (cũng được giới thiệu trong Python 2.2), điều này cho phép bạn viết mã Python 3 tương thích trong Python 2.

+0

Để thêm vào nhận xét bởi @DSM - '//' có nghĩa là phân chia số nguyên trong python2.x. Nếu bạn muốn làm phân chia số nguyên, bạn nên sử dụng '//' thay cho '/' bất kể phiên bản trên python bạn đang sử dụng. – mgilson

+1

Nó tròn về phía vô cực (tức là sàn tỷ lệ). Đối với các số âm, nó khác với số nguyên trong C, làm tròn về 0. http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html –

4

Bạn có thể chỉ cần thử nó:

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

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

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

Điều này phải tự giải thích.

(Đây là bằng Python 2.7.)

+4

-1: Một cách để tìm ra điều gì đó là bằng thử và sai. Khác là bằng cách hỏi. – DilithiumMatrix

+0

Một cách để trả lời câu hỏi là đưa ra câu trả lời trực tiếp, một cách khác là chỉ hướng. Tôi đã làm cả BTW. – LWZ

+0

Tôi chỉ đang cố gắng cung cấp cho bạn một lời giải thích cho downvote và một số người phản hồi. Dựa trên -1 cho câu trả lời của bạn, so với +13 cho chấp nhận ... Tôi nghĩ rất nhiều người đồng ý rằng bạn thực sự không làm như vậy. (trực tiếp hoặc hướng). – DilithiumMatrix

Các vấn đề liên quan