Câu trả lời:
Chúng được sử dụng để định dạng chuỗi. %s
đóng vai trò giữ chỗ cho một chuỗi trong khi %d
đóng vai trò giữ chỗ cho một số. Các giá trị liên quan của chúng được truyền qua một tuple bằng %
toán tử.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
sẽ in marcog 42
. Lưu ý rằng tên là một chuỗi (% s) và số là một số nguyên (% d cho số thập phân).
Xem https://docs.python.org/3/l Library / stdtypes.html#printf-style-opes-formatted để biết chi tiết.
Trong Python 3, ví dụ sẽ là:
print('%s %d' % (name, number))
từ python 3 doc
%d
dành cho số nguyên thập phân
%s
dành cho chuỗi hoặc đối tượng chung và trong trường hợp đối tượng, nó sẽ được chuyển đổi thành chuỗi
Hãy xem xét các mã sau đây
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
đặt ra sẽ được
giacomo 4.3 4 4.300000 4.3
như bạn có thể thấy %d
sẽ cắt ngắn 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
chắc chắn
print('%d' % (name))
sẽ tạo ra một ngoại lệ; bạn không thể chuyển đổi chuỗi thành số
%s
được sử dụng cho một số thay thế.
%s
được sử dụng như một trình giữ chỗ cho các giá trị chuỗi bạn muốn đưa vào một chuỗi được định dạng.
%d
được sử dụng như một trình giữ chỗ cho các giá trị số hoặc thập phân.
Ví dụ (đối với python 3)
print ('%s is %d years old' % ('Joe', 42))
Sẽ xuất
Joe is 42 years old
Đây là những chỗ dành sẵn:
Ví dụ: 'Hi %s I have %d donuts' %('Alice', 42)
Dòng mã này sẽ thay thế% s bằng Alice (str) và% d bằng 42.
Đầu ra: 'Hi Alice I have 42 donuts'
Điều này có thể đạt được với "+" hầu hết thời gian. Để hiểu sâu hơn về câu hỏi của bạn, bạn cũng có thể muốn kiểm tra {} / .format (). Đây là một ví dụ: dạng chuỗi Python:% vs. .format
cũng xem ở đây một video hướng dẫn python của Google @ 40 ', nó có một số giải thích https://www.youtube.com/watch?v=tKTZoB2Vjuk
Các %d
và %s
chuỗi định dạng "lệnh" được sử dụng để định dạng chuỗi. Đây %d
là cho số, và %s
là cho chuỗi.
Ví dụ:
print("%s" % "hi")
và
print("%d" % 34.6)
Để vượt qua nhiều đối số:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
sẽ trở lại hi there user123456
Đâ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 là cốt lõi của sự khác biệt giữa %s
và %d
.
%s
nói cho bộ định dạng gọi str()
hàm trên đối số và vì chúng ta đang ép buộc một chuỗi theo định nghĩa, %s
về cơ bản chỉ là thực hiện str(arg)
.
%d
mặt khác, đang kêu gọi int()
tranh luận trước khi gọi str()
, như str(int(arg))
, Điều này sẽ gây ra int
sự ép buộc cũng như str
sự ép buộc.
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 một phao.
>>> '%d' % 34.5
'34'
Nhưng hoạt động sẽ đưa ra một ngoại lệ nếu đối số không phải là số.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Vì vậy, nếu ý định chỉ là để gọi str(arg)
, thì%s
đủ, nhưng nếu bạn cần định dạng bổ sung (như định dạng dấu thập phân dấu phẩy) hoặc ép buộc khác, thì cần các ký hiệu định dạng khác.
Với f-string
ký hiệu, khi bạn bỏ định dạng ra, mặc định là str
.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
Điều tương tự cũng đúng với string.format
; mặc định là str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
và %s
là giữ chỗ, chúng hoạt động như một biến có thể thay thế. Ví dụ: nếu bạn tạo 2 biến
variable_one = "Stackoverflow"
variable_two = 45
bạn có thể gán các biến đó cho một câu trong một chuỗi bằng cách sử dụng một tuple của các biến.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Lưu ý rằng %s
hoạt động cho Chuỗi và%d
hoạt động cho các biến số hoặc số thập phân.
nếu bạn in variable_3
nó sẽ trông như thế này
print(variable_3 % (variable_one, variable_two))
Tôi đã tìm kiếm một câu trả lời trong StackOverflow và tìm thấy hơn 45 câu trả lời cho câu hỏi của tôi.
Họ là định dạng định dạng. Chúng được sử dụng khi bạn muốn bao gồm giá trị của các biểu thức Python của bạn thành các chuỗi, với một định dạng cụ thể được thi hành.
Xem Lặn vào Python để giới thiệu tương đối chi tiết.
Theo tiêu chuẩn mới nhất, đây là cách nó nên được thực hiện.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Kiểm tra tài liệu python3.6 và chương trình mẫu
Trong trường hợp bạn muốn tránh% s hoặc% d thì ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Đầu ra:
my name is marcog and my name is 42
%s
và %d
.
print
là một hàm trong Python 3, không phải là một câu lệnh.
% s được sử dụng để giữ không gian cho chuỗi% d được sử dụng để giữ không gian cho số
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
video này đi sâu về mẹo đó https://www.youtube.com/watch?v=4zN5YsuiqMA
nói về điều đó ...
python3.6 đi kèm với f-strings
nó giúp mọi thứ dễ dàng hơn trong việc định dạng!
bây giờ nếu phiên bản python của bạn lớn hơn 3.6, bạn có thể định dạng chuỗi của mình bằng các phương thức có sẵn sau:
name = "python"
print ("i code with %s" %name) # with help of older method
print ("i code with {0}".format(name)) # with help of format
print (f"i code with {name}") # with help of f-strings
%s
sử dụng với cấu hình công cụ tìm kiếm. Chrome sử dụng%s
để thay thế các từ khóa được nhập vào thanh địa chỉ. Python sử dụng%s
theo cách tương tự. Trongprint('description: %s' % descrip)
các%s
nhà điều hành sẽ được thay thế bằng chuỗi văn bản được lưu trữ trong cácdescrip
biến. Các dấu ngoặc nhọn ngăn thông báo lỗi trong Python 3.