2013-10-22 88 views
0

要贏得強力球彩票(一個極不可能的事件,所以不要浪費你的時間),你必須正確選擇六個數字。前五個數字從包含53個球的鼓中抽取,第六個從包含42個球的鼓抽取。這樣做的可能性是120,526,770中的1。強力球號碼生成器

輸出需要在表格:

官方(但無果而終)強力球數發生器

多少組數字? 3

你的數字:3 12 14 26 47強力球:2個
你的數字:1 4 31 34 51強力球:17個
你的數字:10 12 49 50 53強力球:35

import random 

#Powerball 

print "Offical Powerball number generaor" 

x = int(raw_input("How many sets of numbers? ")) 


z = range(1,42) 
z1 = random.choice(z) 

def list1(): 
    l1=[] 
    n=1 
    while n<=5: 
     y = range(1,53) 
     y1 = random.choice(y) 
     l1.append(y1) 
     n +=1 
    print sorted(l1) 

i=1 
while i<=x: 
# print "Your numbers: " + list1() + "Powerball: "+ str(z1) 

    print list1() 

raw_input("Press<enter>") 

我代碼的輸出進行無限循環。我必須殺死它。該消息是:

None  
[2, 7, 22, 33, 42]  
None  
[15, 19, 19, 26, 48]  
None  
[1, 5, 7, 26, 41]  
None  
[7, 42, 42, 42, 51]  
None  
..... etc .... 
+0

如果在輸出循環中輸入'i',那麼你不會遞增值。 – 2013-10-22 23:18:00

回答

1

while i<=x: - 你永遠不增加i,所以它停留在你的最後一個循環......

爲了避免這樣的事情,並刪除的i+=1線上的噪聲在你的代碼,我建議使用forfor i in range(x)for n in range(5)

+0

非常感謝,這工作。現在我的程序的這部分不起作用:「打印」你的號碼:「+ list1()+」強力球:「+ str(z1)」。錯誤:「temp4.py」,第23行,在 print「Your numbers:」+ list1()+「Powerball:」+ str(z1) TypeError:無法連接'str'和'NoneType'對象 – Shandeep

+0

@ Shandeep Plus在這裏連接字符串。 list1()不是一個字符串,所以解釋器不知道你想要添加一個列表到一個字符串。你會想要將你想要打印的東西轉換爲字符串格式。 – sashkello

1

更重要的是,下面的表達式可以取代列表1:

[random.choice(range(1,53)) for x in xrange(5)] 

至少,這確實與您的代碼。但是你可能真正想要的是(避免同樣的球被選擇兩次):

random.sample(range(1,53), 5) 
+0

我用過:i = [random.choice(range(1,53)for x in range(5))] print sorted(i) 但是我得到了錯誤:ile「temp4.py」,第11行,in i = [random.choice(range(1,53)for x in range(5))] 文件「/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random。 py「,第274行,選擇 TypeError:'generator'類型的對象沒有len() – Shandeep

+0

沒關係,它工作。謝謝 – Shandeep