python .lower()不起作用

时间:2015-02-27 11:54:46

标签: python lowercase

我不知道我做错了什么,但我的python代码中的函数.lower()无效!

这是一个狡猾的代码,但它并没有降低单词的含义:

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

print scrabble_score('Helix')    

一些帮助?

3 个答案:

答案 0 :(得分:4)

您必须将lower()的结果分配给单词,因为字符串为immutable

In [152]:

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() #<------ here assign back
    print(word)
    total =0
    for i in word:
        total += score[i]
    return total

print(scrabble_score('Helix'))

helix
15

参见相关内容:Why are Python strings immutable? Best practices for using them

答案 1 :(得分:2)

执行:

word = word.lower()

因为lower()没有修改原始字符串

答案 2 :(得分:1)

这是因为在将其转换为小写后,您没有为单词赋值。所以它仍然具有旧的价值,即&#34; Helix&#34;

word = word.lower()