2017-12-29 22 views
0

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

あなたの問題は、rosterInputinputのない結果をroster.appendの結果を保存しているということです。追加はNoneを返します。

代わりに、

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

編集を行います。決してメインメニューに行くんの問題を修正するには、しばらく句の外にif節を移動し、とにかく場合は必要ありません。また、rosterInputwhile -loopの間に変更されないので、add()の後にもう一度rosterInputを読むべきだと思います。

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で変異しているためです。

+0

これはループの問題を解決しましたが、0を入力するとmainMenu関数 –

+0

に行くのではなくプログラムを終了します。最初に名前を入れた場合は0に戻り、ループにスタックされます。 –

+0

編集された答え。 – nnnmmm

関連する問題