8

OK Tôi đã xem xét định dạng số và tôi thấy rằng bạn có thể sử dụng % d hoặc % i để định dạng số nguyên. Ví dụ:Sự khác biệt giữa% i và% d bằng Python là gì?

number = 8 
print "your number is %i." % number 

hoặc

number = 8 
print "your number is %d." % number 

Nhưng sự khác biệt là gì? Tôi có nghĩa là tôi tìm thấy một cái gì đó nhưng nó đã được tổng số jibberish. Có ai nói Mild-Code hay English ở đây không?

+1

Python sử dụng các quy ước C ở đây, cùng một câu trả lời được áp dụng. –

+0

Nếu bạn muốn nâng cấp lên python 3, tôi khuyên bạn nên sử dụng parens xung quanh cơ thể in, vì in là một hàm trong python 3. – tjameson

+0

@MartijnPieters Tôi thực sự không hiểu điều đó. Tôi đã tìm kiếm một chút để biết thêm tiếng Anh lol –

Trả lời

16

Python đã sao chép hướng dẫn định dạng C.

Đối đầu ra, %i%d là những điều chính xác cùng, cả hai bằng Python và C.

Sự khác biệt nằm ở chỗ những gì những gì khi bạn sử dụng chúng để phân tích đầu vào, trong C bằng cách sử dụng chức năng scanf(). Xem Difference between format specifiers %i and %d in printf.

Python không có một tương đương scanf, nhưng chuỗi Python định dạng hoạt động giữ lại hai lựa chọn để duy trì tương thích với C.

mới str.format()format()format specification mini-language giảm hỗ trợ cho i và mắc kẹt với chỉ d.

+0

OK cảm ơn, đó là một chút dễ hiểu :) –

+0

Ngôn ngữ mini đặc tả định dạng mới có thể đã giảm 'i', nhưng nó đã thêm' n', gần giống như 'i' ngoại trừ số nhận biết cục bộ phân cách khôn ngoan. – martineau

+0

@martineau: Có nghĩa là * không * giống như 'd'. 'i' * là * giống như' d'. –

2

Không có bất kỳ, xem hướng dẫn sử dụng Python Chuỗi Formatting: http://docs.python.org/2/library/stdtypes.html#string-formatting

+0

Có phải là một lý do dù phải không? –

+0

Định dạng đầu ra chuỗi trong Python rõ ràng là lấy cảm hứng từ C. Martijn Pieters đã chỉ cho bạn đúng hướng: [Chênh lệch giữa các định dạng% i và% d trong printf] (http: // stackoverflow.com/questions/1893490/sự khác biệt giữa định dạng-specifiers-i-và-d-in-printf) – Sven

1

Không khác biệt.

Và đây là the proof.

Lý do tại sao có hai là,% i chỉ là một thay thế cho% d, nếu bạn muốn nhìn vào nó ở mức cao (từ điểm python của view).

Đây là những gì python.org đã nói về% i: Signed integer decimal.

Và% d: Signed integer decimal.

% d là viết tắt của chữ số thập phân và% i cho số nguyên.

nhưng cả hai đều giống nhau, bạn có thể sử dụng cả hai.

+0

@malcolmk tôi đã trả lời và lý do tại sao có 2 lựa chọn – tenstar

+0

Có vẻ hợp lý, nhưng chúng tôi sẽ không bao giờ biết chắc chắn vì nó sẽ đòi hỏi khả năng đọc suy nghĩ trong quá khứ ... – martineau

+0

yup! đúng rồi! – tenstar

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