Python 我的尝试计数器在我的while循环中不会减少?

Python 我的尝试计数器在我的while循环中不会减少?,python,for-loop,while-loop,counter,limit,Python,For Loop,While Loop,Counter,Limit,有人能帮我限制我的刽子手类型的游戏只允许10次错误的尝试吗 10次猜错后,游戏不会停止。无论输入了多少不正确的猜测,它也始终显示“剩余10次猜测”。我做错了什么?如何使计数器减小?我曾尝试将代码移出主函数,但也没有帮助。似乎我正在正确设置此计数器的格式,但它的行为与我的预期不符 我知道在这个网站上有很多这样的问题,我尝试了很多解决方案,但我不知道如何处理我的代码。谁能告诉我哪里出了问题?非常感谢您的任何帮助。提前谢谢你 # store words here, one will be ra

有人能帮我限制我的刽子手类型的游戏只允许10次错误的尝试吗

10次猜错后,游戏不会停止。无论输入了多少不正确的猜测,它也始终显示“剩余10次猜测”。我做错了什么?如何使计数器减小?我曾尝试将代码移出主函数,但也没有帮助。似乎我正在正确设置此计数器的格式,但它的行为与我的预期不符

我知道在这个网站上有很多这样的问题,我尝试了很多解决方案,但我不知道如何处理我的代码。谁能告诉我哪里出了问题?非常感谢您的任何帮助。提前谢谢你

    # store words here, one will be randomly chosen for answer
    word_list = ['karma', 'man', 'hippo', 'angel', 'whatever']
    # generate a random answer from list
    answer = (random.choice(word_list))

    hidden_answer = '_'* len(answer)

    hidden_answer = list(hidden_answer)

    past_guesses = [ ]

    guesses_left = 10

    input_prompt = "Guess a letter. (You have " + str(guesses_left) + " guesses left)"

    #to display instructions
    def display_instructions ():
        instructions_file = open("instructions.txt", 'r')
        instructions = instructions_file.read()
        instructions_file.close()
        print(instructions)    

    def main ():
        display_instructions ()
        while guesses_left <= 0:
            print (hidden_answer)
            guess = input (input_prompt)
            past_guesses.append(guess)
            #check all characters in range of answer length
            for x in range (0, len(answer)):
                if guess == answer[x]:
                    hidden_answer[x] = guess
        
                if guess != answer[x]:
                   guesses_left = guesses_left - 1
            print("Your answer so far is:" , "".join(hidden_answer))
         if guesses_left = 0:
              print( "you lose" )
         if "_" not in hidden_answer:
              print( "you win" )

    main ()
#将单词存储在此处,将随机选择一个单词作为答案
单词列表=[‘因果报应’、‘人’、‘河马’、‘天使’、‘随便什么’]
#从列表中生成随机答案
答案=(随机选择(单词列表))
隐藏的答案=''''*len(答案)
隐藏答案=列表(隐藏答案)
过去的猜测=[]
猜测左=10
input_prompt=“猜一个字母。(您有“+str(猜左)+”猜左)
#显示指令
def显示_说明():
指令\文件=打开(“instructions.txt”,“r”)
指令=指令\u文件.read()
说明\u文件.close()
打印(说明)
defmain():
显示指令()

在左猜测时,在main()函数的开头添加以下语句:全局左猜测

main()函数应该如下所示:

def main ():
    global guesses_left
    display_instructions ()
    while guesses_left > 0:
        print (hidden_answer)
        guess = input (input_prompt)
        past_guesses.append(guess)
        #check all characters in range of answer length

        for x in range (0, len(answer)):
            if guess == answer[x]:
                hidden_answer[x] = guess  
            if guess != answer[x]:
               guesses_left = guesses_left - 1
        print("Your answer so far is:" , "".join(hidden_answer))
    if guesses_left == 0: 
          print( "you lose" )
    if "_" not in hidden_answer:
          print( "you win" )
在所有函数外部初始化“Guesss\u left=10”时,它会创建一个名为“Guesss\u left”的全局变量。但是,当您在函数中编写“guesses\u left=guesses\u left-1”时,python会创建另一个同名的局部变量。因此,您会得到一个错误,即“赋值前引用的局部变量”作为局部变量“Guesss_left”从未初始化

解决方案是在函数中添加语句“global guesss_left”,它简单地转换为“一个名为“guesss_left”的全局变量已经存在,并且不创建新变量”。这将确保程序中只存在一个名为“Guesss_left”的变量

此外,要检查“guesses_left”是否等于0,您必须执行以下操作:

**if guesses_left == 0:**
而不是

**if guesses_left = 0:**
您的while循环也会发生如下变化:

while guesses_left > 0:
请随时在评论中询问您的疑问

import random

word_list = ['karma', 'man', 'hippo', 'angel', 'whatever']
# generate a random answer from list
answer = list(random.choice(word_list))

hidden_answer = '_' * len(answer)

hidden_answer = list(hidden_answer)

past_guesses = []

guesses_left = 10

# to display instructions
def display_instructions():
    instructions_file = open("instructions.txt", 'r')
    instructions = instructions_file.read()
    instructions_file.close()
    print(instructions)


def main():
    global guesses_left
    display_instructions()
    while guesses_left != 0:
        print(hidden_answer)
        guess = input("Guess a letter. (You have " + str(guesses_left) + " guesses left)")
        past_guesses.append(guess)
        # check all characters in range of answer length
        for x in range(0, len(answer)):
            if guess == answer[x]:
                hidden_answer[x] = guess
        if guess not in answer:
            guesses_left -= 1
        print("Your answer so far is:", "".join(hidden_answer))
        print(guesses_left)
        if hidden_answer == answer:
            print("you win")
            break
    if guesses_left == 0:
        print("you lose")


main()

现在这个游戏将运行良好检查它。我在代码中所做的改进是——首先,我将answer变量转换为一个列表,使其更易于访问。然后我使用main()中的全局猜测,因为这个变量在函数之外。然后,在主函数中保留猜测时,将“保留猜测>0”更改为“保留猜测不能小于0”,或者您可以编写“保留猜测!=0”。这意味着猜测不等于零你的猜测变量被设置为10,而你的while循环运行的时间与猜测一样长,但游戏仍然没有按应有的方式运行。你能给我提供你的全部代码吗。