2017-02-23 51 views
2

我想做一個簡單的程序,將採取所有的彩票號碼,並與您輸入的中獎號碼進行比較(使用集相交)。Python:問題與埃利夫打破

我已經得到了,你輸入你的號碼奠定了基礎,它被提交到一個子表,然後將轉換成五個獨立的組,它會被用來比較。但是,當您運行腳本時,當列表長度爲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

當你說「Max:5」時,你爲什麼要檢查'len(numbers)== 6'? –

+1

嘗試在'if'子句之前打印'my_numbers'並檢查。你得到了什麼? –

+1

你知道如何使用調試器嗎?我認爲這是你現在應該學習的東西。通過你的代碼的可視化調試器步進你可以一目瞭然的是與所有的變量和程序邏輯的發生看。我張貼一些[Python的視覺調試器的建議(http://stackoverflow.com/questions/16473278/python-visual-debugger)而回。我強烈建議你看一下這個答案,選擇列出的任何調試器,然後瀏覽你的代碼。你將學到很多關於如何解決這樣的問題的方法。 –

回答

1

更換

elif len(my_numbers) == 5: 

elif len(numbers) == 5: 

此外,建議您不要使用關鍵字list作爲功能set_convert的參數。相反,把它定義爲:

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

最後,你不需要my_numberswinning_numbers傳遞到函數comparison作爲參數,因爲它們是在外部範圍使用。