为了一个班级项目,我必须做一个绞刑人游戏。按照它的指导方针,我得到了以下代码:
def hangman(guessed, secret):
word = ""
wrongLetters = 0
checkLetter = 0
compareLetter = 0
for i in range(len(secret)):
if secret[checkLetter] == guessed[compareLetter]:
word += guessed[compareLetter]
compareLetter = 0
checkLetter += 1
elif secret[checkLetter] != guessed[compareLetter]:
compareLetter += 1
for i in range(len(secret) - 1):
if secret[checkLetter] == guessed[compareLetter]:
word += guessed[checkLetter]
break
elif secret[checkLetter] != guessed[compareLetter]:
compareLetter += 1
wrongLetters += 1
elif wrongLetters == len(secret):
word += "-"
wrongLetters = 0
checkLetter += 1
compareLetter = 0
print(word)
我的问题是它告诉我第二个for
语句下的if secret[checkLetter] == guessed[compareLetter]:
超出了字符串索引的范围。我相信这是因为我的函数参数是局部的。你知道怎么修吗?你知道吗
可能有更多的问题比我第一眼看到的,但这里去。你知道吗
1)在第二个for循环中,您将永远无法到达最后一个elif案例。你知道吗
2)当到达猜测字母列表的末尾时,不会重置compareLetter。这意味着最终,它可能会大于“猜测”的长度,这就是导致异常的原因。你知道吗
3)您已经将两个for循环迭代器都命名为i,而且您从未使用过它们。你知道吗
4)for循环遍历secret的长度两次,嵌套。再说一次,你不用迭代器。你知道吗
正如eiramèu mahera指出的,你的代码逻辑是有缺陷的。看看你在每个循环中都做了什么,并将其与你想做的每个循环进行比较。他们不是一回事。你知道吗
我试着用各种输入来执行代码,我发现当变量
compareLetter
的值超过guessed
的长度时会发生错误。 看来逻辑有问题!!你知道吗我试过
hangman('banana', 'apple')
以下是checkLetter
和compareLetter
的值是如何变化的:希望你能理解这个问题。你知道吗
相关问题 更多 >
编程相关推荐