Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 03-12-2023 10:19:49

camillebrichet43333
Invité

devoir maison

Bonjour ,
je suis en seconde et j'ai un devoir maison à faire .
La question est 3)écrire une fonction qui prend un entier n à 2 chiffres en variable en entrée et qui sort le nombre de 5 qu'il contient.
Pouvez vous m'aider svp.

#2 03-12-2023 10:21:36

camillebrichet43333
Invité

Re : devoir maison

sur python*

#3 03-12-2023 10:43:27

Hans
Invité

Re : devoir maison

def foo(n):
    result = 0
    if n%1 == 5:
        result += 1
    if n%10 == 5:
        result += 1
    return result
print(foo(int(input())))

#4 03-12-2023 11:06:35

Rescassol
Membre
Lieu : 30610 Sauve
Inscription : 19-09-2023
Messages : 351

Re : devoir maison

Bonjour,

s=input("n=")
print(s, 'contient',s.count('5'),'fois le chiffre 5')

Tu sauras, je l'epère, transformer ça en fonction.

Cordialement,
Rescassol

Dernière modification par Rescassol (03-12-2023 14:22:01)

Hors ligne

#5 03-12-2023 12:24:19

camillebrichet43333
Invité

Re : devoir maison

Je vous remercie j'ai réussi pour mon devoir maison de demain

#6 03-12-2023 12:56:12

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : devoir maison

Bpnjour,

@Hans
L'enfer est pavé de bonnes intentions dit-on, ce que tu lui fournis l'aidera-t-elle à avancer dans sa connaissance de Python ?
Non !


C'est pourquoi, ici, on aide les demandeurs d'aide, on ne fait pas le travail à leur place...

Alors, une analyse sur ce que tu proposes :
    if n%1 == 5:
        result += 1

si n =25, n%1 renvoie 0,  si n= 27, n%1 renvoie 0 aussi...
Quel que soit n, n%1 ne renverra jamais 5 : normal !
Dans la division euclidienne de n par 1, le reste devant être strictement inférieur à 1, il ne pourra que valoir 0 !

Le bon test ne peut être que :
if n%10 == 5:
    result+=1

Ensuite comment tester le seul chiffre des dizaines ?
1) n, nombre à deux chiffres  peut s'écrire ainsi : n=10d+u  (d pour dizaines, u pour unités) :
    Le "chiffre" d, s'obtient facilement par (n-u)/10...
    Mais d'une part, ça, ce sont des maths, et même si Python saurait que (27-7)/10 = 2, en fait pour Python (27-7)/10 = 2.0...
2) D'autre part, cela impose de connaître le chiffre des unités...
    En fait, en Python, il existe une division qui donne le quotient entier d'une division : //.
    Si tu ne l'as jamais vu, utilise la version ci-dessus au 1)... Ça, au moins, est censé, en maths, être connu depuis la 6e...
    Pour ta connaissance personnelle (et tu ne ne connais très probablement pas, donc ne l'utilise pas), en Python existe la fonction divmod().   
    Exemple avec n=52 
     

   
     n=52 :
     d,u=divmod(n,10)
     print (d,u)

    Et on obtient : 5 2

Enfin n'appelle pas ta fonction foo, ce serait le plus sûr moyen de montrer que tu as copié quelque chose quelque part et ce n'est pas une habitude à prendre : donne lui un nom "parlant" du genre def compte(n):

Je pense que le but de l'exercice est de te faire jouer avec reste % et quotient /  (plus précis est : //)...
Pour écrire un petit script, on prend brouillon et stylo et on écrit en français :

def compte(n):
      somme =0
      extraire chiffre des unités
      Si ce chiffre est égal à 5
           ajouter 1 à somme
      extraire chiffre des dizaines
      si ce  chiffre ==5
           ajouter 1 à somme
      renvoyer la somme

Demander un nombre à 2 chiffres avec input()

Petit commentaire : input() donne toujours une chaîne de caractères, donc pour le décompte comme tu as besoin d'un entier, tu es obligée de convertir ta chaine en un entier par int(input())

Envoi du nombre n à ta fonction et récupération du résultat renvoyé :
s = compte(n)

Phrase de conclusion :
print("Le nombre",n,"contient", s,"fois le chiffre 5")

Si tu n'arrives pas à écrire quelque chose qui fonctionne, reviens et montre ce que tu as fait, on expliquera pourquoi et on corrigera.

Courage, ce n'est pas si compliqué que tu pourrais le croire !

Voilà ce que j'obtiens avec 3 essais :

================== RESTART: C:/Python38/Progs_persos/Compte les 5.py ==================
Entrer un nombre à deux chiffres : 65
Le nombre 65 contient 1 fois le chiffre 5
>>>
================== RESTART: C:/Python38/Progs_persos/Compte les 5.py ==================
Entrer un nombre à deux chiffres : 55
Le nombre 55 contient 2 fois le chiffre 5
>>>
=================== RESTART: C:/Python38/Progs_persos/Compte les 5.py =================
Entrer un nombre à deux chiffres : 83
Le nombre 83 contient 0 fois le chiffre 5

@+

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante dix-huit plus onze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums