【问题标题】:Python string iteration issues [closed]Python字符串迭代问题[关闭]
【发布时间】:2014-09-23 20:41:29
【问题描述】:

我刚开始学习python,有点迷茫。为什么这段代码不起作用?当我调用 pie 时,它​​返回 1 而不是 5。我在这里不明白什么?

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):
     total = 0
     word = word.lower()
     for letter in word:
         total =+ score[letter]
     else:
         return total

【问题讨论】:

  • 应该是+=
  • 你可以像sum([score[letter] for letter in word.lower()])一样很好地做到这一点
  • 我不明白为什么会有一个没有 if 的 else 子句。取消return语句并消除else:
  • 如果@vaultah 的评论没有解释:=+ 没有任何意义,所以total =+ score[letter] 意味着total = (+ score[letter])。因此,每次循环时,都将total 替换为+ score[letter]。最后一个字母得分1,因此您将total 替换为+1,即1
  • 实际上我错了documentation。当列表用完时使用。

标签: python iteration for-in-loop


【解决方案1】:

你弄错了运算符。应该是 +=,而不是 =+。

【讨论】:

  • 为什么投反对票?这是正确的答案。
  • @vaultah 如此接近问题。不要惩罚回答者。
  • 它对我很有用。我在“for”循环中了解了“else”条件。它不是很容易搜索,但它是一种很好的信息交流方式。
  • 我确实认为否决我的问题有点不公平。我马上承认我是多么愚蠢
  • 如果问题真的是一个简单的拼写错误,那么这个问题是没有用的。如果问题在于 OP 的真正意思是 =+,因为比如说他来自使用 =+ 的语言,那么答案需要的不仅仅是单行。我不确定这两种可能性都值得否决,但我不明白为什么有人会_up_vote它,要么......
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多