代码如下,能够正常运行,但是得到的结果跟预设的并不相符,请问该怎么办?
import random
import linecache
x=input("请输入第一区间数量:")
y=input("请输入第二区间数量:")
z=input("请输入第三区间数量:")
def w500():
redball=[]
ticket=[]
a=0
b=0
c=0
for i in range(1,34):
redball.append(i)
i=i+1
#print(redball)
for x in range(1,7):
red_num=random.sample(redball,1)
redball.remove(red_num[0])
ticket.append(red_num[0])
#print(redball)
#print(ticket)
for i in ticket[:]:
if 0<i<=11:
a=a+1
elif 11<i<=21:
b=b+1
elif 21<i<=33:
c=c+1
#print(a,b,c)
return ticket,a,b,c
linecache.clearcache() #清除缓存
w500()
print(w500()[0],w500()[1:])
active=True
while active:
w500()
if w500()[1]==int(x) and w500()[2]==int(y) and w500()[3]==int(z):
print(w500()[0],w500()[1:],'Bingo!')
linecache.clearcache() #清除缓存
active=False
else:
print(w500()[0],w500()[1:])
linecache.clearcache() #清除缓存
运行结果不正确的原因就是对w500函数调用上,代码中先调用一次,又在while语句块中if判断和print语句又重复调用该函数,每次调用其返回值都会改变。将每次循环调用w500函数返回值赋值给一个变量,后取值进行判断并打印输出,这样改即可:
import random
import linecache
x=input("请输入第一区间数量:")
y=input("请输入第二区间数量:")
z=input("请输入第三区间数量:")
def w500():
a=b=c=0
redball=random.sample(range(1,34),6)
for i in redball:
if 0<i<=11:
a=a+1
elif 11<i<=21:
b=b+1
elif 21<i<=33:
c=c+1
return redball,a,b,c
linecache.clearcache() #清除缓存
while True:
g=w500()
if g[1]==int(x) and g[2]==int(y) and g[3]==int(z):
print(g[0],g[1:],'Bingo!')
linecache.clearcache() #清除缓存
break
else:
print(g[0], g[1:])
linecache.clearcache() #清除缓存
你预设的结果是什么?
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632