2015-02-17 26 views
6

Tôi muốn thay đổi số nguyên như 23457689 thành 689, 12457245 thành 245, v.v.Lấy ba chữ số cuối của số nguyên

Tôi không yêu cầu số được làm tròn và không muốn chuyển thành Chuỗi .

Bất kỳ ý tưởng nào về cách thực hiện điều này trong Python 2.7?

Trả lời

20

Sử dụng các hoạt động %:

>>> x = 23457689 
>>> x % 1000 
689 

%mod (ví dụ: modulo) hoạt động.

+0

Cảm ơn! Đó chính xác là những gì tôi cần. –

9

Để xử lý số nguyên cả tích cực và tiêu cực một cách chính xác:

>>> x = -23457689 
>>> print abs(x) % 1000 
689 

Là một chức năng mà bạn có thể chọn số chữ số hàng đầu để giữ:

import math 
def extract_digits(integer, digits=3, keep_sign=False): 
    sign = 1 if not keep_sign else int(math.copysign(1, integer)) 
    return abs(integer) % (10**digits) * sign 

Ràng buộc để tránh chuyển sang str là quá phẫn nộ. Chuyển đổi thành str sẽ là một cách hay để thực hiện việc này nếu định dạng của số có thể thay đổi hoặc nếu định dạng của các chữ số cuối cần lưu giữ sẽ thay đổi.

>>> int(str(x)[-3:]) 
       ^^^^^ Easier to modify this than shoe-horning the mod function. 
+0

Cảm ơn, nhưng tôi chỉ đơn giản là cần phải trích xuất các chữ số cuối cùng và cốt truyện, các giá trị sẽ không bao giờ thay đổi. Tôi có thể sử dụng điều này cũng như –

+2

"các giá trị sẽ không bao giờ thay đổi ..." mọi lập trình viên từng nói. – ely

+0

Tôi đoán tôi vẫn còn rất nhiều điều cần tìm hiểu. –

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