我有一個簡單的腳本來生成英國彩票號碼(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