我正在做我的第一个OOP项目,它是一个随机数生成器,可以在给定范围内生成许多随机数:
import random
import math
resList=[]
class randomInRange:
def getRandom(self, start, end, quantity):
for i in range(quantity):
selList = range(start, end)
resNum = random.choice(selList)
resList.append(resNum)
return (resList)
RR=randomInRange()
然后,我会在Python Shell中输入以下内容:
(RR.getRandom(0,10,10))
它会给出这样的结果:[2, 2, 1, 4, 8, 1, 0, 7, 4, 5]但是如果我再次调用该函数,它会附加新的生成数字到同一列表。所以它想要这样的东西:[2, 2, 1, 4, 8
, 1, 0, 7, 4, 5, 4, 5, 3, 1, 8, 6, 7, 5, 4, 4]我该如何解决这个问题?如何防止新数据一遍又一遍地附加到同一列表中,从而使列表无用?
提前感谢!
这是因为resList
是一个全局变量,并且在调用randomInRange
时永远不会擦除其内容。您应该只在函数中创建列表:
class randomInRange:
def getRandom(self, start, end, quantity):
resList = []
for i in range(quantity):
selList = range(start, end)
resNum = random.choice(selList)
resList.append(resNum)
return (resList)
请注意,您的函数也可以替换为列表推导:
def getRandom(self, start, end, quantity):
temp = range(start, end)
return [random.choice(temp) for _ in range(quantity)]
import random
import math
resList=[]
class randomInRange:
def getRandom(self, start, end, quantity):
for i in range(quantity):
selList = range(start, end)
resNum = random.choice(selList)
if resNum not in resList:
resList.append(resNum)
return (resList)
RR=randomInRange()
print RR.getRandom(0,10,10)
或者更简单的是以下内容
import random
def getRandom(start, end, quantity):
return [random.choice(range(start, end)) for _ in range(quantity)]
print getRandom(0, 10, 10)