2015-02-27 4 views
-1

Я не знаю, что я делаю неправильно, но функция .lower() в моем коде python не работает!python .lower() не работает

Это Sily код, но не ниже де случаев слова:

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

попробовать 'слово = word.lower()' – Vader

+0

Это должно быть 'слово = word.lower()' ' – kundan

+2

слово = word.lower() 'поскольку строки являются неизменными. –

ответ

3

Вы должны присвоить результат 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

Do:

word = word.lower() 

потому что lower() не изменяет оригинальная строка

0

Это потому, что вы не назначаете значение для слова после преобразования его в нижний регистр. Так что до сих пор старое значение, которое "Helix"

word = word.lower() 
Смежные вопросы