理解Python中的raw_input函数

3 投票
2 回答
5793 浏览
提问于 2025-04-17 04:34

我有以下代码:

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 个回答

1

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

当你在使用raw_input()输入回答时,最后需要按一下回车键来结束输入。因为你输入的每个字符都会在屏幕上显示出来,所以回车键也会显示出来。

如果你修改了Python的内置功能,把raw_input改成在输入一个点(.)时结束,而不是按回车(\n),那么输入的过程可能会变成这样:

你多大了? 12. 你多高? 12. 你体重多少? 12. 所以你是...

撰写回答