Python不会打印我告诉它的内容

时间:2014-04-13 23:54:51

标签: python

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')

好。所以我试图让它打印出总数。基本上这需要一个单词并加上单词的拼字游戏分数。出于某种原因,它不会打印出来。

3 个答案:

答案 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