Problème de programmation Python

Fermé
Eleve - 26 oct. 2020 à 14:14
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 1 nov. 2020 à 11:27
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 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 Ambassadeur 1 556
26 oct. 2020 à 14:56
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
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
26 oct. 2020 à 21:17
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
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 29 oct. 2020 à 10:14
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
30 oct. 2020 à 10:12
Bonjour Eleve,

Alors, tu vois le problème ou pas ?
0
Itdaboyz Messages postés 359 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 2 juillet 2024 97
30 oct. 2020 à 16:53
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 30 oct. 2020 à 16:56
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 mercredi 22 juin 2011 Statut Membre Dernière intervention 2 juillet 2024 97
30 oct. 2020 à 17:19
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
30 oct. 2020 à 17:37
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 mercredi 22 juin 2011 Statut Membre Dernière intervention 2 juillet 2024 97 > Utilisateur anonyme
30 oct. 2020 à 19:00
"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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
30 oct. 2020 à 17:40
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
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168 > Eleve
31 oct. 2020 à 17:00
ok mais comme tu n'appelles jamais main, il ne se passe rien ....
0
Je ne sais pas comment faire du coup pour les "appeler"
0
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 1 556
30 oct. 2020 à 20:28
je pense que tu dois commencer par des exercices plus simples.
0
Utilisateur anonyme > yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024
30 oct. 2020 à 20:45
Pour le moins, as tu déjà fait des exercices plus simples?

Si oui, montre un exemple
0
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
31 oct. 2020 à 08:40
OK poste le code de ce réveil
0
Eleve > Utilisateur anonyme
31 oct. 2020 à 16:37
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
31 oct. 2020 à 16:40
OK et quand tu lances ce code il fonctionne tel quel?
0
Eleve > Utilisateur anonyme
31 oct. 2020 à 21:10
oui il fonctionnait très bien
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 149 > Eleve
31 oct. 2020 à 21:24
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
31 oct. 2020 à 12:30
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
31 oct. 2020 à 13:07
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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168 > Utilisateur anonyme
31 oct. 2020 à 13:42
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