Python 我的尝试计数器在我的while循环中不会减少?
有人能帮我限制我的刽子手类型的游戏只允许10次错误的尝试吗 10次猜错后,游戏不会停止。无论输入了多少不正确的猜测,它也始终显示“剩余10次猜测”。我做错了什么?如何使计数器减小?我曾尝试将代码移出主函数,但也没有帮助。似乎我正在正确设置此计数器的格式,但它的行为与我的预期不符 我知道在这个网站上有很多这样的问题,我尝试了很多解决方案,但我不知道如何处理我的代码。谁能告诉我哪里出了问题?非常感谢您的任何帮助。提前谢谢你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
# 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循环运行的时间与猜测一样长,但游戏仍然没有按应有的方式运行。你能给我提供你的全部代码吗。