我正在创建一种数据库,使用从用户读入的列表。当用户输入finish
时,我希望while循环停止。但是,由于某些原因,我需要输入finish
两次,它才能中断循环。在
此外,返回后列表为空。在
def readNames():
nameList = []
count = 0
while count != -1: #infinite loop
addList = raw_input("Please enter a name: ")
if addList == 'finish':
return nameList
break
nameList.append(addList)
print nameList
我正在调用它并检查它是否与
^{pr2}$还有,这是输出
Please enter a name: Dave
['Dave']
Please enter a name: Gavin
['Dave', 'Gavin']
Please enter a name: Paul
['Dave', 'Gavin', 'Paul']
Please enter a name: Test1
['Dave', 'Gavin', 'Paul', 'Test1']
Please enter a name: finish
Please enter a name: finish
[]
>>>
当你这么做的时候
运行函数两次。在第二次运行时,你只需输入“完成”,这就是为什么你的列表仍然是空的。在
你要做的是:
^{pr2}$我认为您的调用代码意外地调用了
readnames()
两次。在啊,在你发布代码之后,我看到了问题:
您调用
readNames
,按计划从stdin读取这些名称,正确地return
读取的名称,然后将结果丢弃,因为您没有将其分配给任何东西(names = readNames()
)。然后您再次调用readNames
,在您看来它似乎没有退出循环(它确实退出了,但您告诉它再次循环)。再次输入finish
,第二次调用readNames
时没有输入任何名称(nameList
是一个局部变量,因此在函数执行结束后丢失),因此返回[]
。在要解决这个问题,(1)温习一下您的一般编程知识;)和(2)做一些类似
names = readNames()
;print names
的操作。在相关问题 更多 >
编程相关推荐