Python: избягване на нов ред с командата print

Започнах да програмирам днес и имам този проблем с Python. Това е доста тъпо, но не мога да разбера как да го направя. Когато използвам командата print, тя отпечатва каквото искам и след това преминава на друг ред. Например:

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

Трябва да върне:

това трябва да е на същия ред

но вместо това връща:

това трябва да бъде на същия ред

По-точно, опитвах се да създам програма с if, която да ми казва дали дадено число е 2 или не

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

Но тя не разпознава последното (x) като въведена стойност, а отпечатва точно: "(x)" (буквата със скобите). За да работи, трябва да напиша:

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

И ако например въведа test2(3), това дава:

Не, това не е две, а е 3

Така че или трябва да накарам Python да разпознае моето (x) вътре в реда за печат като число; или да отпечата две отделни неща, но на един и същи ред. Благодаря предварително и се извинявам за толкова глупавия въпрос.

ВАЖНА ЗАБЕЛЕЖКА: Използвам версия 2.5.4

Друга забележка: Ако сложа печатане "Нещо" , печатане "Нещо2", се изписва "Синтаксисна грешка" при второто печатане.

Решение

В Python 3.x можете да използвате аргумента end на функцията print(), за да предотвратите отпечатването на символ за нов ред:

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

В Python 2.x можете да използвате запетая накрая:

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

Това обаче не е необходимо, за да отпечатате променлива:

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

Имайте предвид, че запетаята накрая все още води до отпечатване на интервал в края на реда, т.е. това е еквивалентно на използването на end=" " в Python 3. За да потиснете и символа за интервал, можете да използвате

from __future__ import print_function

за да получите достъп до функцията за печат на Python 3, или да използвате sys.stdout.write().

Коментари (8)

Просто трябва да направите:

print 'lakjdfljsdf', # trailing comma

Въпреки това в:

print 'lkajdlfjasd', 'ljkadfljasf'

Има скрит бял интервал (т.е. ' ').

Имате също така възможност за:

import sys
sys.stdout.write('some data here without a new line')
Коментари (4)

Използвайте крайна запетая, за да предотвратите появата на нов ред:

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

Трябва да бъде:

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

Освен това можете просто да прикачите подаваната променлива към края на желания низ чрез:

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

Можете също така да използвате:

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

Можете да получите достъп до допълнителна документация относно форматирането на низове с помощта на оператора % (modulo).

Коментари (1)