Mastermind游戏无法正常工作

时间:2016-12-18 18:25:22

标签: python loops

我试图创建一个应用程序来玩主脑游戏,但我遇到了问题,我无法弄清楚出了什么问题。 每次运行检查以查看猜测的整数是否正确时,它返回的值为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!")

4 个答案:

答案 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!")