web-dev-qa-db-fra.com

Python: évite les nouvelles lignes avec la commande print

J'ai commencé la programmation aujourd'hui et j'ai ce problème avec Python. C'est assez bête mais je n'arrive pas à comprendre comment le faire. Lorsque j'utilise la commande d'impression, elle imprime ce que je veux et passe ensuite à une autre ligne. Par exemple:

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

Devrait retourner:

cela 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) en tant que valeur entrée et affiche 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 j'ai besoin de faire que Python reconnaisse mon (x) dans une ligne d'impression en tant que nombre; ou pour imprimer deux choses distinctes mais sur la même ligne. Merci d'avance et désolé pour une question aussi stupide.

NOTE IMPORTANTE: J'utilise version 2.5.4

Autre remarque: si je mets print "Thing" , print "Thing2", le message "Erreur de syntaxe" s'affiche lors de la deuxième impression.

129
Javicobos

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

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

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

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

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

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

Notez que la virgule de fin crée toujours un espace en fin de ligne, c’est-à-dire qu’elle revient à utiliser end=" " dans Python 3. Pour supprimer également le caractère d’espace, vous pouvez soit: utilisation

from __future__ import print_function

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

179
Sven Marnach

Dans Python 2.x , placez simplement un , à la fin de votre instruction print. Si vous voulez éviter l'espace vide que print met entre les éléments, utilisez sys.stdout.write.

import sys

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

rendements:

hi thereBob here.

Notez qu'il n'y a pas de nouvelle ligne ou d'espace vide entre les deux chaînes.

Dans Python 3.x , avec sa 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 lors de l’impression avec Python 3.x pour contrôler la manière dont les chaînes adjacentes seront séparées (ou non, en fonction de la valeur affectée à sep )

Par exemple.,

Python 2.x

print 'hi', 'there'

donne

hi there

Python 3.x

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

donne

hithere
120
Levon

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")

résulte en

abcdefg

Pour ceux qui utilisent 3.x, cela est déjà intégré.

23
Hugh Bothwell

Vous devez simplement faire:

print 'lakjdfljsdf', # trailing comma

Cependant dans:

print 'lkajdlfjasd', 'ljkadfljasf'

Il y a des espaces implicites (ie ' ').

Vous avez également la possibilité de:

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

Utilisez une virgule pour empêcher une nouvelle ligne de se présenter:

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

Devrait être:

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

En outre, vous pouvez simplement attacher la variable en cours de transmission à la fin de la chaîne souhaitée par:

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

Vous pouvez aussi utiliser:

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

Vous pouvez accéder à plus de documentation concernant le formatage de chaîne à l'aide de l'opérateur % (modulo).

5
RobB