循环似乎应该打破但不会

时间:2017-12-29 18:07:53

标签: python-3.x

即使输入0,我也无法阻止它回到rosterInput。 (它在ide中的格式正确,但由于某些原因,我似乎无法在此处正确使用。)此外,这是否会将用户的多个输入正确存储在列表中,以后我可以在不同的函数中打印?

def add():
#adding team members...
global roster
roster = []
rosterInput = roster.append(input("New member or members: "))
while rosterInput != "0":
    add()
    if rosterInput == "0":
        mainMenu()

1 个答案:

答案 0 :(得分:1)

您的问题是,您将roster.append的结果保存到rosterInput,而不是input的结果。追加返回None

相反,做

rosterInput = input("New member or members: ")
roster.append(rosterInput)

编辑:要纠正永不进入主菜单的问题,请将if子句移到while子句之外,并且不需要if。此外,rosterInput循环期间while永远不会发生变化,因此我认为您应该在rosterInput之后再次阅读add()。总之,要迭代地执行:

rosterInput = input("New member or members: ")
while rosterInput != "0":
    roster.append(rosterInput)
    rosterInput = input("New member or members: ")
mainMenu()

递归地做,这可能更接近你原来的表述:

roster = []
def add():
    # adding team members...
    rosterInput = input("New member or members: ")
    if rosterInput != "0":
        roster.append(rosterInput)
        add()
    else:
        mainMenu()

使用函数外部的空列表初始化名单,以便每次都不会覆盖它。你不需要这里的global声明,因为你没有重新分配名册,只是用append变异。