3

我有以下代码:

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的代码中也没有。

4

2 回答 2

4

当您键入对 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 ...

于 2011-10-18T18:51:16.783 回答
1

这是一种在 Windows 中使用 msvcrt 的方法。你可以使用 curses 库在 Mac 或 unix 上做类似的事情。

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.
于 2011-10-18T19:00:11.190 回答