Python: избегайте новой строки командой print [duplicate]

    

На этот вопрос уже есть ответ здесь:

    

Я начал программировать сегодня и имею эту проблему с Python. Это довольно глупо, но я не могу понять, как это сделать. Когда я использую команду печати, она печатает все, что я хочу, а затем переходит на другую строку. Например:

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 распознал my (x) внутри строки печати как число; или напечатать две разные вещи, но в одной строке. Заранее спасибо и извините за такой глупый вопрос.

ВАЖНОЕ ПРИМЕЧАНИЕ : я использую версию 2.5.4

Еще одно примечание: если я поставлю print "Thing" , print "Thing2", на втором отпечатке будет написано «Синтаксическая ошибка».

116 голосов | спросил Javicobos 29 J0000006Europe/Moscow 2012, 21:09:34

5 ответов


0

В 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().

ответил Sven Marnach 29 J0000006Europe/Moscow 2012, 21:10:44
0

В 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
ответил Levon 29 J0000006Europe/Moscow 2012, 21:18:04
0

Если вы используете Python 2.5, это не сработает, но для людей, использующих 2.6 или 2.7, попробуйте

from __future__ import print_function

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

приводит к

abcdefg

Для тех, кто использует 3.x, это уже встроено.

ответил Hugh Bothwell 29 J0000006Europe/Moscow 2012, 21:18:07
0

Вам просто нужно сделать:

print 'lakjdfljsdf', # trailing comma

Однако в:

print 'lkajdlfjasd', 'ljkadfljasf'

Существует неявный пробел (т.е. ' ').

У вас также есть возможность:

import sys
sys.stdout.write('some data here without a new line')
ответил Jon Clements 29 J0000006Europe/Moscow 2012, 21:16:08
0

Используйте запятую, чтобы не отображать новую строку:

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

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

ответил RobB 29 J0000006Europe/Moscow 2012, 21:11:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132