Saya ingin melakukannya ular sanca. Apa yang ingin saya lakukan dalam contoh ini dic:
Dalam C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Keluaran:
..........
Dengan Python:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
Dalam Python print
akan menambah \n
atau spasi, bagaimana saya bisa menghindarinya? Sekarang, ini hanya sebuah contoh, jangan bilang saya pertama-tama bisa membuat string kemudian mencetaknya. Saya ingin tahu cara "menambahkan" string stdout
.
Jawaban:
Di Python 3, Anda dapat menggunakan
sep=
danend=
parameterprint
fungsi:Untuk tidak menambahkan baris baru ke akhir string:
Untuk tidak menambahkan spasi di antara semua argumen fungsi yang ingin Anda cetak:
Anda dapat meneruskan string apa pun ke parameter mana pun, dan Anda dapat menggunakan kedua parameter sekaligus.
Jika Anda mengalami masalah dengan buffering, Anda dapat menyiram output dengan menambahkan
flush=True
argumen kata kunci:Python 2.6 dan 2.7
Dari Python 2.6 Anda dapat mengimpor
print
fungsi dari Python 3 menggunakan__future__
modul :yang memungkinkan Anda untuk menggunakan solusi Python 3 di atas.
Namun, perhatikan bahwa
flush
kata kunci tidak tersedia dalam versiprint
fungsi yang diimpor dari__future__
dalam Python 2; ini hanya bekerja di Python 3, lebih khusus lagi 3.3 dan yang lebih baru. Dalam versi sebelumnya Anda masih perlu menyiram secara manual dengan panggilan kesys.stdout.flush()
. Anda juga harus menulis ulang semua pernyataan cetak lainnya dalam file tempat Anda melakukan impor ini.Atau bisa Anda gunakan
sys.stdout.write()
Anda mungkin juga perlu menelepon
untuk memastikan
stdout
memerah segera.sumber
flush
dan apa fungsinya sebenarnya?Seharusnya semudah yang dijelaskan pada tautan ini oleh Guido Van Rossum:
Re: Bagaimana cara mencetak tanpa ac / r?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Ya, tambahkan koma setelah argumen terakhir untuk dicetak. Misalnya, loop ini mencetak angka 0..9 pada garis yang dipisahkan oleh spasi. Perhatikan "cetak" tanpa parameter yang menambahkan baris terakhir:
sumber
Catatan: Judul pertanyaan ini dulu kira-kira seperti "Bagaimana cara mencetak dengan python?"
Karena orang mungkin datang ke sini mencarinya berdasarkan judul, Python juga mendukung subtitusi gaya printf:
Dan, Anda dapat dengan mudah mengalikan nilai string:
sumber
Gunakan fungsi cetak gaya-python3 untuk python2.6 + (juga akan memecah pernyataan cetak kata kunci yang ada dalam file yang sama.)
Untuk tidak merusak semua kata kunci cetak python2 Anda, buat
printf.py
file terpisahKemudian, gunakan di file Anda
Lebih banyak contoh yang menunjukkan gaya printf
sumber
Cara mencetak pada baris yang sama:
sumber
Fungsi baru (pada Python 3.x)
print
memilikiend
parameter opsional yang memungkinkan Anda mengubah karakter akhir:Keluaran:
Ada juga
sep
untuk pemisah:Keluaran:
Jika Anda ingin menggunakan ini di Python 2.x cukup tambahkan ini di awal file Anda:
from __future__ import print_function
sumber
Menggunakan functools.partial untuk membuat fungsi baru yang disebut printf
Cara mudah untuk membungkus suatu fungsi dengan parameter default.
sumber
Anda bisa menambahkan
,
di akhirprint
fungsi sehingga tidak akan mencetak pada baris baru.sumber
Dalam Python 3+,
print
adalah suatu fungsi. Saat Anda meneleponPython menerjemahkannya menjadi
Anda dapat mengubah
end
apa pun yang Anda inginkan.sumber
python 2.6+ :
python 3 :
python <= 2.5 :
jika ruang ekstra OK setelah setiap cetak, dengan python 2
menyesatkan dalam python 2 - hindari :
sumber
Anda dapat mencoba:
sumber
Anda dapat melakukan hal yang sama di python3 sebagai berikut:
dan jalankan dengan
python filename.py
ataupython3 filename.py
sumber
Saya baru-baru punya masalah yang sama ..
saya menyelesaikannya dengan melakukan:
ini berfungsi baik di unix dan windows ... belum mengujinya di macosx ...
hth
sumber
sys.__stdout__
@ lenooh memenuhi permintaan saya. Saya menemukan artikel ini ketika mencari 'python suppress newline'. Saya menggunakan IDLE3 pada Raspberry Pi untuk mengembangkan Python 3.2 untuk Putty. Saya ingin membuat progress bar di baris perintah Putty. Saya tidak ingin halamannya bergulir. Saya ingin garis horizontal untuk meyakinkan kembali pengguna dari ketakutan bahwa program belum terhenti atau telah dikirim untuk makan siang pada putaran tak terbatas yang meriah - sebagai permohonan untuk 'tinggalkan aku, saya baik-baik saja, tetapi ini mungkin membutuhkan waktu. ' pesan interaktif - seperti bilah progres dalam teks.
The
print('Skimming for', search_string, '\b! .001', end='')
menginisialisasi pesan dengan mempersiapkan untuk layar-write berikutnya, yang akan mencetak tiga backspaces sebagai rubout ⌫⌫⌫ dan kemudian periode, menyeka '001' dan memperluas garis periode. Setelahsearch_string
input pengguna burung beo,\b!
trim tanda serusearch_string
teks saya untuk kembali ke ruang yangprint()
sebaliknya memaksa, menempatkan tanda baca dengan benar. Itu diikuti oleh spasi dan 'titik' pertama dari 'progress bar' yang saya simulasi. Tanpa perlu, pesan juga kemudian dipilah dengan nomor halaman (diformat hingga panjang tiga dengan angka nol di depan) untuk memperhatikan dari pengguna bahwa kemajuan sedang diproses dan yang juga akan mencerminkan jumlah periode yang nantinya akan kita buat hingga Baik.Daging progress bar ada di
sys.stdout.write('\b\b\b.'+format(page, '03'))
barisan. Pertama, untuk menghapus ke kiri, itu akan mencadangkan kursor di atas tiga karakter numerik dengan '\ b \ b \ b' sebagai out menggosok dan menjatuhkan periode baru untuk menambah panjang bilah kemajuan. Kemudian ia menulis tiga digit halaman yang telah berkembang sejauh ini. Karenasys.stdout.write()
menunggu buffer penuh atau saluran output ditutup,sys.stdout.flush()
memaksa penulisan langsung.sys.stdout.flush()
dibangun ke ujungprint()
yang dilewati denganprint(txt, end='' )
. Kemudian kode loop melalui operasi intensif waktu duniawi sementara itu mencetak tidak lebih sampai kembali ke sini untuk menghapus tiga digit kembali, menambahkan titik dan menulis tiga digit lagi, bertambah.Tiga digit yang dihapus dan ditulis ulang sama sekali tidak perlu - itu hanya berkembang yang dicontohkan
sys.stdout.write()
versusprint()
. Anda dapat dengan mudah prime dengan titik dan lupakan tiga backslash-b ⌫ backspace mewah (tentu saja tidak menulis jumlah halaman diformat juga) dengan hanya mencetak periode bar lebih lama dengan satu setiap kali melalui - tanpa spasi atau baris menggunakan hanya dengansys.stdout.write('.'); sys.stdout.flush()
pasangan.Harap dicatat bahwa shell Raspberry Pi IDLE3 Python tidak menghormati backspace sebagai ⌫ rubout tetapi malah mencetak spasi, sebagai gantinya membuat daftar pecahan yang jelas.
- (o = 8> ahli
sumber
Anda akan melihat bahwa semua jawaban di atas benar. Tetapi saya ingin membuat jalan pintas untuk selalu menulis parameter "end = ''" pada akhirnya.
Anda bisa mendefinisikan fungsi seperti
Itu akan menerima semua jumlah parameter. Bahkan ia akan menerima semua parameter lain seperti file, flush, dll dan dengan nama yang sama.
sumber
*arg
ada di awal (python 2.7), dan meletakkannya di akhir memang berjalan, tetapi tidak berfungsi sepenuhnya benar. Saya mendefinisikan fungsi yang hanya mengambilPrint(*args)
, dan kemudian hanya disebut mencetak dengansep='', end=''
. Dan sekarang berfungsi seperti yang saya inginkan. Jadi satu suara untuk ide.Banyak dari jawaban ini agak rumit. Di Python 3.x Anda cukup melakukan ini:
Nilai default akhir adalah
"\n"
. Kami hanya mengubahnya menjadi spasi atau Anda juga dapat menggunakanend=""
(tanpa spasi) untuk melakukan apa yangprintf
biasanya dilakukan.sumber
Anda ingin mencetak sesuatu untuk loop yang benar, tetapi Anda tidak ingin itu mencetak di baris baru setiap kali .. misalnya:
tetapi Anda ingin mencetak seperti ini: hi hi hi hi hi hi kan ???? cukup tambahkan koma setelah mencetak "hai"
Contoh:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
sumber
Atau memiliki fungsi seperti:
Kemudian sekarang:
Output:
sumber
Ini bekerja di 2.7.8 & 2.5.2 (Kanopi dan terminal OSX, masing-masing) - tidak memerlukan impor modul atau perjalanan waktu.
sumber
sys.stdout.isatty()
jika tidak diarahkan ke file.Ada dua cara umum untuk melakukan ini:
Cetak tanpa baris baru dengan Python 3.x
Tidak menambahkan apa pun setelah pernyataan cetak dan menghapus '\ n' dengan menggunakan
end=''
sebagai:Contoh lain dalam Loop :
Cetak tanpa baris baru dengan Python 2.x
Menambahkan tanda koma mengatakan bahwa setelah cetak abaikan
\n
.Contoh lain dalam Loop :
Semoga ini bisa membantu Anda. Anda dapat mengunjungi tautan ini .
sumber
end=" "
misalnya: print ('hello', end = '' "); print ('world')print 'hello' ;print'there'
di paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ... Anda tidak perlu mengimpor perpustakaan apa pun. Cukup gunakan karakter hapus:
ini menghilangkan baris baru dan spasi (^ _ ^) *
sumber