Die anderen Antworten zeigen, was mit Ihrem Code falsch ist. Aber es gibt auch eine eingebaute Möglichkeit, dies zu tun, wenn Sie nicht nur wurden diese für eine Übung zu tun:
>>> 'banana'.count('a')
3
Danben gab diese korrigierte Version:
def count_letters(word, char):
count = 0
for c in word:
if char == c:
count += 1
return count
Hier sind einige andere Möglichkeiten, es zu tun, hoffentlich werden sie dir mehr über Python beibringen!
Ähnliche, aber kürzere for
Schleife. Nutzt die Tatsache aus, dass booleans wiederum in 1, wenn wahr und 0, wenn false:
def count_letters(word, char):
count = 0
for c in word:
count += (char == c)
return count
Short for-Schleifen kann in der Regel in der Liste/Generator Comprehensions gedreht werden.Dies erzeugt eine Liste von ganzen Zahlen zu jedem Buchstaben entsprechen, mit 0, wenn der Brief nicht char
und 1 überein, wenn es tut, und dann summiert sie:
def count_letters(word, char):
return sum(char == c for c in word)
Der nächste filtert alle Zeichen, die don‘ t Spiel char
, und zählt, wie viele sind links:
def count_letters(word, char):
return len([c for c in word if c == char])
Ich denke, Ihr Code eingerückt war korrekt. Sie hätten einen Einzugfehler erhalten. – Lucas