在python中接受输入直到换行符


问题内容

我是python初学者。我正尝试接受用户的输入,只要他/她愿意即可。仅按回车键时,程序应停止接受输入。

那是

25
65
69
32 
   #stop here since the enter key was pressed without any input

我想出了以下代码来做到这一点…。

a = []
while 1:

    b = input("->")
    if(len(b)>0):
        a.append(b)
    else:
        break

  1. 还有其他有效的“ pythonic”方法吗?

  2. 虽然这在python 3.3上可以完美使用,但在python 2.7上则不能使用(用input_()替换为raw_input()函数)。屏幕只是呆呆的,没有任何反应。这是为什么?

  3. 是否有任何内置函数可以将字符串转换回整数!


问题答案:

您的方法通常很好。您可以这样写:

a = []
prompt = "-> "
line = input(prompt)

while line:
    a.append(int(line))
    line = input(prompt)

print(a)

注意: 我没有包括任何错误处理。

关于您的其他问题:

  1. raw_input() 应该在Python 2.7中类似地工作
  2. int()-将给定参数屈曲为整数。如果不能,它将失败并显示a TypeError

对于一个Python 2.x的版本,只是掉input()raw_input()

仅出于教育目的,您还可以使用以下 功能样式 编写它:

def read_input(prompt):
    x = input(prompt)
    while x:
        yield x
        x = input(prompt)


xs = list(map(int, read_input("-> ")))
print(xs)