如果用户键入'end',则应该打印列表,并且由于while name != "end":
而不应将'end'添加到列表中,但它是。
name = "";
names = []
while name != "end":
name = input("Please enter a name")
names.append(name)
print("hi")
print(names)
如果我输入Bob,Jim,结束,列表应该是['Bob', 'Jim']
,而是['Bob', 'Jim', 'end']
答案 0 :(得分:5)
当然,因为你在输入名字后立即追加
首选中间带有测试的无限循环(这样做可以保存双重测试/双input
次调用):
while True:
name = input("Please enter a name")
if name == "end":
break
names.append(name)
对于单行成瘾者,你可以itertools.takewhile
和itertools.repeat
,但是当你不习惯时,这更难以理解,但有趣的是:
import itertools
names = list(itertools.takewhile(lambda x : x != "end",(input("Please enter a name") for _ in itertools.repeat(None))))
甚至更好&更简单感谢评论:
names = list(iter(lambda:input("Please enter a name"), 'end'))
答案 1 :(得分:1)
你必须在进入之前询问并在里面问:),如果你这样做,你必须稍微有点订单。
这里name = "";
你以空字符串开头,那是"" != "end"
,所以第一次检查是没用的,因为你要求循环内的另一个输入,那个输入可能是“结束”,无论什么
name = input("Please enter a name")
names = []
while name != "end":
print("hi")
names.append(name)
name = input("Please enter a name")
print(names)