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 = []
for x in word:
total.append(score[x.lower()])
total_1 = sum(total)
return total_1
print total_1
scrabble_score('Hey')
好。所以我试图让它打印出总数。基本上这需要一个单词并加上单词的拼字游戏分数。出于某种原因,它不会打印出来。
答案 0 :(得分:4)
return
会将程序的控制权返回给调用者。过去的任何事情都是(基本上)无法访问的代码。
撤消语句的顺序,您的print
语句将起作用:
print total_1
return total_1
答案 1 :(得分:3)
这是无效的代码 - 虽然它编译,这是特殊的,因为其他编程语言会在现场将其标记为错误:
return total_1
print total_1 # unreachable code, function ends with return on previous line
应该是:
print total_1
return total_1
换句话说:return
语句必须是函数内任何执行路径中的最后一个。
答案 2 :(得分:1)
你可以通过使用列表理解或保持运行总计来简化这一点,而不是建立第二个列表。
def scrabble_score(word):
return sum((score.get(x.lower(), 0) for x in word))
print scrabble_score('Hey')
>>> 9
或者
def scrabble_score2(word):
total = 0
for w in word:
total += score.get(w.lower(), 0)
return total
print scrabble_score2('Hey')
>>> 9