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 16-10-2021 17:29:42

mai2900
Invité

Dm de maths

Bonjour,

je suis en 1ère et j'ai un DM pour vendredi prochain,  sur l'écriture d'algorithmes en langage Pyton.

Je ne sais pas comment il faut comprendre la question suivante:

On considère f la fonction cube ; la fonction F écrite en langage Phyton a pour paramètre un nombre x et renvoie pour résultat l'image de x par la fonction f. La fonction images a pour paramètres une liste L de nombres ; elle renvoie pour résultat la liste des images des nombre de L par la fonction f. Ecrire ces deux fonctions en langae Python.

Pouvez vous m'aider à comprendre et à traduire en langage Python?
merci d'avance pour votre support,

#2 16-10-2021 17:47:14

Trustody
Membre
Inscription : 16-10-2021
Messages : 7

Re : Dm de maths

Bonjour,

Qu'est ce que tu ne comprends pas exactement ? Tu ne sais pas ce qu'entend ton professeur par "fonction en Python" ?

En attendant ta réponse,

Trustody

Hors ligne

#3 16-10-2021 18:07:31

mai2900
Invité

Re : Dm de maths

Bonjour,
Je n'arrive pas discerner les deux fonction à écrire, ni comment les relier.
Merci d'avance de votre réponse.

#4 16-10-2021 18:59:10

Paco del Rey
Invité

Re : Dm de maths

Bonsoir Mai.

La première fonction, F, prend un nombre, disons 2 et retourne le cube de 2 : F(2) = 8.

La deuxième, images, prend une liste, disons [-2,0,3] et retourne la liste des cubes : [-8,0,27].

Paco.

#5 16-10-2021 19:13:09

mai2900
Invité

Re : Dm de maths

Bonsoir,
Merci pour votre réponse.
Je pense avoir compris, je vais essayer faire l'exercice et vous redemanderai si besoin.
Mai2900

#6 17-10-2021 19:35:25

mai2900
Invité

Re : Dm de maths

Bonsoir,
J'ai presque réussi mon programme mais il ne me renvoie que la dernière valeur. Comment résoudre ce problème.
Ma fonction Image ressemble à :

def Image(L=[]):
       for i in L:
             l=f(i)
        L.append(l)
        return L
Merci d'avance de votre réponse,

Mai2900

#7 17-10-2021 21:03:00

Paco del Rey
Invité

Re : Dm de maths

Oh la la! La bouillie !

D'abord la longueur de la boucle c'est
len(L)

Donc
   for i in range(len(L)):

Tu prends L[ i ], tu l'élèves au cube, puis tu l'appends à la liste que tu t'apprêtes à retourner.
Tu l'appelles comme tu veux, cette liste, mais surtout pas L,

Je te laisse corriger.

Paco.

#8 17-10-2021 21:20:41

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 989

Re : Dm de maths

Bonsoir,

Discussion déplacée dans le sous-forum programmation.
Tu proposes :

def Image(L=[]):
       for i in L:
             l=f(i)
       L.append(l)
       return L
 

L est la liste des paramètres, pourquoi veux-tu stocker les images dans cette même liste ?
Stocke-les dans une autre liste déclarée au début de ta fonction.

Ensuite si tu écris L.append(l) à la sortie de la boucle, c'est normal que tu n'aies que la dernière image :il n'y a plus que le dernier calcul en mémoire.
Pour stocker toutes images, il faut le faire dans la boucle, pas à l'extérieur. !

Je présume que ta fonction f existe...
Tu ne la donnes pas...
Pour le besoin, en voilà une minimaliste :

def f(x):
    return x**3
 

J'ai un code qui marche, mais essaie d'abord de corriger le tien...

