fréquence avec Edupython

Retrouver tous les sujets résolus.
Répondre
Cédric

fréquence avec Edupython

Message par Cédric » lun. 25 nov. 2019 06:53

from lycee import *
def compter_lettre(phrase,lettre):
x,n,espace=lettre,0,0
for caractere in phrase :
if caractere==x:
n=n+1
elif caractere==" ":
espace=espace+1
return n/(len(phrase)-espace)
Bonjour,
j'ai écrit le script ci-dessus avec Edupython pour avoir la fréquence d'une lettre dans une phrase mais si je le teste, par exemple avec
compter_lettre("je suis libre","i") , cela m'affiche 0.0
Je ne comprends pas mon erreur.
Merci de votre aide précieuse !
Cordialement,
C.
sos-math(21)
Messages : 8616
Enregistré le : lun. 30 août 2010 11:15

Re: fréquence avec Edupython

Message par sos-math(21) » lun. 25 nov. 2019 20:52

Bonjour,
j'ai vérifié ton programme :

Code : Tout sélectionner

def compter_lettre(phrase,lettre):
    x,n,espace = lettre,0,0
    for caractere in phrase :
        if caractere == x:
            n = n+1
        elif caractere==" ":
            espace = espace + 1
    return n / (len(phrase)-espace)
Et il fonctionne parfaitement car en vérifiant :

Code : Tout sélectionner

>>> "je suis libre".count("i")
2

>>> len([car for car in "je suis libre" if car != " "])
11

>>> 2/11
0.18181818181818182

>>> compter_lettre("je suis libre","i")
0.18181818181818182
 
As-tu bien mis les indentations comme il faut ? Je te donne le lien du script sur replit : https://repl.it/@rnivelle/CluelessBlissfulOutliers
Bonne continuation
Cédric

Re: fréquence avec Edupython

Message par Cédric » mar. 26 nov. 2019 16:55

Bonsoir,
merci beaucoup j'ai tout compris grâce à vous : j'avais fait une erreur d'indentation.
J'en profite pour vous poser une autre question.
J'avais à compléter un script qui demande à l'utilisateur son prénom, son nom et son âge et affiche en respectant les majuscules et minuscules le résultat ci-contre :
Salut Prénom NOM
tu as age ans
Voici le script complété qui marche quand je le teste par exemple dans la Console avec identite("famechon","herve","15").
LE VOICI comme je l'ai complété :
from lycee import *
def identite(nom,prenom,age):
nom=nom.upper()
prenom=prenom.capitalize()
age=str(age)
print("Salut",prenom,nom,"\ntu as",age,"ans")
La ligne 5 : age=str(age) qui était donnée, je ne la comprends pas. Que signifie str ? et même si j'enlève cette ligne le script fonctionne. Elle sert à quoi alors cette ligne ?
Merci beaucoup !
C.
sos-math(27)
Messages : 1425
Enregistré le : ven. 20 juin 2014 15:58

Re: fréquence avec Edupython

Message par sos-math(27) » mar. 26 nov. 2019 19:06

Bonjour Cédric,
Cette instruction permet de changer le type de variable.
Les types "simple" des variables sont : int (entiers), float (nombres décimaux), booléen, str (chaînes de caractères)
Par exemple, si tu demande à un utilisateur se saisir son âge, la réponse entrée sera une chaîne de caractère (str)
Si tu veux la manipuler comme un nombre, il faut changer son type en faisant int(age)

Ici, l'instruction force donc age à être du type chaîne de caractère.

à bientôt
Cédric

Re: fréquence avec Edupython

Message par Cédric » mer. 27 nov. 2019 13:08

Merci beaucoup pour vos réponses toujours complètes, claires et rapides !
C.
SoS-Math(33)
Messages : 2634
Enregistré le : ven. 25 nov. 2016 14:24

Re: fréquence avec Edupython

Message par SoS-Math(33) » mer. 27 nov. 2019 13:37

Merci pour ces compliments
A bientôt sur le forum
Sos-math
Répondre