我不知道,为什么不在python中使用该代码。问题是,我可以得到数字,但有时一些数字是统一的。我想在1到90之间做5个不同的数字。
class lottery:
def __init__(self):
self.price = 50
def list(self):
numbers = []
for i in range(0,5):
numbers.append(random.randint(0,90))
for i in range(1,5):
for j in range(0,i-1):
if (numbers[i]==numbers[j]):
game.list()
return numbers
game = lottery()
game.list()
或者有没有更好的方法来解决我的问题?
谢谢!
答案 0 :(得分:2)
def list(self):
return random.sample(xrange(90), 5)
这是(特别是对于5的大值)比每次随机化创建重复时更有效,并且还避免了堆栈溢出的可能性。
答案 1 :(得分:1)
首先,您应该导入random
模块:
import random
问题是你没有返回你从递归调用中获得的结果,因此你仍然会返回list
重复的数字。它应该是:
def list(self):
numbers = []
for i in range(0, 5):
numbers.append(random.randint(0, 90))
for i in range(1, 5):
for j in range(0, i - 1):
if (numbers[i] == numbers[j]):
return self.list() # return
return numbers
请注意self
用于访问调用该方法的类的实例。另外,请勿忘记print
结果:
game = lottery()
print game.list()
注意:
请勿使用list
作为变量或方法的名称,因为它会隐藏list
的内置定义。