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 ça:
aaaaaaaaaaaaaaaaaaaa
C'est possible?
python
string
printing
python-2.x
pythonFoo
la source
la source
"".join("a" for i in xrange(20))
. (C'est beaucoup plus flexible que de simplement faire"a" * 20
, car je suppose que c'est un exemple simplifié).Réponses:
Il existe plusieurs façons d'atteindre votre résultat. Si vous souhaitez simplement une solution pour votre cas, utilisez la multiplication de chaînes comme le mentionne @Ant . Cela ne fonctionnera que si chacune de vos
print
instructions imprime la même chaîne. Notez que cela fonctionne pour la multiplication de toute chaîne de longueur (par exemple,'foo' * 20
fonctionne).Si vous voulez faire cela en général, créez une chaîne et imprimez-la une fois. Cela consommera un peu de mémoire pour la chaîne, mais ne fera qu'un seul appel à
print
. Notez que la concaténation de chaînes en utilisant+=
est maintenant linéaire dans la taille de la chaîne que vous concaténez donc ce sera rapide.Ou vous pouvez le faire plus directement en utilisant sys.stdout . write () , qui
print
est un wrapper autour. Cela n'écrira que la chaîne brute que vous lui donnez, sans aucun formatage. Notez qu'aucune nouvelle ligne n'est imprimée même à la fin des 20a
s.Python 3 transforme l'
print
instruction en une fonction print () , qui vous permet de définir unend
paramètre. Vous pouvez l'utiliser dans> = 2.6 en important depuis__future__
. J'éviterais cela dans tout code 2.x sérieux, car ce sera un peu déroutant pour ceux qui n'ont jamais utilisé 3.x. Cependant, cela devrait vous donner un avant-goût de certains des bienfaits que la 3.x apporte.la source
"".join(...)
plutôt.+=
en Python est une opération à temps constant pour la concaténation d'un seul caractère.De PEP 3105: imprimer en tant que fonction dans le document Quoi de neuf en Python 2.6 :
É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'print
instruction a été supprimée et est devenue laprint()
fonction par défaut dans Python 3.0.la source
Vous pouvez supprimer l'espace en imprimant une chaîne vide vers stdout entre les
print
instructions.Cependant, une solution plus propre consiste d'abord à créer la chaîne entière que vous souhaitez imprimer, puis à la sortir avec une seule
print
instruction.la source
sys.stdout.write()
est plus pratique dans ce cas. Cependant, je voulais montrer que l'écriture d'une chaîne vide dans stdout supprime l'espace entre les éléments écrits en utilisantprint
, ce qui pourrait être utile dans des situations similaires.Vous pouvez imprimer un caractère de retour arrière (
'\b'
):résultat:
la source
Python 3.x:
Python 2.6 ou 2.7:
la source
Si vous souhaitez qu'ils s'affichent un par un, vous pouvez le faire:
sys.stdout.flush()
est nécessaire pour forcer l'écriture du caractère à chaque exécution de la boucle.la source
Juste comme note latérale:
L'impression est O (1) mais la construction d'une chaîne, puis l'impression est O (n), où n est le nombre total de caractères dans la chaîne. Donc oui, bien que la construction de la chaîne soit "plus propre", ce n'est pas la méthode la plus efficace pour le faire.
La façon dont je le ferais est la suivante:
Maintenant, vous avez une "fonction d'impression" qui imprime toute chaîne que vous lui donnez sans retourner le caractère de nouvelle ligne à chaque fois.
Le résultat sera: Hello, World!
Cependant, si vous souhaitez imprimer des entiers, des flottants ou d'autres valeurs non-chaîne, vous devrez les convertir en chaîne avec la fonction str ().
La sortie sera: 2 4
la source
Soit ce que dit Ant , soit accumulé dans une chaîne, puis imprimez une fois:
la source
sans quoi? tu veux dire
?
la source
c'est vraiment simple
pour les versions de python 3+, il vous suffit d'écrire les codes suivants
convertissez simplement la boucle dans les codes suivants, vous n'avez pas à vous soucier d'autres choses
la source
SENSATIONNEL!!!
C'est joli longtemps il y a
Maintenant en python 3.x, ce sera assez facile
code:
production:
En savoir plus sur la fonction print ()
Ici :
vous pouvez imprimer plusieurs valeurs en utilisant des virgules
3 valeurs seront séparées par le caractère '-'
vous pouvez utiliser n'importe quel caractère au lieu de cette chaîne paire comme sep = '@' ou sep = 'good'
par défaut la fonction d'impression place le caractère '\ n' à la fin de la sortie
mais vous pouvez utiliser n'importe quel caractère ou chaîne en changeant la valeur de fin variale
comme end = '$' ou end = '.' ou end = 'Bonjour'
il s'agit d'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
par ce code vous créerez un fichier nommé output.txt où votre sortie Je suis un programmeur sera stockée
C'est une valeur par défaut en utilisant flush = True, vous pouvez vider de force le flux
la source
aussi simple que cela
la source