Problème de programmation Python

Eleve -  
Phil_1857 Messages postés 1956 Statut Membre -
Bonjour,
je dois faire un programme qui renvoie l'occurrence de chaque lettre dans un texte, mais je suis bloquée car chaque programme indépendant ne fonctionne pas. Voici mon programme:

def formatage(texte):
"""formate le texte"""
if len(texte) <= 0:
print("Le texte doit comporter au moins 1 lettre.")
alphabet = "abcdefghijklmnopqrstuvwxyz"
if texte in alphabet:
texte = texte.lower()
texte_propre = texte.replace(" ","")
return texte_propre


def comptage(nb_lettre):
"""compte le nombre de lettre et sa position dans l'alphabet"""
nb_lettre = [0]*26
for lettre in texte_propre:
position = alphabet.index(lettre)
nb_lettre[position] = nb_lettre[position] + 1
return nb_lettre[position]


def frequence(lettre_dans_texte):
"""calcule la fréquence d'apparition des lettres dans le texte"""
lettre_dans_texte = len(texte)
nb_lettre[alphabet.index(i)] = (nb_lettre / lettre_dans_texte * 100)
frequence = nb_lettre[alphabet.index(i)]
return frequence


def affichage(menu):
"""présentation"""
menu = input("Bonjour, ce programme vous permet d'afficher la fréquence de chaque lettre dans un texte. \nVeuillez entrer votre texte: ")
return menu


def main():
texte = affichage(menu)
texte = formatage(texte)
texte =

Merci d'avance pour votre aide :)

12 réponses

yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
bonjour,
peux-tu utiliser les balises de code, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

ton programme est-il complet? fonctionne-t-il bien?
0
Eleve
 
Je ne pense pas pouvoir les utiliser. Mon programme en haut ne fonctionne pas du tout car il manque plein d'informations ou j'ai mal formulé des lignes mais je ne sais pas comment résoudre cela car j'ai aucune idée de où se trouvent mes erreurs.
0
Utilisateur anonyme
 
Bonjour

les balises de code ça sert à faire en sorte que l'indentation soit conservée quand tu postes sur le forum.
Si tu ne les utilises pas, ton code est illisible et tu n'obtiens pas d'aide.

Donc je pense que tu devrais lire le tuto que t'a donné yg_be et réfléchir à cette phrase
Je ne pense pas pouvoir les utiliser
0
Eleve
 
Désolée, je n'avais pas compris. J'espère que cela fonctionne à présent.

def (texte):
if len(texte) <= 0:
print("Le texte doit comporter au moins 1 lettre.")
alphabet = "abcdefghijklmnopqrstuvwxyz"
if texte in alphabet:
texte = texte.lower()
texte_propre = texte.replace(" ","")
return texte_propre


def comptage(nb_lettre):
nb_lettre = [0]*26
for lettre in texte_propre:
position = alphabet.index(lettre)
nb_lettre[position] = nb_lettre[position] + 1
return nb_lettre[position]


def frequence(lettre_dans_texte):
"""calcule la frequence d'apparition des lettres dans le texte"""
lettre_dans_texte = len(texte)
nb_lettre[alphabet.index(i)] = (nb_lettre / lettre_dans_texte * 100)
frequence = nb_lettre[alphabet.index(i)]
return frequence


def affichage(menu):
menu = ("Bonjour ")

def main():
texte = affichage(menu)
texte = formatage(texte)
texte =
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
Bonjour Eleve,

Ben non, ca ne va pas
Visuellement, ça doit ressembler à ceci :

def test():
    print('test')

test()


Sinon, il n'y a que des définitions de fonctions dans ton code
Elles ne sont jamais appelées
Donc ,à l'exécution, il ne se passe rien ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1956 Statut Membre 168
 
Bonjour Eleve,

Alors, tu vois le problème ou pas ?
0
Itdaboyz Messages postés 359 Date d'inscription   Statut Membre Dernière intervention   97
 
Tu peux réduire tout ton programme en une dizaine de ligne en utilisant une simple table de hashage.
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
OK,

mais à réduire ou pas ce code n'est qu'une suite de définitions de fonctions

jamais appelées, donc à l'exécution il ne se passe rien ...
0
Itdaboyz Messages postés 359 Date d'inscription   Statut Membre Dernière intervention   97
 
from collections import defaultdict

texte = "ceci est un texte"
freq = defaultdict(lambda: 0)

for c in texte:
    if c.isalnum():
        freq[c] += 1

