我试图创建一个应用程序来玩主脑游戏,但我遇到了问题,我无法弄清楚出了什么问题。 每次运行检查以查看猜测的整数是否正确时,它返回的值为1或0(从不2,3或4)。任何帮助解决这个问题将不胜感激。 注意:打印的行(a,b,c,d)和(r,q,h,l)纯粹是为了排查故障
import random
dummy = True
a=int(random.random()*10)
b=int(random.random()*10)
c=int(random.random()*10)
d=int(random.random()*10)
print(a,b,c,d)
while dummy == True:
f=0
if a == 0 or b ==0 or c == 0 or d == 0:
#run program again
dummy = False
print("Enter your four guesses, separated by commas.")
guess=input()
t,v,w,y=guess.split(",")
print(t,v,w,y)
r=int(t)
q=int(v)
h=int(w)
l=int(y)
if r==a:
f+=1
elif q==b:
f+=1
elif h==c:
f+=1
elif l==d:
f+=1
print(f)
if f==4:
dummy = False
print("Well done!")
答案 0 :(得分:1)
您正在使用elif
,只有在前一个条件为假的情况下才会运行(这是#34的缩写;否则如果")。您可能需要单独的if
s
if r==a:
f+=1
if q==b:
f+=1
if h==c:
f+=1
if l==d:
f+=1
您的代码在递增时会停止,因此不能大于1。
答案 1 :(得分:0)
问题是,您正在使用elif
。只要其中一个条件成立,它就会跳过其他条件。如果要运行所有检查,请将elif
更改为if
。
答案 2 :(得分:0)
你必须使用if而不是elif。
答案 3 :(得分:0)
问题是你必须用if if替换if if因为如果if语句是真的,它就不会运行其余的elifs:
import random
dummy = True
a=int(random.random()*10)
b=int(random.random()*10)
c=int(random.random()*10)
d=int(random.random()*10)
print(a,b,c,d)
while dummy == True:
f=0
if a == 0 or b ==0 or c == 0 or d == 0:
#run program again
dummy = False
print("Enter your four guesses, separated by commas.")
guess=input()
t,v,w,y=guess.split(",")
print(t,v,w,y)
r=int(t)
q=int(v)
h=int(w)
l=int(y)
if r==a:
f+=1
if q==b:
f+=1
if h==c:
f+=1
if l==d:
f+=1
print(f)
if f==4:
dummy = False
print("Well done!")