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).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
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.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
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.
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3 mengubah print
pernyataan menjadi fungsi print () , yang memungkinkan Anda untuk mengatur end
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.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".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 :
>>> from __future__ import print_function
>>> print('a', end='')
Jelas itu hanya berfungsi dengan python 3.0 atau lebih tinggi (atau 2.6+ dengan a from __future__ import print_function
di awal). The print
pernyataan telah dihapus dan menjadi print()
fungsi secara default di Python 3.0.
Anda dapat menekan spasi dengan mencetak string kosong ke stdout di antara print
pernyataan.
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
Namun, solusi yang lebih bersih adalah dengan terlebih dahulu membangun seluruh string yang ingin Anda cetak dan kemudian mengeluarkannya dengan satu print
pernyataan.
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 menggunakan print
, yang dapat berguna dalam situasi serupa.
Anda dapat mencetak karakter backspace ( '\b'
):
for i in xrange(20):
print '\ba',
hasil:
aaaaaaaaaaaaaaaaaaaa
Jika Anda ingin mereka muncul satu per satu, Anda dapat melakukan ini:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
diperlukan untuk memaksa karakter yang akan ditulis setiap kali loop dijalankan.
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:
from sys import stdout
printf = stdout.write
Sekarang Anda memiliki "fungsi cetak" yang mencetak string apa pun yang Anda berikan tanpa mengembalikan karakter baris baru setiap kali.
printf("Hello,")
printf("World!")
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 ().
printf(str(2) + " " + str(4))
Outputnya adalah: 2 4
ini sangat sederhana
untuk versi python 3+ Anda hanya perlu menulis kode berikut
for i in range(20):
print('a',end='')
cukup konversi loop ke kode berikut, Anda tidak perlu khawatir tentang hal-hal lain
WOW!!!
Ini cukup lama lalu
Sekarang, Dalam python 3.x itu akan sangat mudah
kode:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
keluaran:
aaaaaaaaaaaaaaaaaaaa
Lebih lanjut tentang fungsi print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
Di sini :
value1,value2,value3
Anda dapat mencetak beberapa nilai menggunakan koma
sep = '-'
3 nilai akan dipisahkan oleh karakter '-'
Anda dapat menggunakan karakter apa pun alih-alih string genap seperti sep = '@' atau sep = 'baik'
end='\n'
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'
file=sys.stdout
ini adalah nilai default, output standar sistem
menggunakan argumen ini Anda dapat membuat aliran file output seperti
print("I am a Programmer", file=open("output.txt", "w"))
dengan kode ini Anda akan membuat file bernama output.txt di mana output Anda saya seorang Programmer akan disimpan
flush = False
Ini adalah nilai default menggunakan flush = True Anda dapat secara paksa menyiram aliran
"".join("a" for i in xrange(20))
. (Ini jauh lebih fleksibel daripada hanya melakukan"a" * 20
, karena saya menganggap itu adalah contoh sederhana).