Saya punya kode ini:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
Saya ingin menampilkan 'a'
, tanpa ' '
seperti ini:
aaaaaaaaaaaaaaaaaaaa
Apa itu mungkin?
python
string
printing
python-2.x
pythonFoo
sumber
sumber
"".join("a" for i in xrange(20))
. (Ini jauh lebih fleksibel daripada hanya melakukan"a" * 20
, karena saya menganggap itu adalah contoh sederhana).Jawaban:
Ada beberapa cara untuk mencapai hasil Anda. Jika Anda hanya menginginkan solusi untuk kasus Anda, gunakan perkalian string sebagai @Ant . Ini hanya akan berfungsi jika masing-masing
print
pernyataan Anda mencetak string yang sama. Perhatikan bahwa ia berfungsi untuk perkalian string panjang apa pun (mis.'foo' * 20
Berfungsi).Jika Anda ingin melakukan ini secara umum, buat string dan kemudian cetak sekali. Ini akan menghabiskan sedikit memori untuk string, tetapi hanya membuat satu panggilan saja
print
. Perhatikan bahwa penggabungan string+=
sekarang linear dalam ukuran string yang Anda gabungkan sehingga ini akan cepat.Atau Anda bisa melakukannya lebih langsung menggunakan sys.stdout . tulis () , yang
print
merupakan pembungkus. Ini akan menulis hanya string mentah yang Anda berikan, tanpa format apa pun. Perhatikan bahwa tidak ada baris baru yang dicetak pada akhir 20-a
an.Python 3 mengubah
print
pernyataan menjadi fungsi print () , yang memungkinkan Anda untuk mengaturend
parameter. Anda dapat menggunakannya di> = 2.6 dengan mengimpor dari__future__
. Saya akan menghindari ini dalam kode 2.x serius, karena akan sedikit membingungkan bagi mereka yang belum pernah menggunakan 3.x. Namun, itu harus memberi Anda rasa dari beberapa kebaikan yang 3.x bawa.sumber
"".join(...)
sebagai gantinya.+=
Python adalah operasi waktu yang konstan untuk penggabungan satu karakter.Dari PEP 3105: cetak Sebagai Fungsi dalam dokumen What's New in Python 2.6 :
Jelas itu hanya berfungsi dengan python 3.0 atau lebih tinggi (atau 2.6+ dengan a
from __future__ import print_function
di awal). Theprint
pernyataan telah dihapus dan menjadiprint()
fungsi secara default di Python 3.0.sumber
Anda dapat menekan spasi dengan mencetak string kosong ke stdout di antara
print
pernyataan.Namun, solusi yang lebih bersih adalah dengan terlebih dahulu membangun seluruh string yang ingin Anda cetak dan kemudian mengeluarkannya dengan satu
print
pernyataan.sumber
sys.stdout.write()
lebih nyaman dalam hal ini. Namun, saya ingin menunjukkan bahwa menulis string kosong ke stdout menekan ruang di antara elemen yang ditulis menggunakanprint
, yang dapat berguna dalam situasi serupa.Anda dapat mencetak karakter backspace (
'\b'
):hasil:
sumber
Python 3.x:
Python 2.6 atau 2.7:
sumber
Jika Anda ingin mereka muncul satu per satu, Anda dapat melakukan ini:
sys.stdout.flush()
diperlukan untuk memaksa karakter yang akan ditulis setiap kali loop dijalankan.sumber
Sama seperti catatan tambahan:
Pencetakan adalah O (1) tetapi membangun string dan kemudian mencetak adalah O (n), di mana n adalah jumlah total karakter dalam string. Jadi ya, sementara membangun string adalah "bersih", itu bukan metode yang paling efisien untuk melakukannya.
Cara saya akan melakukannya adalah sebagai berikut:
Sekarang Anda memiliki "fungsi cetak" yang mencetak string apa pun yang Anda berikan tanpa mengembalikan karakter baris baru setiap kali.
Outputnya adalah: Halo, Dunia!
Namun, jika Anda ingin mencetak bilangan bulat, float, atau nilai non-string lainnya, Anda harus mengonversinya menjadi string dengan fungsi str ().
Outputnya adalah: 2 4
sumber
Entah apa yang dikatakan Ant , atau terakumulasi menjadi string, lalu cetak sekali:
sumber
tanpa apa? maksudmu
?
sumber
ini sangat sederhana
untuk versi python 3+ Anda hanya perlu menulis kode berikut
cukup konversi loop ke kode berikut, Anda tidak perlu khawatir tentang hal-hal lain
sumber
WOW!!!
Ini cukup lama lalu
Sekarang, Dalam python 3.x itu akan sangat mudah
kode:
keluaran:
Lebih lanjut tentang fungsi print ()
Di sini :
Anda dapat mencetak beberapa nilai menggunakan koma
3 nilai akan dipisahkan oleh karakter '-'
Anda dapat menggunakan karakter apa pun alih-alih string genap seperti sep = '@' atau sep = 'baik'
secara fungsi cetak default menempatkan '\ n' karakter di akhir output
tetapi Anda dapat menggunakan karakter atau string apa pun dengan mengubah nilai nilai akhir
seperti end = '$' atau end = '.' atau end = 'Hello'
ini adalah nilai default, output standar sistem
menggunakan argumen ini Anda dapat membuat aliran file output seperti
dengan kode ini Anda akan membuat file bernama output.txt di mana output Anda saya seorang Programmer akan disimpan
Ini adalah nilai default menggunakan flush = True Anda dapat secara paksa menyiram aliran
sumber
sesimpel itu
sumber