Puisque c'est pour un DM, j'ai supprimé mon code.
Alors, il va te falloir te montrer réactif et on arrivera très vite au bout (mais pas ce soir, mon lit m'attend)

def f(x):
    return x**3

def Images_de_L(L):
    Images=[]
    for nb in L:
        ...    
        ...
    return Images

print (Images_de_L([-2,0,3]))
 

Résultat affiché :
[-8, 0, 27]

N-B : la fonction f n'est pas indispensable : à la place de l=f(i), on peut simplement écrire : l=i**3
@+

[EDIT] Grillé par Paco...
Je vous offre une fonction f appelée fonction anonyme (encore désignée sous le vocable de fonction lambda) :

f=lambda x:x**3
 

Et j'appelle f(-3) qui me renvoie -27

Paco a écrit :

  for i in range(len(L)):

Tu prends L[ i ], tu l'élèves au cube,

Pourquoi lui refuses-tu ?
for i in L:
     l=f(i)
Cette syntaxe qui lit tous les éléments de L un par un est parfaitement correcte et permet de s'affranchir de la connaissance de la longueur de L.
Il est clair que les habitudes nous poussent à considérer i, j, k comme des indices de boucles, donc plutôt que i, il pouvait choisir antecedent... ;-)
et écrire :
for antecedent in L:
L, par contre, n'était donc pas à choisir pour le stockage parce qu'avec L comme liste de stockage, à chaque nombre lu on ajoutait son cube et on entrait dans une boucle infinie...

Dernière modification par yoshi (17-10-2021 21:36:18)


Arx Tarpeia Capitoli proxima...

Hors ligne

#9 18-10-2021 08:41:30

Paco del Rey
Invité

Re : Dm de maths

Merci yoshi.

J'ai des habitudes d'autres langages de programmation, ce qui fait que je parle le langage python avec un fort accent.

La liste L s'appelle un itérable, c'est bien ça ?

Paco.

#10 18-10-2021 09:16:18

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 989

Re : Dm de maths

Re,

Merci de tes remerciements, c'est sympa

La liste L s'appelle un itérable, c'est bien ça ?

Oui.

Je dois reconnaître que le

def Image(L=[]):

de Mai2900 m'a un peu surpris.
Je n'ai pas l'habitude de programmer comme ça.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#11 20-10-2021 12:38:45

BAH MAMADOU SALIOU
Invité

Re : Dm de maths

Bonjour à vous, je viens par ce message solliciter de votre haute bienveillance dans le but de travailler avec vous sur les DM.

#12 20-10-2021 13:07:35

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 989

Re : Dm de maths

Bonjour,

1. Tu n'es pas au bon endroit dans cette discussion : tu n'es pas en train de répondre à Mai2900 mais de parasiter sa discussion...
2. Parce que veux travailler sur les DM : tu devais ouvrir ta propre discussion. Comment ? Ouvre les yeux !
3.

dans le but de travailler avec vous sur les DM.

Si c'est pour aider les jeunes qui questionnent dans leurs DM partie programmation ou Maths, toute personne compétente est libre d'aider qui il veut, sous réserve de ne pas répéter la même chose que celui ou ceux qui ont déjà répondu... sans faire le travail à leur place !
4. Si c'est pour demander de l'aide pour toi : tu es libre de poser ta question (sans poser la même question sur d'autres forums : c'est très mal vu, incorrect, et insultant pour ceux qui te répondraient, quel que soit le forum d'ailleurs

Ceci posé, bienvenue chez nous...

     @+

      Yoshi
- Modérateur -


Arx Tarpeia Capitoli proxima...

Hors ligne

#13 28-10-2021 21:13:26

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 989

Re : Dm de maths

Bonsoir,

La date butoir pour rendre le DM étant passée,  je mets maintenant ma version non expurgée :

def f(x):
    return x**3

def Images_de_L(L):
    Images=[]
    for nb in L:
        l=f(nb)
        Images.append(l)
    return Images

print (Images_de_L([-4,-2,0,3,5]))

Lorsqu'on le lance, on obtient en retour :

[-64, -8, 0, 27, 125]

@+

[EDIT]
on peut aussi (pour le fun) écrire :

def f(x):
    return x**3

def Images_de_L(L):
    Images=[f(nb) for nb in L]
    return Images

 print (Images_de_L([-4,-2,0,3,5]))
 

Et de là l'idée vient "naturellement" de faire encore plus court :

def f(x):
    return x**3

def Images_de_L(L):
    return [f(nb) for nb in L]

 print (Images_de_L([-4,-2,0,3,5]))
 

Ces deux versions retournent bien le même résultat :
[-64, -8, 0, 27, 125]

Dernière modification par yoshi (01-11-2021 15:40:16)


Arx Tarpeia Capitoli proxima...

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)?
vingt sept moins vingt six
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