Tại sao tôi không thể sử dụng tuple làm đối số để định dạng theo kiểu mới ("string" .format())? Nó hoạt động tốt trong phong cách cũ ("chuỗi"%)?Định dạng kiểu mới với tuple làm đối số
Mã này hoạt động:
>>> tuple = (500000, 500, 5)
... print "First item: %d, second item: %d and third item: %d." % tuple
First item: 500000, second item: 500 and third item: 5.
Và đây không:
>>> tuple = (500000, 500, 5)
... print("First item: {:d}, second item: {:d} and third item: {:d}."
... .format(tuple))
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
Ngay cả với {r!}
>>> tuple = (500000, 500, 5)
... print("First item: {!r}, second item: {!r} and third item: {!r}."
... .format(tuple))
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: tuple index out of range
Mặc dù nó hoạt động với cách mà:
>>> print("First item: {!r}, second item: {!r} and third item: {!r}."
... .format(500000, 500, 50))
First item: 500000, second item: 500 and third item: 5.
+1 để đổi tên biến. –
@Volatility Tôi nghĩ rằng {: d} là không cần thiết. Nếu bạn muốn đặt hàng dữ liệu, bạn có thể sử dụng đơn giản {} hoặc chỉ định thứ tự với chỉ mục hoặc dữ liệu trong tuple {0} {1} {2} – GeoStoneMarten
@GeoStoneMarten trong khi tôi đồng ý, bằng cách sử dụng '{: d}' cho biết rõ ràng hơn rằng bạn muốn có một số thập phân ở đó (cho người khác đọc mã của bạn) – Petzku