循环不会b

2024-09-29 07:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一种数据库,使用从用户读入的列表。当用户输入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
[]
>>>

Tags: 用户name数据库列表countenterpleasetest1
3条回答

当你这么做的时候

readNames()
print readNames()

运行函数两次。在第二次运行时,你只需输入“完成”,这就是为什么你的列表仍然是空的。在

你要做的是:

^{pr2}$

我认为您的调用代码意外地调用了readnames()两次。在

啊,在你发布代码之后,我看到了问题:

readNames()
print readNames()

您调用readNames,按计划从stdin读取这些名称,正确地return读取的名称,然后将结果丢弃,因为您没有将其分配给任何东西(names = readNames())。然后您再次调用readNames,在您看来它似乎没有退出循环(它确实退出了,但您告诉它再次循环)。再次输入finish,第二次调用readNames时没有输入任何名称(nameList是一个局部变量,因此在函数执行结束后丢失),因此返回[]。在

要解决这个问题,(1)温习一下您的一般编程知识;)和(2)做一些类似names = readNames()print names的操作。在

相关问题 更多 >