我有一个简单的脚本来生成英国彩票号码(7个数字,1至49)。 我的代码有一个函数,它可以产生7个随机数字到列表中,列表上的运行设置将删除重复的数字,检查列表中是否还有7个成员,如果不是,函数会自动调用以产生7个新的数字。函数不返回列表
但是,当函数调用它自己时,它不会返回列表。
我很感激我知道我在这里做错了。
from random import randint
def lotto():
l = []
for r in range(1,8):
l.append(randint(1,49))
print "DEBUG: l=", l
print "DEBUG: set(l)=", set(l), len(set(l))
if(len(set(l)) !=7):
lotto()
else:
print "Before return l, l = ", l
return l
def main():
numbers = lotto()
print numbers
这里是一个样品运行不正常工作:
DEBUG: l= [44, 32, 12, 12, 33, 16, 31]
DEBUG: set(l)= set([32, 33, 44, 12, 16, 31]) 6
DEBUG: l= [46, 20, 10, 24, 16, 35, 44]
DEBUG: set(l)= set([35, 10, 44, 46, 16, 20, 24]) 7
Before return l, l = [46, 20, 10, 24, 16, 35, 44]
None
和样本来看,它正常工作:
DEBUG: l= [20, 5, 21, 37, 10, 44, 38]
DEBUG: set(l)= set([37, 38, 10, 44, 20, 21, 5]) 7
Before return l, l = [20, 5, 21, 37, 10, 44, 38]
[20, 5, 21, 37, 10, 44, 38]
谢谢大家。这已经成功了。我(显然)完全没有意识到在return语句中必须有lotto(),并且说实话我仍然不太确定为什么!但它是道路。再次感谢。 – nickl 2012-08-09 18:38:12
要显示问题已解决,请通过按旁边的复选标记将其答案标记为已接受。 – Lanaru 2012-08-09 18:45:42
Lanaru - 我做到了,但它告诉我必须先等待x分钟,然后才能将其标记为已解决。 – nickl 2012-08-09 18:53:00