Почему вывод eclipse + pydev print() выглядит странно с двумя строками?

привет всем, я только что сделал следующее:

a = input("give a word: ")
b = input("give another word: ")

c = a + " " + b

print("result is", c)

и получить вывод следующим образом:

give a word: name
give another word: word
result is name
word

мой вопрос: почему вывод на консоль pydev или eclipse в две строки? я ожидал вывести следующее:

give a word: name
give another word: word
result is name word

как и почему это происходит со мной? в cmd все выглядит нормально??!!

также я обнаружил, что python сохраняет строки с помощью «\ r», я думаю, что это проблема на консоли pydev, не так ли?


person srisar    schedule 27.03.2010    source источник
comment
Эй, результат - это имя, братан! Слово!   -  person Thomas    schedule 27.03.2010
comment
что?, я не понял, что ты говоришь   -  person srisar    schedule 27.03.2010
comment
Неважно. Вы можете/должны использовать raw_input вместо input. Это менее страшно, потому что не делает eval.   -  person Thomas    schedule 27.03.2010
comment
@Thomas: В Python-3.x input действует так же, как raw_input для Python-2.x. (raw_input был переименован в input).   -  person unutbu    schedule 27.03.2010
comment
я боюсь, что в python 3.1 нет функции с именем raw_input   -  person srisar    schedule 27.03.2010
comment
Вы не сказали 3.1. В любом случае, не могли бы вы попробовать распечатать значения repr(a), repr(b) и repr(c)? Может быть, туда пробрался \r или \n.   -  person Thomas    schedule 27.03.2010
comment
теперь вы можете, но спасибо, указанный вами метод действительно сработал для меня, несмотря на то, что информация была неправильной, но функция rstrip() хорошая. спасибо, унутбу   -  person srisar    schedule 27.03.2010


Ответы (2)


Мне кажется, что Eclipse + PyDev также сохраняет символ новой строки в строке. В зависимости от операционной системы существует несколько вариантов символа новой строки: \n, \r, \r\n.

В любом случае, я думаю, что следующее должно решить вашу проблему:

a = raw_input("give a word: ").strip()
b = raw_input("give another word: ").strip()
c = a + " " + b

Я протестировал этот код на PyDev для Eclipse Galileo в Windows7, и он работает.

Надеюсь это поможет

person inspectorG4dget    schedule 27.03.2010
comment
да, спасибо, первое впечатление самое лучшее, и я только что переключился обратно на Wing IDE, хе-хе-хе - person srisar; 29.03.2010
comment
Мне не нравится концепция фанбоев, и мне не нравится, когда люди выступают за использование чего-либо без уважительной причины (как обычно делают фанбои). Однако я использовал как Eclipse+PyDev, так и WingIDE. Я считаю, что Eclipse намного лучше, и я настоятельно рекомендую вам не отказываться от него, не дав ему шанса. - person inspectorG4dget; 30.03.2010

Это очень странно.

Вы получаете дополнительную новую строку после слова? (вы можете проверить, выполнив другую команду печати).

Eclipse всегда странно работает при вводе с консоли. Я не удивлюсь, если он каким-то образом сохранит CR или LF (или оба) в строке, так что при печати каждого из них вы получите разрыв строки. Но тогда вы должны получить еще один разрыв строки после слова.

person Uri    schedule 27.03.2010
comment
нет, я не получаю еще одну новую строку после слова, только одну, в режиме отладки значение отображается следующим образом: a = str: name\r - person srisar; 27.03.2010