[Python] Problème sur un code en python, non-définition d'une variable [Résolu]

Signaler
-
 CookieSympa -
Bonjour,

J'ai un DM à rendre mais je me heurte à un problème de définition de variable. L'objectif final est de pouvoir reconnaitre la langue d'un texte avec le pourcentage d'apparition de certaines lettres. Pour cela je dois utiliser trois fonctions différentes, la première compte le nombre d'apparition d'une lettre dans le texte (occurences_lettre), la seconde calcule le nombre de lettre totale (nombre_lettres), et la dernière calcule ensuite le pourcentage d'apparition de cette lettre (fct_pourcentage_lettre).


Voici le code:
#Obj: Déterminer la langue d'un texte à partir de l'analyse des fréquences des lettres

def occurences_lettre(Lettre,phrase):
    nb_Lettre = phrase.count(Lettre)
    print(nb_Lettre)
    return nb_Lettre

def nombre_lettres(phrase):
    nb_total_de_lettres = len(phrase) - phrase.count(" ")
    print(nb_total_de_lettres)
    return nb_total_de_lettres

def fct_pourcentage_lettre(Lettre,phrase):
    occurences_lettre(Lettre,phrase)
    nombre_lettres(phrase)
    Pourcentage_Lettre = nb_Lettre/nb_total_de_lettres * 100
    print(Pourcentage_Lettre)
    return Pourcentage_Lettre

fct_pourcentage_lettre("E","Esprit es tu la")


Cependant une fois lancé, le programme m'indique que la variable "nb_Lettre" n'est pas défini... Et que ma ligne 20 pose problème.

J'espère que certains pourront m'aider en m'expliquer le problème, merci à vous

Configuration: Windows / Chrome 87.0.4280.88

3 réponses

Messages postés
30576
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 janvier 2021
7 222
Bonjour,

Suggestion de lecture, la portée des variables : https://www.pierre-giraud.com/python-apprendre-programmer-cours/portee-variable/

En ligne 14 tu déclenches la fonction, mais tu n'as pas de variable pour récupérer la valeur retournée.

Messages postés
30576
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 janvier 2021
7 222
Quelques observations de graphie sur ton code.

Sur la forme d'abord. Avec python la dénomination des variables est relativement libre. Chacun peut définir ses propres conventions. Mais c'est bien d'en avoir et de s'y tenir. Tu fais cohabiter majuscules et minuscules sans règle apparente : Lettre vs phrase, nb_Lettre vs occurences_lettre vs Pourcentage_Lettre ... utilisant des noms complets et des underscores, tout pourrait être en minuscule, on utilise plutôt des majuscules dans nbLettre, pourcentageLettre, nbTotalLettre. Le lecteur apprécie la régularité dans les conventions du code. Mais cela reste libre ;-)

Sur le fond ensuite, et là cela impacte le résultat du programme. Combien de "E" dans "Esprit es tu la", ton programme répond 1, moi je dirais 2. Là minuscule/majuscule a un impact fort.
Merci de ta réponse, pour ce qui est des majuscules je pense améliorer cela, merci de me l'avoir dit.
Et pour ce qui est des différences entre le "E" et le "e", je galère un peu, tu pourrais m'aiguiller s'il te plaît ?
Messages postés
30576
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 janvier 2021
7 222 > CookieSympa
Moi je mettrais tout en minuscule, lettre et phrase. Ainsi le reste du code ne bouge pas.

Après il y a une vraie question fonctionnelle est-ce que éèêë c'est pareil que e ? Ce n'est pas au programmeur de répondre à la question.

Mais peut être ne se pose t-elle pas puisque tu écris "Esprit es tu la" et non "Esprit es tu là" ;-)
>
Messages postés
30576
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 janvier 2021

Bien vu, je vais peut-être le simplifier et tout mettre en majuscule, cela enlèvera ce problème, merci énormément de m'avoir aidé :-)
Messages postés
30576
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 janvier 2021
7 222 > CookieSympa
je pense que cela ne règle pas la question.
>>> "êëéée".upper()
'ÊËÉÉE'
D'une certaine manière si, les textes de mon DM sont tous en majuscules, sans accents et sans ponctuation, j'aurais peut-être dû le préciser ^^