for k, v in freq.items():
    print("Frequence de", k,":", v)


C'est l'occasion de le faire fonctionner du coup
0
Utilisateur anonyme
 
Tu crois vraiment qu'une table de hachage soit à son niveau? S'il donne ça à son prof, il va se faire saquer

Et puis, je te rappelle qu'une solution toute cuite est contraire à la charte.

Enfin, sa question ne concernait pas la résolution de l'énoncé, mais le fait que son code n'y répond pas....
0
Itdaboyz Messages postés 359 Date d'inscription   Statut Membre Dernière intervention   97 > Utilisateur anonyme
 
"Tu crois vraiment qu'une table de hachage soit à son niveau? S'il donne ça à son prof, il va se faire saquer "
Non, et oui. Mais après tout je ne fait pas ses devoirs donc je m'en fou, ce serait contraire à la charte
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
Surement, mais le problème de base, c'est que les fonctions ne sont pas appelées

quand je vois qu'il y a une fonction main(), je me dis que peut-être Eleve pense que cette

fonction se lance au départ, à l'instar de la fonction int main() du C ....

Il nous faudrait une réponse de sa part ...
0
Eleve
 
Je dois mettre toutes mes fonctions dans la fonction main (pour faciliter la lecture et faire comme un résumé de toutes mes fontions)
0
Phil_1857 Messages postés 1956 Statut Membre 168 > Eleve
 
ok mais comme tu n'appelles jamais main, il ne se passe rien ....
0
Eleve
 
Je ne sais pas comment faire du coup pour les "appeler"
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
je pense que tu dois commencer par des exercices plus simples.
0
Utilisateur anonyme > yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pour le moins, as tu déjà fait des exercices plus simples?

Si oui, montre un exemple
0
Eleve
 
Je ne peux pas choisir un exercice plus simple. Avant ce programme, j'ai fait des programmes plus simples, c'était pour commencer à programmer et connaitre les bases. Par exemple, programmer un réveil à une certaine heure et sur différent jour, ou un morpion,...
0
Utilisateur anonyme
 
OK poste le code de ce réveil
0
Eleve > Utilisateur anonyme
 
L'exercice était :
Écrivez une fonction alarme_heure(jour, on_vacation) qui prend comme paramètre

un jour sous forme entier codé de la manière suivante
0 = dimanche,
1 = Lundi,
2 = Mardi,
... 6 = Samedi)
et un booléen en_vacance
et retourne une chaîne de caractère de la forme "7:00"indiquant quand le réveil doit sonner.
En semaine, l'alarme devrait être "7:00" et le week-end, elle devrait être "10:00".

Sauf si nous sommes en vacances :

alors en semaine, il devrait être "10h00"
et les week-ends, il devrait être "off".

Ma réponse est :
def alarme_heure(jour, on_vacation):
    if on_vacation == False: 
        if (jour >= 1 and jour < 6):
            return '7:00'
        return '10:00'
    if (jour >= 1 and jour < 6):
        return '10:00'
    return 'off'
0
Utilisateur anonyme > Eleve
 
OK et quand tu lances ce code il fonctionne tel quel?
0
Eleve > Utilisateur anonyme
 
oui il fonctionnait très bien
0
dachiasse Messages postés 1932 Statut Membre 150 > Eleve
 
Salut,
Hein !? En message 22, tu ne postes que la définition de la fonction. Whis te demande ton code en entier parce qu'il ne l'est pas car en message 25 tu dis qu'il fonctionne très bien.
0
Phil_1857 Messages postés 1956 Statut Membre 168
 
Bonjour Eleve,

"Je ne sais pas comment faire du coup pour les "appeler""

Pour les appeler, c'est la base du langage Python, tu as eu un cours sur le langage, ou au moins

une documentation ?

Le principe est là:

#definition de la fonction "test"
def test():
    print('Coucou !')

#appel de la fonction "test"
test()


et ca imprime à l'écran : Coucou !
0
Utilisateur anonyme
 
Salut Phil, je lui ai demandé de poster son réveil pour voir s’il avait écrit des fonctions et les avait appelées.
Si oui lui faire remarquer, qu’il avait déjà le faire
0
Phil_1857 Messages postés 1956 Statut Membre 168 > Utilisateur anonyme
 
Salut Whismeril,

Ah ok, désolé

Comme ca fait 3 fois que je répète la même chose depuis le début et que la plupart répondent à coté ... :-)
0