Saya tidak mengerti apa %sdan apa yang %ddilakukan dan bagaimana mereka bekerja.
Jawaban:
Mereka digunakan untuk memformat string. %sbertindak sebagai tempat penampung untuk string sementara %dbertindak 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 %dakan dipotong menjadi integer, %sakan mempertahankan format, %fakan mencetak sebagai float dan %gdigunakan untuk nomor umum
jelas
print('%d' % (name))
akan menghasilkan pengecualian; Anda tidak dapat mengubah string menjadi angka
%sdigunakan 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 %sdan %d.
%smemberitahu pemformat untuk memanggil str()fungsi pada argumen dan karena kita memaksa ke string menurut definisi, %spada dasarnya hanya melakukan str(arg).
%ddi sisi lain, menyerukan int()argumen sebelum memanggil str(), seperti str(int(arg)), Ini akan menyebabkan intpaksaan serta strpaksaan.
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 %ssudah cukup, tetapi jika Anda membutuhkan pemformatan tambahan (seperti memformat tempat desimal mengambang) atau paksaan lainnya, maka diperlukan simbol format lainnya.
Dengan f-stringnotasi, 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 %ddan %stali format "perintah" digunakan untuk string format. Ini %duntuk angka, dan %suntuk 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
%ddan %smerupakan 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 %sberfungsi untuk String dan %dberfungsi untuk variabel numerik atau desimal.
jika dicetak variable_3maka 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
%sdan %d.
printadalah 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-stringsyang 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.
%sdigunakan dengan konfigurasi mesin pencari. Chrome menggunakan%suntuk mengganti kata kunci yang dimasukkan di bilah alamat. Python menggunakan%scara yang serupa. Dalamprint('description: %s' % descrip)satu%soperator yang akan digantikan oleh string teks yang disimpan dalamdescripvariabel. Kawat gigi bulat mencegah pesan kesalahan di Python 3.