Python „builtin_function_or_method” obiekt nie ma atrybutu „__getitem__” „”


Poniżej napisałem kod Pythona, który definiuje funkcję, która zwraca wynik scrabble danego ciągu:
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):
word1 = (word).lower
list_a = []
list_b = range(len(word))
for i in list_b:
list_a[i] = word1[i]
total = 0
for i in list_a:
score = int(score[i])
total += score
return str(total)

Co jest nie tak w powyższym kodzie? Otrzymuję następujący błąd:
Obiekt „builtin_function_or_method” nie ma atrybutu ”

getitem

'
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

__getitem__
jest wywoływane, gdy używasz
[]
w celu uzyskania dostępu do elementu.
Wykonując
word1 = (word) .lower
, przypisujesz
word1
do funkcji
lower
. Najprawdopodobniej powinieneś wywołać funkcję (np.
word.lower ()
).
Kiedy Python widzi
word1 [i]
, próbuje uzyskać dostęp do elementu w i-tym indeksie, ale ponieważ
word1
jest funkcją, a nie ciągiem, Python jest zdezorientowany.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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() total=0
for char in word:
if char in score:
total =total+ score[char]
return total print (scrabble_score('xenophobia') )

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się