Python 我的刽子手程序被困在要求输入而不打印任何我猜的字母
我对编程很陌生,我试着制作一个像hangman这样的程序。然而,我就是不明白为什么它不起作用。它所做的只是请求输入,然后什么也不做。输入只是一次又一次地循环,我输入的任何内容都不会改变。 另外,关于如何改进代码的任何建议都是受欢迎的,我觉得我在这里犯了很多错误Python 我的刽子手程序被困在要求输入而不打印任何我猜的字母,python,Python,我对编程很陌生,我试着制作一个像hangman这样的程序。然而,我就是不明白为什么它不起作用。它所做的只是请求输入,然后什么也不做。输入只是一次又一次地循环,我输入的任何内容都不会改变。 另外,关于如何改进代码的任何建议都是受欢迎的,我觉得我在这里犯了很多错误 import random word_list = ["car", "house", "shop", "shoes", "tractor", "microphone", "camera"] game_state = True bl
import random
word_list = ["car", "house", "shop", "shoes", "tractor", "microphone", "camera"]
game_state = True
blank_spaces = []
word_picked = ""
already_guessed = []
word_letters = []
def Word_picker():
word_number = random.randint(0, (len(word_list) - 1))
word_picked = word_list[word_number]
word_picked = word_picked.lower()
word_letters = [char for char in word_picked]
print("\n")
print(word_picked)
print(word_letters)
print("\n")
for char in word_letters:
blank_spaces.append("_ ")
def Printer():
print("\n \n")
for x in range(len(blank_spaces)):
print(blank_spaces[x], end='')
def Main():
guessed_letter = input("Try a letter:")
guessed_letter = guessed_letter.lower()
if guessed_letter in already_guessed:
print("You've already tried this letter. Try a different one. \n")
Main()
for z in word_letters:
if guessed_letter == word_letters[z]:
blank_spaces[z] = guessed_letter + " "
already_guessed.append(guessed_letter)
Main()
else:
print("Incorrect.")
already_guessed.append(guessed_letter)
Main()
def Already_guessed():
for a in already_guessed:
print("Already guessed letters:" + already_guessed[a] + ", ", end='')
Word_picker()
Printer()
while game_state:
Already_guessed()
Printer()
Main()
我做了一些改变:
Main()
函数。我现在在循环中调用函数,直到gam_状态变为Falsez
作为索引,它为您提供了一个索引器
z
已经被猜到了,所以你不需要它Word_picker
中本地更改列表,但此操作不起作用。我将其更改为返回相应的单词,现在您可以从Main()
函数访问这些单词打印
语句或导入pdb;pdb.set_trace()
用于调试,这样您就知道代码在做什么了Main()
函数。我现在在循环中调用函数,直到gam_状态变为Falsez
作为索引,它为您提供了一个索引器
z
已经被猜到了,所以你不需要它Word_picker
中本地更改列表,但此操作不起作用。我将其更改为返回相应的单词,现在您可以从Main()
函数访问这些单词打印
语句或导入pdb;pdb.set_trace()
用于调试,这样您就知道代码在做什么了您的代码无法正常工作的原因有很多,但让我们来了解一些有关如何调试代码并使其正常工作的提示 与IDE无关的调试方法是添加print语句,以帮助确定变量是否包含您认为应该包含的值 尝试在Main()函数中,在word字母中z以
开头的行之前添加此print语句print(“这是word字母:”,word字母)
问问自己:
我希望这会有什么回报
这究竟返回了什么
如果有任何意外,是什么原因造成的
对于上面的print语句:您会发现您的word_字母返回一个空列表。
这就是你所期望的吗
尝试使用if语句和函数调用执行此操作
如果您完成Main()和函数调用,您应该能够很好地了解如何让程序运行:)您的代码不工作的原因有很多,但是让我们来看看如何调试代码并使其工作的一些技巧
与IDE无关的调试方法是添加print语句,以帮助确定变量是否包含您认为应该包含的值
尝试在Main()函数中,在word字母中z以开头的行之前添加此print语句print(“这是word字母:”,word字母)
问问自己:
我希望这会有什么回报
这究竟返回了什么
如果有任何意外,是什么原因造成的
对于上面的print语句:您会发现您的word_字母返回一个空列表。
这就是你所期望的吗
尝试使用if语句和函数调用执行此操作
如果您完成Main()和函数调用,您应该能够很好地了解如何让程序运行:)您永远不会从Main()返回。所有条件都递归地调用自身。z
是一个字母,而不是索引word\u字母[z]
应报告错误。您从不检查所有字母是否都被猜中。此外,您不会更改列表word\u字母
和word\u拾取的
,如果您在Main()中检查它们,它们都将保持为空
函数。暂时不要使用递归,只需使用while
循环即可。您永远不会从Main()
返回。所有条件都递归地调用自身。z
是一个字母,而不是索引word_字母[z]
应报告错误。您从不检查是否所有字母都被猜到了。此外,您不需要
import random
word_list = ["car", "house", "shop", "shoes", "tractor", "microphone", "camera"]
game_state = True
blank_spaces = []
word_picked = ""
already_guessed = []
word_letters = []
def Word_picker():
w_number = random.randint(0, (len(word_list) - 1))
w_picked = word_list[w_number]
w_picked = w_picked.lower()
w_letters = [char for char in w_picked]
print("\n")
print(w_picked)
print(w_letters)
print("\n")
b_spaces = []
for char in w_letters:
b_spaces.append("_ ")
print(b_spaces)
return b_spaces, w_picked, w_letters
def Printer():
print("\n \n")
for x in range(len(blank_spaces)):
print(blank_spaces[x], end='')
def Main():
guessed_letter = input("Try a letter:")
guessed_letter = guessed_letter.lower()
print(already_guessed)
if guessed_letter in already_guessed:
print("You've already tried this letter. Try a different one. \n")
for i, z in enumerate(word_letters):
if guessed_letter == z:
blank_spaces[i] = guessed_letter + " "
else:
print("Incorrect.")
already_guessed.append(guessed_letter)
def Already_guessed():
print("Already guessed letters:")
for a in already_guessed:
print(a)
blank_spaces, word_picked, word_letters = Word_picker()
Printer()
while game_state:
Already_guessed()
Printer()
Main()