Подтвердить что ты не робот

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", он произнесет "Синтаксическая ошибка" во втором отпечатке.

4b9b3361

Ответ 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

Вы можете получить дополнительную документацию относительно форматирования строки с использованием оператора % (по модулю).