函数中的函数参数超出范围

2024-09-30 01:37:07 发布

您现在位置:Python中文网/ 问答频道 /正文

为了一个班级项目,我必须做一个绞刑人游戏。按照它的指导方针,我得到了以下代码:

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]:超出了字符串索引的范围。我相信这是因为我的函数参数是局部的。你知道怎么修吗?你知道吗


Tags: 项目inforsecretlenifrangeword
2条回答

可能有更多的问题比我第一眼看到的,但这里去。你知道吗

1)在第二个for循环中,您将永远无法到达最后一个elif案例。你知道吗

2)当到达猜测字母列表的末尾时,不会重置compareLetter。这意味着最终,它可能会大于“猜测”的长度,这就是导致异常的原因。你知道吗

3)您已经将两个for循环迭代器都命名为i,而且您从未使用过它们。你知道吗

4)for循环遍历secret的长度两次,嵌套。再说一次,你不用迭代器。你知道吗

正如eiramèu mahera指出的,你的代码逻辑是有缺陷的。看看你在每个循环中都做了什么,并将其与你想做的每个循环进行比较。他们不是一回事。你知道吗

我试着用各种输入来执行代码,我发现当变量compareLetter的值超过guessed的长度时会发生错误。 看来逻辑有问题!!你知道吗

我试过hangman('banana', 'apple') 以下是checkLettercompareLetter的值是如何变化的:

0 1
1 1
1 2
1 3
1 4
1 6

希望你能理解这个问题。你知道吗

相关问题 更多 >

    热门问题