Comment calculer le nombre de caractères dans une chaîne de caractères? (python)
# -*- coding:UTF-8 -*-
str= "Green tree"
scr= "e"
cstr= len(str)
n=0
a=0
while n < cstr:
if str[n] == scr:
print(len(scr))
n=n+1
Je dois compter les "e" en -str - chaîne, mais quand je lance ce script j'obtiens
1
1
1
1
au lieu de 4.
Quel est le problème?
- N'utilisez pas de
str
comme un nom de variable. Il les ombres de la builtin.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, ne pas utiliser de
str
comme un nom de variable, il masque le haut-nom.Comme pour le comptage des caractères dans une chaîne, il suffit d'utiliser la
str.count()
méthode:Si vous êtes seulement intéressés à comprendre pourquoi votre code ne fonctionne pas, vous avez l'impression
1
quatre fois parce que vous trouverez des quatre occurrences de "e", et lorsqu'un problème est constaté vous avez l'impressionlen(scr)
qui est toujours1
.Au lieu de l'impression
len(scr)
dans votre si le bloc, vous devriez être en incrémentant un compteur qui enregistre le nombre total d'occurrences trouvées, on dirait que vous définissez une variablea
que vous ne l'utilisez pas, de sorte que le plus petit changement dans votre code pour qu'il fonctionne seraient les suivants (toutefois, comme indiqué ci-dessus,str.count()
est une meilleure approche):Utiliser le le comte de la méthode:
Si le comte méthode est cassé sur votre Python ;-), vous pouvez utiliser une boucle for:
Si vous voulez vraiment une boucle while:
Mais, ceci étant Python, un plus Pythonic' approche si votre comte de la méthode cassé est de les utiliser
sum
sur un générateur d'expression:Pour pourquoi il fait cela, c'est de faire ce que vous avez demandé, et l'impression de la longueur de la variable
scr
, ce qui est toujours un.Vous êtes mieux d'utiliser le
str.count()
méthode comme d'autres l'ont mentionné, ou incrémenter un compteur vous-même manuellement.