Pertanyaan Bagaimana cara mencetak tanpa baris baru atau ruang?


Pertanyaannya ada di judul.

Saya ingin melakukannya . Apa yang ingin saya lakukan dalam contoh ini di :

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

Keluaran:

..........

Dengan Python:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

Dengan Python print akan menambahkan a \n atau ruang, bagaimana saya bisa menghindari itu? Sekarang, ini hanya sebuah contoh. Jangan bilang saya pertama-tama bisa membuat string lalu mencetaknya. Saya ingin tahu bagaimana cara "menambahkan" string stdout.


1367
2018-01-29 20:58


asal


Jawaban:


Cara umum

import sys
sys.stdout.write('.')

Anda mungkin juga perlu menelepon

sys.stdout.flush()

untuk memastikan stdout langsung memerah.

Python 2.6+

Dari Python 2.6 Anda dapat mengimpor print fungsi dari Python 3:

from __future__ import print_function

Ini memungkinkan Anda untuk menggunakan solusi Python 3 di bawah ini.

Python 3

Dengan Python 3, the print pernyataan telah diubah menjadi fungsi. Dengan Python 3, Anda dapat melakukan:

print('.', end='')

Ini juga berfungsi dengan Python 2, asalkan Anda telah menggunakannya from __future__ import print_function.

Jika Anda mengalami masalah dengan buffering, Anda bisa menyiram output dengan menambahkan flush=True argumen kata kunci:

print('.', end='', flush=True)

1887
2018-01-29 21:01



Ini harus sesederhana seperti yang dijelaskan pada tautan ini oleh Guido Van Rossum:

Re: Bagaimana cara mencetak tanpa c / r?

http://legacy.python.org/search/hypermail/python-1992/0115.html

Apakah mungkin untuk mencetak sesuatu tetapi tidak secara otomatis memiliki   Pengembalian carriage ditambahkan ke sana?

Ya, tambahkan koma setelah argumen terakhir untuk dicetak. Contohnya, lingkaran ini mencetak angka 0,9 pada garis yang dipisahkan oleh spasi. Catatan "cetak" tanpa parameter yang menambahkan baris baru final:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

271
2017-07-27 10:09



Catatan: Judul pertanyaan ini digunakan untuk menjadi sesuatu seperti "Bagaimana cara printf di python?"

Karena orang mungkin datang ke sini untuk mencari berdasarkan judul, Python juga mendukung substitusi printf-style:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

Dan, Anda dapat dengan mudah mengalikan nilai string:

>>> print "." * 10
..........

158
2018-01-29 21:24



Gunakan fungsi cetak python3-style untuk python2.6 + (juga akan merusak pernyataan cetak kata kunci yang ada di file yang sama.)

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

Untuk tidak merusak semua kata kunci cetak python2 Anda, buat terpisah printf.py mengajukan

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

Kemudian, gunakan di file Anda

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

Lebih banyak contoh yang menunjukkan gaya printf

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

85
2018-02-21 20:50



Ini bukan jawaban atas pertanyaan di judul, tapi itu adalah jawaban tentang cara mencetak pada baris yang sama:

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

37
2017-12-03 17:16



Yang baru (seperti Python 3.0) print fungsi memiliki opsional end parameter yang memungkinkan Anda mengubah karakter akhir. Ada juga sep untuk pemisah.


21
2018-01-29 21:07



Anda tinggal menambahkan , di akhir print berfungsi sehingga tidak akan mencetak pada baris baru.


16
2017-07-10 19:45