Понимание функции raw_input в Python - PullRequest
3 голосов
/ 18 октября 2011

У меня есть следующий код:

age = raw_input("How old are you? ")
height = raw_input("How tall are you? ")
weight = raw_input("How much do you weigh? ")
print " So, you're %r old, %r tall and %r heavy." %(age, height, weight)

Хорошо, поэтому функция raw_input может выводить стандартно без завершающего перевода строки. Затем функция читает строку из ввода, преобразует ее в строку (убирает завершающий перевод строки) и возвращает ее.

Чего я не понимаю, так это того, почему каждое сообщение-подсказка отображается в новой строке, поскольку raw_input возвращает только строку. Он не добавляет новую строку, и у меня нет кода \n.

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Когда вы набираете ответ на raw_input (), вы заканчиваете вводом новой строки.Поскольку каждый введенный вами символ также отображается при вводе, также отображается новая строка.

Если вы изменили встроенные функции python и изменили raw_input, вы можете заставить его завершаться на «.»вместо '\ n'.Взаимодействие может выглядеть так: How old are you? 12.How tall are you? 12.How much do you weigh? 12. So you're ...

1 голос
/ 18 октября 2011

Вот способ сделать это в Windows, используя msvcrt.Вы можете сделать подобное на Mac или Unix, используя библиотеку curses.

import msvcrt
import string

print("How old are you? "),
age = ''
key = ''
while key != '\r':
    key = msvcrt.getch()
    age += key
print("How tall are you? "),
key = ''
height = ''
while key != '\r':
    key = msvcrt.getch()
    height += key
print("How much do you weigh? "),
key = ''
weight = ''
while key != '\r':
    key = msvcrt.getch()
    weight += key
print "\n So, you're %r old, %r tall and %r heavy." %(string.strip(age), string.strip(height), string.strip(weight))

Пример вывода выглядит следующим образом:

How old are you?  How tall are you?  How much do you weigh?
 So, you're '37' old, "6'" tall and '200' heavy.
...