Python: избегать новой строки с командой печати
Я начал программировать сегодня и имею эту проблему с Python. Это довольно глупо, но я не могу понять, как это сделать. Когда я использую команду печати, она печатает все, что я хочу, а затем переходит к другой строке. Например:
print "this should be"; print "on the same line"
Должен вернуться:
это должно быть в одной строке
но вместо этого возвращает:
это должно быть в той же строке
Точнее, я пытался создать программу с if
, которая сообщила мне, было ли число 2 или нет
def test2(x):
if x == 2:
print "Yeah bro, that 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
Другое примечание: если я положил print "Thing" , print "Thing2"
, он произнесет "Синтаксическая ошибка" во втором отпечатке.
Ответы
Ответ 1
В 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()
.
Ответ 2
В Python 2.x просто положите ,
в конец вашего оператора print
. Если вы хотите избежать пустого пространства, которое print
устанавливает между элементами, используйте sys.stdout.write
.
import sys
sys.stdout.write('hi there')
sys.stdout.write('Bob here.')
дает:
hi thereBob here.
Обратите внимание, что между двумя строками нет новой строки или пробела.
В Python 3.x, с функцией print(), вы можете просто сказать
print('this is a string', end="")
print(' and this is on the same line')
и получим:
this is a string and this is on the same line
Существует также параметр sep
, который вы можете установить в печати с помощью Python 3.x для управления тем, как смежные строки будут разделены (или не зависят от значения, присвоенного sep
)
Например,
Python 2.x
print 'hi', 'there'
дает
hi there
Python 3.x
print('hi', 'there', sep='')
дает
hithere
Ответ 3
Если вы используете Python 2.5, это не сработает, но для пользователей, использующих 2.6 или 2.7, попробуйте
from __future__ import print_function
print("abcd", end='')
print("efg")
приводит к
abcdefg
Для тех, кто использует 3.x, он уже встроен.
Ответ 4
Вам просто нужно сделать:
print 'lakjdfljsdf', # trailing comma
Однако в:
print 'lkajdlfjasd', 'ljkadfljasf'
Существует неявное пробел (т.е. ' '
).
У вас также есть возможность:
import sys
sys.stdout.write('some data here without a new line')
Ответ 5
Используйте конечную запятую, чтобы предотвратить отображение новой строки:
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
Вы можете получить дополнительную документацию относительно форматирования строки с использованием оператора %
(по модулю).