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?
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.
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.
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
Do:
word = word.lower()
because lower()
doesn't modify original string
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With