2017-02-23 55 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作为参数,因为它们是在外部范围使用。