Đây là tất cả các câu trả lời thông tin, nhưng không có câu trả lời nào hoàn toàn nhận được sự khác biệt giữa %s
và %d
.
%s
bảo định dạng gọi hàm
>>> '%d' % 34.5
'34'
1 trên đối số và vì chúng tôi đang ép buộc theo một chuỗi theo định nghĩa, %s
về cơ bản chỉ thực hiện >>> '%d' % 34.5
'34'
3.Mặt khác, đang gọi
>>> '%d' % 34.5
'34'
5 trên đối số trước khi gọi >>> '%d' % 34.5
'34'
1, như >>> '%d' % 34.5
'34'
7, điều này sẽ gây ra sự ép buộc >>> '%d' % 34.5
'34'
8 cũng như >>> '%d' % 34.5
'34'
9 cưỡng chế.Ví dụ: tôi có thể chuyển đổi giá trị hex thành thập phân,
>>> '%d' % 0x15
'21'
hoặc cắt ngắn một chiếc phao.
>>> '%d' % 34.5
'34'
Nhưng hoạt động sẽ tăng một ngoại lệ nếu đối số không phải là một số.
>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
Vì vậy, nếu ý định chỉ là gọi
>>> '%d' % 34.5
'34'
3, thì %s
là đủ, nhưng nếu bạn cần định dạng thêm [như định dạng các vị trí thập phân nổi] hoặc sự ép buộc khác, thì cần phải có các ký hiệu định dạng khác.Với ký hiệu
>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
2, khi bạn bỏ định dạng ra, mặc định là >>> '%d' % 34.5
'34'
9.>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
Điều tương tự cũng đúng với
>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
4; Mặc định là >>> '%d' % 34.5
'34'
9.>>> a = 1
>>> '{}'.format[a]
'1'
>>> '{!s}'.format[a]
'1'
>>> '{:d}'.format[a]
'1'
Đã trả lời ngày 2 tháng 12 năm 2020by Vinita [108K điểm] Dec 2, 2020 by vinita [108k points]
Vui lòng được thông báo rằng '%D' dành cho số thập phân trong Python trong khi '%s' dành cho chuỗi hoặc đối tượng chung và trong trường hợp của một đối tượng, nó sẽ được chuyển đổi thành dữ liệu loại chuỗi.
Tham khảo mã dưới đây để tham khảo:
name = 'Giacomo'
Số = 4.3
in [' %s %s %d %f %g' %[tên, số, số, số, số]]]
Đầu ra:
Giacomo 4.3 4 4.300000 4.3
Như bạn có thể nhận thấy rằng %D sẽ cắt giảm thành số nguyên, %s sẽ duy trì định dạng, %F sẽ in dưới dạng float và %g được sử dụng cho số chung:
in [' % d' % [tên]]
Mã trên sẽ ném một ngoại lệ vì chúng ta không thể chuyển đổi dữ liệu định dạng chuỗi thành dữ liệu định dạng số.
Python sử dụng định dạng chuỗi kiểu C để tạo các chuỗi mới, được định dạng. Toán tử "%" được sử dụng để định dạng một tập hợp các biến được đặt trong một "tuple" [một danh sách kích thước cố định], cùng với một chuỗi định dạng, chứa văn bản bình thường cùng với "các định hướng đối số", các biểu tượng đặc biệt như "%s" và "%d".
Giả sử bạn có một biến có tên là "Tên" với tên người dùng của bạn trong đó và sau đó bạn muốn in [ra lời chào đến người dùng đó.]
# This prints out "Hello, John!"
name = "John"
print["Hello, %s!" % name]
Để sử dụng hai hoặc nhiều nhà xác định đối số, hãy sử dụng tuple [dấu ngoặc đơn]:
# This prints out "John is 23 years old."
name = "John"
age = 23
print["%s is %d years old." % [name, age]]
Bất kỳ đối tượng nào không phải là một chuỗi cũng có thể được định dạng bằng toán tử %s. Chuỗi trả về từ phương thức "repr" của đối tượng đó được định dạng là chuỗi. Ví dụ:
# This prints out: A list: [1, 2, 3]
mylist = [1,2,3]
print["A list: %s" % mylist]
Dưới đây là một số trình xác định đối số cơ bản mà bạn nên biết:
>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
6>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
7>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
8>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
9>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
0Tập thể dục
Bạn sẽ cần viết một chuỗi định dạng in dữ liệu bằng cú pháp sau:
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
1>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
2 >>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
3 >>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
4 >>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
5