J'ai ce code:
>>> 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
Je veux sortir 'a'
, sans ' '
comme ceci:
aaaaaaaaaaaaaaaaaaaa
C'est possible?
Il y a plusieurs façons d'atteindre votre résultat. Si vous souhaitez simplement une solution à votre cas, utilisez multiplication de chaîne comme @ Ant mentionne. Cela ne fonctionnera que si chacune de vos instructions print
imprime la même chaîne. Notez que cela fonctionne pour la multiplication de n'importe quelle chaîne de longueur (par exemple, 'foo' * 20
fonctionne).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
Si vous souhaitez généralement procéder ainsi, créez une chaîne, puis imprimez-la une fois. Cela consomme un peu de mémoire pour la chaîne, mais n'appelle qu'un seul appel à print
. Notez que la concaténation de chaînes à l'aide de +=
est maintenant linéaire dans la taille de la chaîne que vous concaténez, ce qui accélère le processus.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
Ou vous pouvez le faire plus directement en utilisant sys.stdout . write () , qui print
est une enveloppe. Cela n'écrira que la chaîne brute que vous lui aurez donnée, sans aucune mise en forme. Notez qu'aucune nouvelle ligne n'est imprimée, même à la fin des 20 a
s.
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3 modifie l'instruction print
en une fonction print () , qui vous permet de définir un paramètre end
. Vous pouvez l'utiliser dans> = 2.6 en important de __future__
. J'éviterais cependant cela dans tout code 2.x sérieux, car ce serait un peu déroutant pour ceux qui n'ont jamais utilisé 3.x. Cependant, cela devrait vous donner un avant-goût des bienfaits apportés par 3.x.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
A partir de PEP 3105: imprimer en tant que fonction dans le Nouveautés de Python 2.6 document:
>>> from __future__ import print_function
>>> print('a', end='')
Évidemment, cela ne fonctionne qu'avec python 3.0 ou supérieur (ou 2.6+ avec un from __future__ import print_function
au début). L'instruction print
a été supprimée et est devenue la fonction print()
par défaut dans Python 3.0.
Vous pouvez supprimer cet espace en imprimant une chaîne vide sur la sortie standard entre les instructions print
.
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
Cependant, une solution plus propre consiste à créer d’abord la chaîne entière que vous souhaitez imprimer, puis à la générer avec une seule instruction print
.
Vous pouvez imprimer un caractère de retour arrière ('\b'
):
for i in xrange(20):
print '\ba',
résultat:
aaaaaaaaaaaaaaaaaaaa
Python 3.x:
for i in range(20):
print('a', end='')
Python 2.6 ou 2.7:
from __future__ import print_function
for i in xrange(20):
print('a', end='')
Si vous voulez qu’ils se présentent un à la fois, vous pouvez le faire:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
est nécessaire pour forcer l'écriture du caractère à chaque exécution de la boucle.
Juste comme note de côté:
L'impression est O(1) mais la construction d'une chaîne puis l'impression sont O (n), où n représente le nombre total de caractères de la chaîne. Alors oui, bien que la construction de la chaîne soit "plus propre", ce n'est pas la méthode la plus efficace.
La façon dont je le ferais est la suivante:
from sys import stdout
printf = stdout.write
Vous avez maintenant une "fonction d'impression" qui imprime toute chaîne que vous lui attribuez sans renvoyer le nouveau caractère de ligne à chaque fois.
printf("Hello,")
printf("World!")
La sortie sera: Hello, World!
Toutefois, si vous souhaitez imprimer des entiers, des flottants ou d'autres valeurs autres que des chaînes, vous devez les convertir en chaîne à l'aide de la fonction str ().
printf(str(2) + " " + str(4))
La sortie sera: 2 4
sans quoi? tu veux dire
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
?
c'est vraiment simple
pour python _ 3 versions ou plus, il vous suffit d'écrire les codes suivants
for i in range(20):
print('a',end='')
convertissez simplement la boucle en codes suivants, vous n'avez pas à vous soucier d'autres choses
WOW !!!
C'est joli long time il y a
Maintenant, dans python 3.x ce sera assez facile
code:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
sortie:
aaaaaaaaaaaaaaaaaaaa
Plus d'informations sur la fonction print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
ici:
value1,value2,value3
vous pouvez imprimer valeurs multiples en utilisant virgules
sep = '-'
3 valeurs seront séparées par le caractère '-'
vous pouvez utiliser n'importe quel caractère au lieu de cette chaîne, comme sep = '@' ou sep = 'bon'
end='\n'
par défaut, la fonction d'impression met '\ n' charater à la fin de la sortie
mais vous pouvez utiliser n'importe quel caractère ou chaîne en modifiant la valeur de fin de variale
comme fin = '$' ou fin = '.' ou fin = 'Bonjour'
file=sys.stdout
c'est une valeur par défaut, sortie standard du système
en utilisant cet argument, vous pouvez créer un flux de fichier de sortie comme
print("I am a Programmer", file=open("output.txt", "w"))
par ce code, vous créerez un fichier nommé output.txt où votre sortie je suis un programmeur sera stockée
flush = False
C'est une valeur par défaut en utilisant flush = True vous pouvez forcer vider le flux
aussi simple que cela
def printSleeping():
sleep = "I'm sleeping"
v = ""
for i in sleep:
v += i
system('cls')
print v
time.sleep(0.02)