Risposte:
Esistono diversi modi per raggiungere il tuo risultato. Se stai solo cercando una soluzione per il tuo caso, usa la moltiplicazione di stringhe come menziona @Ant . Funzionerà solo se ciascuna delle tue print
istruzioni stampa la stessa stringa. Si noti che funziona per la moltiplicazione di qualsiasi stringa di lunghezza (ad es. 'foo' * 20
Opere).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
Se vuoi farlo in generale, crea una stringa e poi stampala una volta. Ciò consumerà un po 'di memoria per la stringa, ma effettuerà una sola chiamata a print
. Nota che la concatenazione di stringhe utilizzando +=
ora è lineare nella dimensione della stringa che stai concatenando, quindi sarà veloce.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
Oppure puoi farlo più direttamente usando sys.stdout . write () , che print
è un wrapper. Questo scriverà solo la stringa grezza che gli dai, senza alcuna formattazione. Si noti che nessuna riga nuova viene stampata anche alla fine degli 20 a
s.
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3 modifica l' print
istruzione in una funzione print () , che consente di impostare un end
parametro. Puoi usarlo in> = 2.6 importando da __future__
. Eviterei questo in qualsiasi serio codice 2.x, poiché sarebbe un po 'confuso per coloro che non hanno mai usato 3.x. Tuttavia, dovrebbe darti un assaggio di alcuni dei benefici che 3.x porta.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)
invece.
+=
in Python è un'operazione a tempo costante per la concatenazione di un singolo carattere.
Da PEP 3105: stampa come funzione nel documento Novità di Python 2.6 :
>>> from __future__ import print_function
>>> print('a', end='')
Ovviamente funziona solo con Python 3.0 o versioni successive (o 2.6+ con from __future__ import print_function
a all'inizio). L' print
istruzione è stata rimossa ed è diventata la print()
funzione per impostazione predefinita in Python 3.0.
È possibile sopprimere lo spazio stampando una stringa vuota da stdout tra le print
istruzioni.
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
Tuttavia, una soluzione più pulita consiste nel creare prima l'intera stringa che si desidera stampare e quindi inviarla con una singola print
istruzione.
sys.stdout.write()
è più conveniente in questo caso. Tuttavia, volevo mostrare che scrivere una stringa vuota su stdout sopprime lo spazio tra gli elementi scritti usando print
, il che potrebbe essere utile in situazioni simili.
È possibile stampare un carattere backspace ( '\b'
):
for i in xrange(20):
print '\ba',
risultato:
aaaaaaaaaaaaaaaaaaaa
Se vuoi che vengano visualizzati uno alla volta, puoi farlo:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
è necessario per forzare la scrittura del personaggio ogni volta che il ciclo viene eseguito.
Proprio come una nota a margine:
La stampa è O (1) ma la costruzione di una stringa e quindi la stampa è O (n), dove n è il numero totale di caratteri nella stringa. Quindi sì, mentre la creazione della stringa è "più pulita", non è il metodo più efficiente per farlo.
Il modo in cui lo farei è il seguente:
from sys import stdout
printf = stdout.write
Ora hai una "funzione di stampa" che stampa qualsiasi stringa che le dai senza restituire ogni volta il carattere di nuova riga.
printf("Hello,")
printf("World!")
L'output sarà: Ciao, mondo!
Tuttavia, se si desidera stampare numeri interi, float o altri valori non stringa, è necessario convertirli in una stringa con la funzione str ().
printf(str(2) + " " + str(4))
L'output sarà: 2 4
questo è davvero semplice
per le versioni di python 3+ devi solo scrivere i seguenti codici
for i in range(20):
print('a',end='')
converti il loop nei seguenti codici, non devi preoccuparti di altre cose
WOW!!!
È passato molto tempo fa
Ora, in Python 3.x sarà abbastanza semplice
codice:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
produzione:
aaaaaaaaaaaaaaaaaaaa
Ulteriori informazioni sulla funzione print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
Qui :
value1,value2,value3
puoi stampare più valori usando le virgole
sep = '-'
3 valori saranno separati dal carattere '-'
puoi usare qualsiasi carattere al posto di quella stringa pari come sep = '@' o sep = 'buono'
end='\n'
per impostazione predefinita, la funzione di stampa mette il carattere '\ n' alla fine dell'output
ma puoi usare qualsiasi carattere o stringa modificando il valore di fine variale
come end = '$' o end = '.' o end = 'Ciao'
file=sys.stdout
questo è un valore predefinito, output standard di sistema
usando questo argomento è possibile creare un flusso di file di output come
print("I am a Programmer", file=open("output.txt", "w"))
con questo codice creerai un file chiamato output.txt dove sarà memorizzato il tuo output I am a Programmer
flush = False
È un valore predefinito che utilizza flush = True per forzare lo svuotamento del flusso
"".join("a" for i in xrange(20))
. (È molto più flessibile del semplice fare"a" * 20
, dato che presumo sia un esempio semplificato).