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

Résolu/Fermé
CookieSympa - 2 janv. 2021 à 17:12
 CookieSympa - 3 janv. 2021 à 11:37
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

jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224
Modifié le 2 janv. 2021 à 17:19
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.

2
jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224
2 janv. 2021 à 18:40
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.
1
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 ?
0
jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224 > CookieSympa
Modifié le 2 janv. 2021 à 19:03
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à" ;-)
0
CookieSympa > jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024
2 janv. 2021 à 20:14
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é :-)
0
jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224 > CookieSympa
2 janv. 2021 à 20:56
je pense que cela ne règle pas la question.
>>> "êëéée".upper()
'ÊËÉÉE'
0
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 ^^
0