Solution qui pose problème
Bonjour,
je me présente : je ne suis pas Mona Lisa, je suis mon alias.
J'ai interprété et compris ce code en python tiré de Apprendre la Programmation Orientée Objet avec le langage Python de Vincent BOUCHENY.
si si, y compris avec le mot clef is, peut-être défini avant mais que j'ai pas capté lors de la lecture, cela se représente bien , avec des adresses (habilement) et des flèches
Par contre, je ne comprends pourquoi le code ci-dessous fait ce que je demande. C'est dans le but de torturer mes élèves avec des énoncés aléatoirisés :
Je voulais un contexte, et des questions relatives à ce contexte.
Cela semble merveilleusement fonctionner, y compris lorsque j'encapsule cela dans un module.
Comment avec des mots, des flèches ou tout autre instrument de compréhension sauriez-vous me convaincre que je peux avoir confiance dans ces lignes de code compte tenu de ce que j'attends.
J'ai mis des images plutôt que du code, je ne vous dirai pas pourquoi
Merci de votre attention
Réponses
-
Sam. Ok. Tu peux garder les images pour toi. Donne moi le code pour le testerLorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs..
-
si tu le souhaites, sieur gebrane (ta photo a changé de point de vue ou ... ?), voici les codes en pièce ointes
-
Bonjour,Ta fonction tire deux nombres au hasard et retourne deux fonctions (qui dépendent de ces deux nombres). Tu l'appelles et stockes le résultat dans Menu. Puis, tu appelles ces deux fonctions dans ta boucle for. Qu'est-ce que tu attends de ton code ? Qu'est-ce que tu ne comprends pas et qui te semble inattendu ? Peut-être que tu es étonné que les deux nombres soient les mêmes dans les deux cas ?
-
Sam; ok est ce que ce code répond à tes esperances
import random class MathQuiz: def __init__(self): self.x, self.y = random.randint(2, 9), random.randint(2, 9) def q1(self): a, b = self.x, self.y op_resultat = a + b calculEnonce = '$' + str(a) + '+' + str(b) + '$' calculReponse = str(op_resultat) return (calculEnonce, calculReponse) def q2(self): a, b = self.x, self.y op_resultat = a * b calculEnonce = '$' + str(a) + '\\times' + str(b) + '$' calculReponse = str(op_resultat) return (calculEnonce, calculReponse) def run_quiz(): quiz = MathQuiz() questions = [quiz.q1, quiz.q2] for question in questions: enonce, reponse = question() print("Enoncé:", enonce) # Demander la réponse de l'utilisateur user_reponse = input("Entrez votre réponse: ") # Vérifier si la réponse de l'utilisateur est correcte if user_reponse.strip() == reponse: print("Correct !") else: print(f"Incorrect. La bonne réponse est {reponse}.") print() # Exécuter le quiz run_quiz()
Lorsque notre cher Nico, le professeur, intervient dans une question d'analyse, c'est une véritable joie pour les lecteurs.. -
Il y a deux choses que je ne comprends pas :
1. Par quel mécanisme puis-je appeler une fonction englobée dans une autre, cette dernière n'étant pas explicitement appelée.
2. Comment se fait-il que les fonctions lorsqu'on les appelle successivement utilisent les mêmes nombres aléatoires ?
Aussi la réponse de Karnaj ne m'aide guère ainsi que la retranscription sous forme de classe de gebrane, mais merci tout de même pour vos réponses.
-
1. Tu veux dire, pourquoi en bas, tu arrives à appeler q1 et q2 que tu as définies dans ea1000 ? Si oui, c’est juste que tu les as renvoyées par ea1000, et du coup, tu peux les appeler puisque tu as appelé ea1000 et mis le résultat dans une variable.
2. Les deux fonctions utilisent x et y qui sont définies en dehors d’elles. Par contre, si tu appelles deux fois ea1000, tu n’auras pas les mêmes. Si tu veux que les x et y de q1 et de q2 soient différents, mets x,y = random.randint(…) dans les deux.
Si je réponds à côté, comme je serai la troisième personne dans ce cas, cela voudrait peut-être dire que tu dois formuler ta question de manière plus précise -
Pour ta première question, c'est que les fonctions sont des objets de première classe en Python. Elles peuvent être stockées dans des variables, retournées, etc. C'est d'ailleurs souvent ce qu'on fait avec les fonctions lambda. Ce n'est pas important de savoir où elle a été définie. Tu stockes ta fonction dans une variable et tu la renvoies. En clair, les fonctions ne sont pas « juste » du texte avec un bout de code qui indique quoi faire. Donc quand tu appelles la fonction dans ta boucle for, tu appelles l'objet qui a été retourné par eaT000. Quand tu vas rappeler ta fonction, une fonction sera créée et sera renvoyée. Essaie le code suivant, au premier appel, on crée une première fonction y qui est renvoyée, et au second, on en crée une autre, et ces deux fonctions n'ont rien à voir. C'est la même chose que si tu renvoyais une variable « normale ».
from random import randint def f(): a = randint(1, 10) def y(): return a return y g = f() h = f() print(g()) print(h())
Pour ta seconde question, analysons ce qui se passe quand on appelle ta fonction. On a deux variables x et y tirées au hasard, leurs valeurs sont maintenant fixées. On crée deux fonctions q1 et q2 qui utilisent ces variables dont la valeur est fixée, donc qui utilisent la même valeur. On retourne ces deux fonctions qui utilisent ces deux valeurs. Il y a quelques subtilités. Par exemple, dans le code suivant, les deux fonctions renvoient 4.Pour en savoir plus, tu peux te renseigner sur la notion de fermeture et de comment les variables sont capturées dans ce contexte (allez, je vais faire ma petite pub avec ça https://zestedesavoir.com/tutoriels/634/une-introduction-a-ruby/organisation-de-code/les-blocs/ ).from random import randint def f(): a = 2 def y(): return a a = 4 def z(): return a return [y, z] g, h = f() print(g()) print(h())
-
Merci pour vos réponsesGeorges Abitbol1. Oui c'est bien ça qui me tracasse2. Ce n'est pas clair dans ma petite tête, j'ai conscience que mon questionnement n'est pas des plus précis.Karnajje vais tester de mon côté pour me faire une idée plus précise.Et quand mon questionnement deviendra précis je ne doute pas qu'il n'y ai plus lieu de vous solliciter.
-
Ce qu’il faut savoir, c’est qu’une fonction est un objet comme un autre, qui peut être suivi de parenthèses pour être appelé (en clair, un objet muni de la méthode magique __call__).Tu peux donc la manipuler comme n’importe quel autre objet (utilisé en argument d’une fonction, dans une liste, comme valeur renvoyée…)Ça se crée avec l’un des deux mots clé def ou lambda.Quand tu utilises une fonction sans les parenthèses, tu utilises son nom, comme n’importe quelle autre variable.Quand tu l’utilises avec les parenthèses, tu utilises la valeur renvoyée par la fonction, comme en mathématiques, en fait.Essaie ça :
from random import randint a=lambda x:x+1 def b(x): return x*x def c(x): return [a,b][randint(0,1)] print(c(4))
La fonction c est soit a soit b.Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Merci nicolas patrois,le mieux est que je fournisse un exemple de là où j'en suis, avec comme classe test les élèves que je nommerai :KARNAJ zestGEBRANE zéroABITBOL GeorgesPATROIS NicolasBon vous serez en seconde générale et technologique n° 01, enseignement de Mathématiques, en classe complète, ce sera un exercice sur 5 non pris en compte dans la moyenne.je vous transmettrai une archive .zip (on peut je crois via ce forum) avec les énoncés en pdf et vous me rendrez le pdf complété. Je demanderai gentiment à mes esclaves de les collecter et de les corriger et vous communiquerai ensuite les corrections .Si vous ne comprenez pas les consignes, sans consigne, vous n'auriez pas pu répondre à ma question de départ.Tout ça via ce fil, genre ENT, quoi.Je vous envoie cela demain, peut-être ce jour
-
Vous avez jusqu'au 30/07/2024la grille de shidoku en bas ne contient que les lettres majuscules A, B, C et D : en ligne, en colonne et en bloc de 2x2.au fait, c'est fait par un windaubien pour des windaubiens, à la base.
-
Bon ben déception, en fait cela ne fonctionne pas comme je le souhaiterais puisque vous avez le même énoncé.(mais pas les mêmes zone de réponse, ce que je comprends)
-
Si tu es linuxien, essaie auto-multiple-choice ?
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Tu es linuxien et tu l'as déjà utilisé régulièrement sur une année scolaire avec tes élèves ?
-
Je ne l’ai pas encore installé (pas assez de place).
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Mort de lol.Sinon tu veux bien remplir mon pdf dans l'archive afin que je puisse mettre à l'épreuve le pouvoir de sa correction ?et on verra plus tard pour les soldats de première classe
-
Celui de Gebrane est mal nommé : 2GT_01-EXERCICE_EXOMATIK-MATHS-01-GEBRANE z+�ro_e.pdfJe remplis les cases blanches mais les cases grises ne le sont pas automatiquement.
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Comme je te l'avais indiqué je suis du côté obscur de l'OS. Tu dois sans doute décoder en utf8, alors que j'encode en iso-bidule.Par contre, mon ignorance infinie a reculé, je vous ai ... compris !On accueille quatre nouveaux élèves, soyez zentils hein
-
Pour les cases grises ce n'est effectivement pas automatique et ce ne le sera pas, car cela me permet, pendant ce temps, de jouer à Fornite avec les profs connectés.
-
Windows ne connaît pas utf-8 ?
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Si si mais je suis communautariste !
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 58 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres