Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python .lower() is not working [duplicate]

I don't know what I'm doing wrong, but the function .lower() in my python code is not working!

It's a sily code, but it does not lower de cases of the word:

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

some help?

like image 617
Victor Zuanazzi Avatar asked Feb 27 '15 11:02

Victor Zuanazzi


People also ask

Why is lower () not working Python?

It's because python strings are immutable. That means you can't change them in-place, just make a changed copy of it and assign it to some other variable, or itself.

How do I convert a string to lowercase in python?

In Python, lower() is a built-in method used for string handling. The lower() method returns the lowercased string from the given string. It converts all uppercase characters to lowercase. If no uppercase characters exist, it returns the original string.


2 Answers

You have to assign the result of lower() back to word as strings are 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

See related: Why are Python strings immutable? Best practices for using them

like image 80
EdChum Avatar answered Oct 17 '22 09:10

EdChum


Do:

word = word.lower()

because lower() doesn't modify original string

like image 2
Andrey Avatar answered Oct 17 '22 08:10

Andrey