输入错误:Python
问题描述:
我在每个字符串之间用换行符输入。输入错误:Python
输入:: 哈
哈
熙
熙
何
年底将通过在1至5的数注意我需要接受这个列表的严格在蟒蛇GS在我的名单将包括: [“哈”,“哈”,“熙”,“熙”,“豪”]
很多谷歌搜索后,我尝试下面的代码:
lines = []
sentinel = range(6)
for i in iter(raw_input, [str(s) for s in sentinel]):
if i=='':
continue
else:
lines.append(i)
print lines
我不知道为什么,但它进入了一个无限循环。
请帮我一把!
答
问题与方式iter()
interpets的sentinel
。这是一个单值,表示迭代结束。对于你的哨兵被击中,raw_input()
实际上必须返回一个相同的列表,这永远不会发生(因为它当然返回str
)。
如果你包了一点东西,你可以把它的工作:
sentinel = range(6)
def anything_but(values):
values = map(str, values)
def inner():
i = raw_input()
if i in values:
return None
return i
return inner
lines = []
for i in iter(anything_but(sentinel), None):
lines.append(i)
print lines
在这种情况下,None
是,如果输入数字0-5,将返回的标记值。顺便说一句,如果你想提到1-5,你应该使用range(1, 6)
来代替。
然而,你可能会更好送达发电机做:
sentinel = range(6)
def anything_but(values):
values = map(str, values)
i = raw_input()
while i not in values:
yield i
i = raw_input()
lines = []
for i in anything_but(sentinel):
lines.append(i)
print lines
答
你可以只使用一个while循环:
inp = raw_input()
while inp not in {"1","2","3","4","5"}:
if not inp:
continue
else:
lines.append(inp)
inp = raw_input()
print lines
在你的问题的输出使用输入:
['Ha', 'Ha', 'Hee', 'Hee', 'Ho']
什么是在输入的到底有多少? – Kevin 2014-09-19 00:21:40