Saya tidak mengerti apa %s
dan apa yang %d
dilakukan dan bagaimana mereka bekerja.
Jawaban:
Mereka digunakan untuk memformat string. %s
bertindak sebagai tempat penampung untuk string sementara %d
bertindak sebagai tempat penampung untuk angka. Nilai terkaitnya diteruskan melalui tupel menggunakan %
operator.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
akan mencetak marcog 42
. Perhatikan bahwa nama adalah string (% s) dan angka adalah integer (% d untuk desimal).
Lihat https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting untuk detailnya.
Dalam Python 3 contohnya adalah:
print('%s %d' % (name, number))
dari python 3 doc
%d
adalah untuk bilangan bulat desimal
%s
adalah untuk string atau objek umum dan dalam kasus objek, itu akan diubah menjadi string
Perhatikan kode berikut
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
keluarannya akan
giacomo 4.3 4 4.300000 4.3
seperti yang Anda lihat %d
akan dipotong menjadi integer, %s
akan mempertahankan format, %f
akan mencetak sebagai float dan %g
digunakan untuk nomor umum
jelas
print('%d' % (name))
akan menghasilkan pengecualian; Anda tidak dapat mengubah string menjadi angka
%s
digunakan untuk angka sebagai gantinya.
%s
digunakan sebagai tempat penampung untuk nilai string yang ingin Anda masukkan ke dalam string yang diformat.
%d
digunakan sebagai tempat penampung untuk nilai numerik atau desimal.
Misalnya (untuk python 3)
print ('%s is %d years old' % ('Joe', 42))
Akan menghasilkan
Joe is 42 years old
Ini adalah placeholder:
Sebagai contoh: 'Hi %s I have %d donuts' %('Alice', 42)
Baris kode ini akan mengganti% s dengan Alice (str) dan% d dengan 42.
Keluaran: 'Hi Alice I have 42 donuts'
Hal ini dapat dicapai dengan "+" di sebagian besar waktu. Untuk mendapatkan pemahaman yang lebih mendalam tentang pertanyaan Anda, Anda mungkin ingin memeriksa {} / .format () juga. Berikut ini salah satu contohnya: Pemformatan string Python:% vs. .format
juga lihat di sini video tutorial google python @ 40 ', ada beberapa penjelasannya https://www.youtube.com/watch?v=tKTZoB2Vjuk
Ini semua adalah jawaban yang informatif, tetapi tidak ada yang cukup memahami inti dari perbedaan antara %s
dan %d
.
%s
memberitahu pemformat untuk memanggil str()
fungsi pada argumen dan karena kita memaksa ke string menurut definisi, %s
pada dasarnya hanya melakukan str(arg)
.
%d
di sisi lain, menyerukan int()
argumen sebelum memanggil str()
, seperti str(int(arg))
, Ini akan menyebabkan int
paksaan serta str
paksaan.
Misalnya, saya dapat mengubah nilai hex menjadi desimal,
>>> '%d' % 0x15
'21'
atau potong pelampung.
>>> '%d' % 34.5
'34'
Tapi operasi tersebut akan memunculkan pengecualian jika argumennya bukan angka.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Jadi, jika tujuannya hanya untuk memanggil str(arg)
, maka %s
sudah cukup, tetapi jika Anda membutuhkan pemformatan tambahan (seperti memformat tempat desimal mengambang) atau paksaan lainnya, maka diperlukan simbol format lainnya.
Dengan f-string
notasi, saat Anda membiarkan pemformat keluar, defaultnya adalah 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'
Hal yang sama berlaku dengan string.format
; defaultnya adalah str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
The %d
dan %s
tali format "perintah" digunakan untuk string format. Ini %d
untuk angka, dan %s
untuk string.
Sebagai contoh:
print("%s" % "hi")
dan
print("%d" % 34.6)
Meneruskan beberapa argumen:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
akan kembali hi there user123456
%d
dan %s
merupakan placeholder, mereka bekerja sebagai variabel yang dapat diganti. Misalnya, jika Anda membuat 2 variabel
variable_one = "Stackoverflow"
variable_two = 45
Anda dapat menetapkan variabel tersebut ke kalimat dalam string menggunakan tupel variabel.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Perhatikan bahwa %s
berfungsi untuk String dan %d
berfungsi untuk variabel numerik atau desimal.
jika dicetak variable_3
maka akan terlihat seperti ini
print(variable_3 % (variable_one, variable_two))
Saya sedang mencari jawaban di StackOverflow dan menemukan lebih dari 45 jawaban atas pertanyaan saya.
Mereka adalah penentu format. Mereka digunakan ketika Anda ingin memasukkan nilai ekspresi Python Anda ke dalam string, dengan format tertentu diberlakukan.
Lihat Menyelam ke Python untuk pengenalan yang relatif mendetail.
Sesuai standar terbaru, begitulah seharusnya dilakukan.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Lakukan pengecekan python3.6 docs dan sample program
Jika Anda ingin menghindari% s atau% d maka ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Keluaran:
my name is marcog and my name is 42
%s
dan %d
.
print
adalah fungsi di Python 3, bukan pernyataan.
% s digunakan untuk menampung spasi untuk string% d digunakan untuk menampung spasi untuk angka
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 ini membahas lebih dalam tentang tip itu https://www.youtube.com/watch?v=4zN5YsuiqMA
ngomong-ngomong ...
python3.6 hadir dengan f-strings
yang membuat segalanya lebih mudah dalam pemformatan!
sekarang jika versi python Anda lebih besar dari 3.6 Anda dapat memformat string Anda dengan metode yang tersedia ini:
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
Berikut adalah contoh dasar untuk mendemonstrasikan pemformatan string Python dan cara baru untuk melakukannya.
my_word = 'epic'
my_number = 1
print('The %s number is %d.' % (my_word, my_number)) # traditional substitution with % operator
// Angka epiknya adalah 1.
print(f'The {my_word} number is {my_number}.') # newer format string style
// Angka epiknya adalah 1.
Keduanya memiliki cetakan yang sama.
%s
digunakan dengan konfigurasi mesin pencari. Chrome menggunakan%s
untuk mengganti kata kunci yang dimasukkan di bilah alamat. Python menggunakan%s
cara yang serupa. Dalamprint('description: %s' % descrip)
satu%s
operator yang akan digantikan oleh string teks yang disimpan dalamdescrip
variabel. Kawat gigi bulat mencegah pesan kesalahan di Python 3.