0

要赢得强力球彩票(这是一个极不可能发生的事件,所以不要浪费您的时间),您必须正确选择六个号码。前五个号码是从一个包含 53 个球的鼓中抽取的,第六个是从一个包含 42 个球的鼓中抽取的。这样做的机会是 1 分之 120,526,770。

输出需要采用以下形式:

官方(但没有结果)强力球号码生成器

几组数字?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 ....
4

2 回答 2

1

while i<=x:- 你永远不会增加i,所以它卡在你的最后一个循环中......

为避免此类事情并消除i+=1代码中的行噪音,我建议使用for循环for i in range(x)for n in range(5).

于 2013-10-22T23:16:17.000 回答
1

更好的是,以下表达式可以替换 list1:

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

至少,这与您的代码相同。但是你可能真正想要的(避免同一个球被选中两次)是:

random.sample( range(1,53), 5 )
于 2013-10-22T23:32:39.563 回答