Dalam Python 2 saya menggunakan:
print "a=%d,b=%d" % (f(x,n),g(x,n))
Saya sudah mencoba:
print("a=%d,b=%d") % (f(x,n),g(x,n))
python
string
python-3.x
Mike L
sumber
sumber
%
selalu menjadi operator string, tidak terkait denganprint
pernyataan itu. Anda dapat, misalnya, membuat string dengans="a=%d,b=%d"%(f(x,n),g(x,n))
, lalu mencetak string itu denganprint s
.Jawaban:
Di Python2,
print
adalah kata kunci yang memperkenalkan pernyataan:Dalam Python3,
print
adalah fungsi yang dapat dipanggil:Di kedua versi,
%
adalah operator yang membutuhkan string di sisi kiri dan nilai atau tupel nilai atau objek pemetaan (sepertidict
) di sisi kanan.Jadi, baris Anda seharusnya terlihat seperti ini:
Juga, rekomendasi untuk Python3 dan yang lebih baru adalah menggunakan
{}
pemformatan -style alih-alih pemformatan -style%
:Python 3.6 memperkenalkan paradigma pemformatan string lain: f-string .
sumber
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
mana contoh ini menunjukkan bagaimana Anda dapat menggunakan pengubah gaya printf dan masih menggunakan kata kunci.Cara yang paling direkomendasikan untuk dilakukan adalah menggunakan
format
metode. Baca lebih lanjut di sinisumber
Fungsi printf () sederhana dari Cookbook Python O'Reilly .
Contoh output:
sumber
PRINT
danFORMAT
...? Kembali ke masa 60+ tahun hingga hari-hari FORTRAN :)Python 3.6 memperkenalkan f-string untuk interpolasi inline. Apa yang lebih bagus lagi adalah memperpanjang sintaks untuk juga memungkinkan penentu format dengan interpolasi. Sesuatu yang telah saya kerjakan ketika saya mencari di Google (dan menemukan pertanyaan lama ini!):
PEP 498 memiliki detailnya. Dan ... itu mengurutkan peeve peliharaan saya dengan penentu format dalam bahasa lain - memungkinkan penspesifikasi yang dapat berupa ekspresi! Yay! Lihat: Format Penentu .
sumber
Contoh sederhana:
print("foo %d, bar %d" % (1,2))
sumber
Yang lebih sederhana.
Kemudian:
sumber
Karena Anda
%
berada di luarprint(...)
tanda kurung, Anda mencoba memasukkan variabel Anda ke dalam hasilprint
panggilan Anda .print(...)
kembaliNone
, jadi ini tidak akan berhasil, dan ada juga hal kecil dari Anda yang sudah mencetak template Anda saat ini dan perjalanan waktu dilarang oleh hukum alam semesta yang kita huni.Seluruh hal yang ingin Anda cetak, termasuk
%
operan dan, perlu di dalamprint(...)
panggilan Anda , sehingga string dapat dibangun sebelum dicetak.Saya telah menambahkan beberapa ruang ekstra untuk membuatnya lebih jelas (meskipun mereka tidak perlu dan umumnya tidak dianggap gaya yang baik).
sumber
Dengan kata lain printf absen dalam python ... Saya terkejut! Kode terbaik adalah
Karena formulir ini memungkinkan untuk tidak mencetak \ n. Semua yang lain tidak. Itu sebabnya cetak adalah operator yang buruk. Dan Anda juga perlu menulis args dalam bentuk khusus. Tidak ada kerugian dalam fungsi di atas. Ini adalah bentuk fungsi printf standar yang biasa.
sumber
sumber