在python中接受输入直到换行

时间:2013-12-11 05:23:38

标签: 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. 是否有任何内置函数可以将字符串转换回整数!?

3 个答案:

答案 0 :(得分:6)

你的方法很好。你可以这样写:

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

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

print(a)

NB:我没有包含任何错误处理。

关于你的其他问题:

  1. raw_input()在Python 2.7中的工作方式应该类似
  2. int() - 将给定参数强制转换为整数。如果不能,它将失败TypeError
  3. 对于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)
    

答案 1 :(得分:6)

可能是我所知道的最简单的方式(不幸的是,没有错误处理,这就是为什么你在生产中不经常看到它):

>>> lines = list(iter(input, ''))
abc
def
.
g

>>> lines
['abc', 'def', '.', 'g']

这使用iter的双参数调用签名,它调用第一个参数(input),直到它返回第二个参数(此处为'',空字符串)。 / p>

你的方式并不太糟糕,尽管在变化中经常会看到它

a = []
while True:
    b = input("->")
    if not b:
        break
    a.append(b)

实际上,使用breakcontinue是很少有人进行单行if的罕见情况之一,例如

a = []
while True:
    b = input("->")
    if not b: break
    a.append(b)

虽然这是正式淹没(tm)。

答案 2 :(得分:1)

  1. idk,这段代码看起来不错。
  2. 它在我的python 2.7.5上完美运行,带有raw_input()
  3. 只需使用int()函数:例如,int('121')将121返回为整数