Comment compter les chiffres, les lettres, les espaces pour une chaîne en Python
Je suis en train de faire une fonction pour détecter combien de chiffres,une lettre,des espaces, et d'autres pour une chaîne de caractères.
Savez-vous quel est le problème avec mon code? et puis-je améliorer mon code pour être plus simple et plus précis?
merci! (voici le code révisé)
def count(x):
length = len(x)
digit = 0
letters = 0
space = 0
other = 0
for i in x:
if x[i].isalpha():
letters += 1
elif x[i].isnumeric():
digit += 1
elif x[i].isspace():
space += 1
else:
other += 1
return number,word,space,other
il a montré cette erreur:
>>> count(asdfkasdflasdfl222)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
count(asdfkasdflasdfl222)
NameError: name 'asdfkasdflasdfl222' is not defined
source d'informationauteur ray
Vous devez vous connecter pour publier un commentaire.
Voici une autre possibilité:
Vous ne devriez pas être la mise en
x = []
. C'est l'établissement d'une liste vide pour votre saisie de paramètre. En outre, l'utilisation de python estfor i in x
syntaxe comme suit:Il y a 2 erreurs est ce code:
1) Vous devez supprimer cette ligne, comme il sera reqrite x à une liste vide:
2) Dans la première instruction "if", vous devriez retrait de la "lettre += 1" état, comme:
En ignorant tout ce qui peut ou peut ne pas être correcte avec votre "code révisé", la question de l'origine de l'erreur actuellement cité dans votre question est causé par l'appelant le "comte" de la fonction avec une variable non définie, parce que votre ne pas citer de la chaîne.
count(thisisastring222)
recherche une variable appelée thisisastring222 passer à la fonction appelée comte. Pour que cela fonctionne, vous devez avoir défini la variable précédente (par exemple, avecthisisastring222 = "AStringWith1NumberInIt."
) votre fonction sera de faire ce que vous voulez avec le contenu de la valeur stockée dans la variable, et non pas le nom de la variable.count("thisisastring222")
code en dur la chaîne "thisisastring222" dans l'appel, ce qui signifie que la fonction nb de travail avec l'exacte chaîne passée.Pour fixer votre appel à votre fonction, il suffit d'ajouter des guillemets autour de
asdfkasdflasdfl222
changercount(asdfkasdflasdfl222)
àcount("asdfkasdflasdfl222")
.Autant que le libellé de la question "Comment compter des chiffres, des lettres, des espaces d'une chaîne de caractères en Python", en un coup d'œil au reste de la "révision du code" semble OK, sauf que le retour à la ligne n'est pas de retourner les mêmes variables que vous avez utilisé dans le reste du code.
Pour le fixer, sans rien changer d'autre dans le code, changement
number
etword
àdigit
etletters
, fairereturn number,word,space,other
enreturn digit,letters,space,other
, ou mieux encorereturn (digit, letters, space, other)
pour correspondre comportement actuel tout en utilisant une meilleure style de codage et d'être plus explicite quant à ce type de valeur est retournée (dans ce cas, un n-uplet).