能否使用变量作为字典键?并实现字符串字母字典值求和
Python中用变量作为字典键&计算Scrabble单词分值
当然可以用变量作为字典的键!只要变量的类型是可哈希的(比如字符串、整数、元组这类不可变类型)就完全没问题——你这里用的字符串类型letter变量,刚好符合要求,完全可以用来从SCRABBLE_LETTER_VALUES里取值。
不过看你的代码,有个小疏漏会导致运行报错:你没有初始化score变量。在开始累加之前,得先把score设为0,不然Python不知道这个变量的初始值是什么。
修正后的完整代码应该是这样的:
SCRABBLE_LETTER_VALUES = { 'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k': 5, 'l': 1, 'm': 3, 'n': 1, 'o': 1, 'p': 3, 'q': 10, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4, 'w': 4, 'x': 8, 'y': 4, 'z': 10 } word = 'maths' score = 0 # 必须先初始化累加变量 for letter in word: score += SCRABBLE_LETTER_VALUES[letter] print(score) # 输出结果:3+1+1+4+1=10
如果想让代码更简洁,还可以用sum()函数结合生成器表达式,一行就能算出总分:
score = sum(SCRABBLE_LETTER_VALUES[letter] for letter in word)
这样既省去了手动初始化和循环累加的步骤,代码可读性也更高。
内容的提问来源于stack exchange,提问作者trang nguyen
相关产品推荐
相关产品推荐

