2017-10-04 1 views
0

Hier ist mein Code zu zählen:Um die Anzahl der Vokale in der Zeichenfolge (Python)

word='azcbobobegghakl' 

cout=0 

for leter in range(word): 

    if leter=='a' or leter=='e' or leter=='i' or leter=='o' or leter=='u': 

     cout += 1 

print('Number of vowels: '+ str(cout)) 

Ich erhalte Fehler:

Typeerror: 'str' Objekt kann nicht als Integer interpretiert werden

+3

Sehr nah ... 'für leter in Wort' ist in Ordnung - keine Notwendigkeit für den' Bereich' .... –

+0

Danke! Das hat funktioniert. Aber ich dachte, dass Reichweite den einzelnen Buchstaben von "Wort" bekommen und es auf die Bedingung prüfen würde oder mache ich es falsch? –

Antwort

1

Sie haben nach leter gewählt [sic] in Bereich (Wort) anstelle von for leter[sic] in word:

in Ihrer python-Konsole versuchen Sie dies:

>>> range("word") 
Traceback (most recent call last): 
File "<input>", line 1, in <module> 
TypeError: 'str' object cannot be interpreted as an integer 

Dies ist der Fehler, den Sie bekommen.

Dies sollte Ihr Code beheben:

word='azcbobobegghakl' 

cout=0 

for leter in word: 

    if leter=='a' or leter=='e' or leter=='i' or leter=='o' or leter=='u': 

     cout += 1 

print('Number of vowels: '+ str(cout)) 
0

Sie haben bereits die feste Version, sondern als zu erklären. Sie verwenden Bereich (Wort). Word ist eine Zeichenfolge, während der Bereich eine Zahl erwartet. Wenn Sie die Länge eines Wortes benötigen, können Sie len() verwenden.

0

Lassen Sie mich Ihnen sagen, dass Bereich ist eine Funktion, die Ihnen eine Liste von Werten bis zum Grenzwert in Integer gibt, dh Bereich (10) gibt mir 0,1,2,3,4,5,6,7, 8,9. Dies gilt nur für Zahlen. Man könnte es als for letter in word: oder

ändern
`for letter in range(len(word)):` 





    `if word[leter]=='a' or word[leter]=='e' or word[leter]=='i' or` word[leter]=='o' or word[leter]=='u': 





cout += 1 

Dies wird bacuse len (Wort) gibt mir die Länge und Reichweite das gibt mir einen Iterator von 0 bis iterieren len-1 ich jetzt Indizierung verwenden kann Hier die einzelnen Buchstaben für den Zugriff auf ist mein Code aber:

word='azcbobobegghakl' 

cout=0 

for leter in word: 



if leter=='a' or leter=='e' or leter=='i' or leter=='o' or leter=='u': 





cout += 1 

print('Number of vowels: '+ str(cout)) 

oder

word='azcbobobegghakl' 

cout=0 

for leter in range(len(word)): 



if word[leter]=='a' or word[leter]=='e' or word[leter]=='i' or word[leter]=='o' or word[leter]=='u': 
cout += 1 

print('Number of vowels: '+ str(cout)) 
Verwandte Themen