Tôi đã cố gắng tìm hiểu làm thế nào để biểu diễn một số nguyên tối đa và tôi đã đọc để sử dụng "sys.maxint"
. Tuy nhiên, trong Python 3 khi tôi gọi nó, tôi nhận được:
AttributeError: module 'object' has no attribute 'maxint'
Tôi đã cố gắng tìm hiểu làm thế nào để biểu diễn một số nguyên tối đa và tôi đã đọc để sử dụng "sys.maxint"
. Tuy nhiên, trong Python 3 khi tôi gọi nó, tôi nhận được:
AttributeError: module 'object' has no attribute 'maxint'
Câu trả lời:
Hằng số sys.maxint đã bị xóa, vì không còn giới hạn giá trị của các số nguyên. Tuy nhiên, sys.maxsize có thể được sử dụng như một số nguyên lớn hơn bất kỳ danh sách thực tế hoặc chỉ mục chuỗi nào. Nó phù hợp với kích thước số nguyên tự nhiên của nhóm triển khai và thường giống như sys.maxint trong các bản phát hành trước đó trên cùng một nền tảng (giả sử các tùy chọn xây dựng giống nhau).
Như những người khác đã chỉ ra, Python 3 int
không có kích thước tối đa, nhưng nếu bạn chỉ cần thứ gì đó được đảm bảo cao hơn bất kỳ int
giá trị nào khác , thì bạn có thể sử dụng giá trị float cho Infinity mà bạn có thể nhận được float("inf")
.
Python 3 ints không có tối đa.
Nếu mục đích của bạn là xác định kích thước tối đa của một int trong C khi được biên dịch giống như Python, bạn có thể sử dụng mô đun struct để tìm hiểu:
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
Nếu bạn tò mò về các chi tiết triển khai bên trong của các đối tượng int của Python 3, hãy xem sys.int_info
các bit trên mỗi chữ số và chi tiết kích thước chữ số. Không có chương trình bình thường nên quan tâm về những điều này.
Nếu bạn đang tìm kiếm một số lớn hơn tất cả những người khác:
Cách 1:
float('inf')
Cách 2:
import sys
max = sys.maxsize
Nếu bạn đang tìm kiếm một số nhỏ hơn tất cả những người khác:
Cách 1:
float('-inf')
Cách 2:
import sys
min = -sys.maxsize - 1
Phương thức 1 hoạt động trong cả Python2 và Python3. Phương pháp 2 hoạt động trong Python3. Tôi chưa thử Phương pháp 2 trong Python2.
Một thay thế là
import math
... math.inf ...