因此,我在一个简单的python脚本中遇到了这个问题,我正在为一个任务工作。我将制作一个模拟彩票的小脚本,并编写了以下代码:
import random
def drawNumbers(nlist, n):
drawnlist = []
i = 0
while i < n:
if i == 0:
drawnlist.append(nlist[random.randint(0,33)])
i+=1
else:
r = random.randint(0,33)
dup = False
for x in drawnlist:
if x == r:
dup = True
if dup == False:
drawnlist.append(nlist[r])
i+=1
return drawnlist
def compList(drawlist, guesslist):
count = 0
for j in drawlist:
for h in guesslist:
if j == h:
count +=1
return count
def winnings(right, altright):
altcorrect = False
if altright > 0:
altcorrect = True
if right == 7:
return 2749455
elif right == 6:
if altcorrect:
return 102110
else:
return 3385
elif right == 5:
return 95
elif right == 4:
if altcorrect:
return 45
else:
return 0
a=0
tot = 0
while a <100:
numbers = []
i = 1
while i <= 34:
numbers.append(i)
i+=1
myGuess = []
i = 0
while i <7:
if i == 0:
myGuess.append(random.randint(1,34))
i+=1
else:
r = random.randint(1,34)
dup = False
for x in myGuess:
if x == r:
dup = True
if dup == False:
myGuess.append(r)
i+=1
tot += winnings(compList(drawNumbers(numbers,7),myGuess),compList(drawNumbers(numbers,3),myGuess))
a+=1
print(tot)
对于一次迭代来说,它似乎工作得很好,但是,当我像现在一样增加a
值为100时,我得到一个错误,说我不能将一个“int
”对象和一个“None
”对象相加。当我修改代码并打印“winnings”而不是每次迭代的总和时,函数有时会返回“None”而不是数字。然而,我似乎不能用较少的迭代次数来重新创建它,所以我的问题是:这段代码是相关的,还是调用函数“太快”不会创建一个数字?我知道这个问题看起来很奇怪,但我对整个编程和python本身都是新手,我不知道如何调试这个问题。你知道吗
winnings
函数可以返回None
,因为内部if
没有else
。在这种情况下,它不会触发最后的else
,并默认返回None
。要修复它,请在if
中添加一个else
,或者删除winnings
中的最后一个else
:winnings函数有时返回None。因为有些案子抓不到。如果Python到达函数末尾时没有命中任何其他返回,则返回None。你知道吗
具体来说,如果right为4,altright为0,则不会捕获任何if情况,并且函数返回
None
。你知道吗相关问题 更多 >
编程相关推荐