为什么需要另一个嵌套的for循环来搜索字典?

时间:2018-08-01 06:36:55

标签: python python-2.7 dictionary for-loop nested-loops

因此,所讨论的代码是一个非常基本的拼字游戏得分计算器。这在CodeCademy网站上是一个挑战。

它们定义的正确代码如下,您可以看到有一个嵌套的for循环,该循环在整个词典中搜索 word 中的每个字母:< / p>

    score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
         "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
         "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
         "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
         "x": 8, "z": 10}

def scrabble_score(word):
  word = word.lower()
  total = 0
  for letter in word:
    for leter in score:
      if letter == leter:
        total = total + score[leter]
  return total

我对Python来说还比较陌生,但是据我了解,for循环应该可以如下工作,它可以循环遍历 word 变量中的每个字母,并将其用作输入得分词典,然后将其添加到总计。如您所见,然后返回 total

def scrabble_score(word):
  word = word.lower()
  total = 0
  for letter in word:
    total = total + score[letter]
  return total

但是,CodeCademy说那是错误的。有人可以请我解释一下我想念的东西吗?

欢呼

2 个答案:

答案 0 :(得分:1)

您的代码似乎正确且经过优化,请添加try / catch块,以防万一!

def scrabble_score(word):
    word = word.lower()
    total = 0
    for letter in word:
      try:
        total += score[letter]
      except KeyError, e:
        print "Error: Letter {} is missing from the score".format(e)
    return total

答案 1 :(得分:0)

您的答案似乎并不正确。它按预期执行。在这种情况下,CodeAcademy接受的答案可能是限制性的。