理解Python中的原始输入函数

理解Python中的原始输入函数,python,raw-input,Python,Raw Input,我有以下代码: 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函数可以在没有尾随换行符的情况下进行标准输出。然后,函数从输入中

我有以下代码:

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
函数可以在没有尾随换行符的情况下进行标准输出。然后,函数从输入中读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串


我不明白的是,为什么每个提示消息都显示在一个新行上,因为原始输入只返回一个字符串。它没有添加换行符,代码中也没有任何
\n

当您对原始输入()键入响应时,您可以通过输入换行来完成。由于输入的每个字符也会在键入时显示,因此换行符也会显示

如果修改了python内置代码并更改了原始输入,则可以使其在“.”而不是“\n”终止。交互可能如下所示:
你多大了?12.你有多高?12.你体重多少?12所以你…

这里有一种在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.

当您输入输入时,是否在输入完成后按enter键?@murgatroid99:True,尽管人们可能会认为,当enter将输入“发送”到应用程序时,它不再是输入的一部分。。。但是。。。是的。你想让所有提示都在同一行吗?原始输入无法做到这一点。您可以在windows上尝试诅咒或msvcrt。@murgatroid99就像Felix Kling说的,我认为输入不是输入的一部分。看来我错了。谢谢你给我指出这一点。你也可以让它将字符回显到屏幕上,但请注意它直到最后才输出用户的输入。