148 votes

Python : éviter les nouvelles lignes avec la commande print

Lorsque j'utilise la fonction print il imprime ce que je veux et passe ensuite à une autre ligne. Par exemple :

print "this should be"; print "on the same line"

Devrait revenir :

Ceci devrait être sur la même ligne

mais retourne à la place :

cela devrait être
sur la même ligne

Plus précisément, j'essayais de créer un programme avec if qui me disait si un nombre était un 2 ou non

def test2(x):
    if x == 2:
        print "Yeah bro, that's tottaly a two"
    else:
        print "Nope, that is not a two. That is a (x)"

Mais il ne reconnaît pas le dernier (x) que la valeur introduite, et s'imprime plutôt exactement : "(x)" (la lettre avec les crochets). Pour que cela fonctionne, je dois écrire :

print "Nope, that is not a two. That is a"; print (x)

Et si, par exemple, j'entre test2(3) qui donne :

Non, ce n'est pas un deux, c'est un
3

Donc soit je dois faire en sorte que Python reconnaisse mon (x) à l'intérieur d'une ligne d'impression comme étant le nombre, soit j'ai besoin d'imprimer deux choses séparées mais sur la même ligne.

NOTE IMPORTANTE : J'utilise version 2.5.4

Autre remarque : si je mets print "Thing" , print "Thing2" il est indiqué "Erreur de syntaxe" lors de la deuxième impression.

197voto

Sven Marnach Points 133943

En Python 3.x vous pouvez utiliser la fonction end à l'argument print() pour empêcher l'impression d'un caractère de retour à la ligne :

print("Nope, that is not a two. That is a", end="")

En Python 2.x vous pouvez utiliser une virgule de fin :

print "this should be",
print "on the same line"

Vous n'avez cependant pas besoin de cela pour imprimer simplement une variable :

print "Nope, that is not a two. That is a", x

Notez que la virgule de fin de ligne entraîne toujours l'impression d'un espace à la fin de la ligne, c'est-à-dire que cela équivaut à l'utilisation de end=" " dans Python 3. Pour supprimer également le caractère espace, vous pouvez soit utiliser

from __future__ import print_function

pour accéder à la fonction d'impression de Python 3 ou utiliser sys.stdout.write() .

124voto

Levon Points 34085

En Python 2.x il suffit de mettre un , à la fin de votre print déclaration. Si vous voulez éviter l'espace vide qui print entre les éléments, utiliser sys.stdout.write .

import sys

sys.stdout.write('hi there')
sys.stdout.write('Bob here.')

les rendements :

hi thereBob here.

Il convient de noter qu'il y a pas de nouvelle ligne o espace vide entre les deux cordes.

En Python 3.x , avec son fonction print() vous pouvez simplement dire

print('this is a string', end="")
print(' and this is on the same line')

et obtenir :

this is a string and this is on the same line

Il existe également un paramètre appelé sep que vous pouvez définir dans print avec Python 3.x pour contrôler la façon dont les chaînes de caractères adjacentes seront séparées (ou non, selon la valeur attribuée à sep )

Par exemple,

Python 2.x

print 'hi', 'there'

donne

hi there

Python 3.x

print('hi', 'there', sep='')

donne

hithere

24voto

Hugh Bothwell Points 22635

Si vous utilisez Python 2.5, cela ne fonctionnera pas, mais pour les personnes utilisant 2.6 ou 2.7, essayez

from __future__ import print_function

print("abcd", end='')
print("efg")

se traduit par

abcdefg

Pour ceux qui utilisent la version 3.x, cette fonction est déjà intégrée.

13voto

Jon Clements Points 51556

Il suffit de le faire :

print 'lakjdfljsdf', # trailing comma

Cependant, dans :

print 'lkajdlfjasd', 'ljkadfljasf'

Il y a des espaces blancs implicites (c'est-à-dire ' ' ).

Vous avez également la possibilité de :

import sys
sys.stdout.write('some data here without a new line')

5voto

RobB Points 5722

Utilisez une virgule de fin pour éviter qu'une nouvelle ligne ne soit présentée :

print "this should be"; print "on the same line"

Il devrait l'être :

print "this should be", "on the same line"

En outre, vous pouvez simplement attacher la variable transmise à la fin de la chaîne de caractères souhaitée :

print "Nope, that is not a two. That is a", x

Vous pouvez également utiliser :

print "Nope, that is not a two. That is a %d" % x #assuming x is always an int

Vous pouvez accéder à des la documentation concernant le formatage des chaînes de caractères à l'aide de la fonction % (modulo).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X