我是一名蟒蛇初学者。我想尝试接受用户的输入,只要他/她愿意。当按下回车键时,程序应该停止接受输入。
那是
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
还有其他有效的“pythonic”方法吗?
虽然这与python 3.3完美配合,但它不适用于python 2.7(其中input()由raw_input()函数替换)。屏幕只是保持愚蠢而没有任何反应。那是为什么?
是否有任何内置函数可以将字符串转换回整数!?
答案 0 :(得分:6)
你的方法很好。你可以这样写:
a = []
prompt = "-> "
line = input(prompt)
while line:
a.append(int(line))
line = input(prompt)
print(a)
NB:我没有包含任何错误处理。
关于你的其他问题:
raw_input()
在Python 2.7中的工作方式应该类似int()
- 将给定参数强制转换为整数。如果不能,它将失败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)
答案 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)
实际上,使用break
和continue
是很少有人进行单行if
的罕见情况之一,例如
a = []
while True:
b = input("->")
if not b: break
a.append(b)
虽然这是正式淹没(tm)。
答案 2 :(得分:1)