2017-02-23 17 views
2

私はあなたのすべての宝くじ番号を取り、あなたが入力した当選番号とそれらを(交差を使って)比較する簡単なプログラムを作ろうとしています。Python:Elif Breakの問題

私はあなたの番号を入力する場所を決めました。サブリストにサブミットされ、5つの別々のセットに変換されて比較されます。ただし、スクリプトを実行すると、リストの長さが5のときにwhileループが中断されません(これが目標です)。

誰かが間違っていることを説明することはできますか?あるいは、このプログラム全体を操作するより良い方法かもしれません。私はPythonの世界には比較的新しいので、私はちょうどダイビングして、このプログラムを動作させようとしています。

# Start Program 
def set_convert(list): 
    conversion = set(list) 
    return conversion 

def comparison(winning_numbers, my_numbers): 
    pass 

def main(): 
    print('Welcome to the Lottery Checker v1.0!') 

    winning_numbers = [int(x) for x in input('Enter the winning numbers(Sep w/ Spaces): ').split()] 

    winning_set = set_convert(winning_numbers) 

    my_numbers = [] 

    while True: 
     numbers = [int(x) for x in input('Enter your numbers(Sep w/ Spaces Max: 5): ').split()] 

     if len(numbers) == 6: 
      my_numbers.append(numbers) 
      print('Added! Want to add more?') 
     elif len(my_numbers) == 5: 
      break 
     else: 
      pass 
    else: 
     pass 

    print('Here are your numbers: {}. Good luck! :-)'.format(my_numbers)) 


main() 
+1

「最大:5」と言ったときに、なぜ「len(numbers)== 6」をチェックしていますか? –

+1

'if'節の直前で' my_numbers'を印刷して検査してください。何を手に入れますか? –

+1

デバッガの使い方を知っていますか?私はあなたが今学ぶべきことだと思います。ビジュアルデバッガでコードをステップ実行することで、すべての変数とプログラムロジックで何が起こっているかを一目で確認することができます。私はいくつかの[Pythonビジュアルデバッガの提案](http://stackoverflow.com/questions/16473278/python-visual-debugger)を投稿しました。私はあなたがその答えを見て、リストされたデバッガのどれかを選んで、コードをステップ実行することをお勧めします。このような問題をトラブルシューティングする方法については、多くのことを学びます。 –

答えて

1

はまた

elif len(numbers) == 5: 

elif len(my_numbers) == 5: 

を交換し、あなたが機能set_convertの引数としてキーワードlistを使用しないことをお勧めします。むしろ、としてそれを定義します。

def set_convert(mylist): 
    conversion = set(mylist) 
    return conversion 

そして最後に、あなたは彼らが外側のスコープで利用可能なので、引数として機能comparisonmy_numberswinning_numbersに渡す必要はありません。