Boucle for

Fermé
turcmax Messages postés 5 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 22 avril 2020 - 22 avril 2020 à 21:16
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 - 24 avril 2020 à 16:39
Bonjour,
Je ne comprend pas mon erreur. Pk ca me dit ca

def ligne_scan(ligne):
    v=0
    co=0
    d=0
    e=0
    a=0
    for i in range(0, len(ligne)):
        ch=ligne[i]
        if ((ch>='a' and ch<='z') or (ch>='A' and ch <='Z')):
            ch=ch.upper()
            #
            if ch=='A' or ch== 'E' or ch=='I' or ch=='O' or ch=='U':
                v +=1
            else:
                co +=1
        elif ch.isdigit():
            d +=1
        elif ch==" ":
            e +=1
        else:
            a +=1


print("Entrez une nouvelle ligne de texte:\n")
ligne=input()
ligne=ligne.upper()
v,co,d,e,a=ligne_scan(ligne)
#
print(" ")
print("Nombre de voyelles:       %d" % v);
print("Nombre de consonnes:      %d" % co);
print("Nombre de chiffres:       %d" % d);
print("Nombre d'espaces:         %d" % e);
print("Nombre d'autres carac.:   %d" % a);


Entrez une nouvelle ligne de texte:

allo
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-14ad374bbe16> in <module>
      2 ligne=input()
      3 ligne=ligne.upper()
----> 4 v,co,d,e,a=ligne_scan(ligne)
      5 #
      6 print(" ")

TypeError: cannot unpack non-iterable NoneType object



Configuration: Windows / Chrome 81.0.4044.122
A voir également:

2 réponses

yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 Ambassadeur 1 570
22 avril 2020 à 21:43
bonjour, je ne vois pas l'instruction return de ta fonction.
0
turcmax Messages postés 5 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 22 avril 2020
22 avril 2020 à 23:42
Je comprend pas je ne suis pas obliger d<en mettre toujours ?
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 1 570 > turcmax Messages postés 5 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 22 avril 2020
23 avril 2020 à 09:06
tu n'es pas obligé d'en mettre, en effet.
sauf si tu récupères des résultats de la fonction, ce que tu fais en mettant = devant l'appel à la fonction.

je pense que tu devrais commencer par un exercice plus simple, par exemple une fonction qui retourne le double de la valeur d'entrée.

tu utilises les mêmes noms de variable à l'intérieur et à l'extérieur de la fonction, cela ne t'aide pas à comprendre ce qui se passe.

tu pourrais plutôt écrire ceci:
print("Entrez une nouvelle ligne de texte:\n")
maligne=input()
maligne=maligne.upper()
nv,nco,nd,ne,na=ligne_scan(maligne)
#
print(" ")
print("Nombre de voyelles:       %d" % nv);
print("Nombre de consonnes:      %d" % nco);
print("Nombre de chiffres:       %d" % nd);
print("Nombre d'espaces:         %d" % ne);
print("Nombre d'autres carac.:   %d" % na);
0
Utilisateur anonyme
24 avril 2020 à 16:38
Est-ce que tu as trouvé finalement? j'ai le meme probleme..
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mars 2025 1 570
24 avril 2020 à 16:39
je pense que tu devrais commencer par un exercice plus simple, par exemple une fonction qui retourne le double de la valeur d'entrée.
tu utilises les mêmes noms de variable à l'intérieur et à l'extérieur de la fonction, cela ne t'aide pas à comprendre ce qui se passe.
0