我有一个简单的脚本来生成英国彩票号码(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]