Commit 9e471b4b authored by Jérôme Ortais's avatar Jérôme Ortais
Browse files

Merge branch 'develop'

parents 3b1552ec c60ad7dd
Version 10.0?
Version 10.10
* Représentation de données niveau cinquième
* Calcul d'aire de disques niveau cinquième
* Amélioration de la version Mac
** icône 512 pixels par 512 pixels
** Retour du look Aqua
** Position de la fenêtre à l'ouverture améliorée
** Ouverture automatique des fichiers pdf générés
** Pyromaths n'est plus lancé par un applescript
** Diverses améliorations cosmétiques
** Compatibilité avec Mac OS X 10.4
* Exercices de proportionnalités en cinquièmes
** Calcul de la quatrième proportionnelle
** Calculs avec les échelles
* Conversions d'unités
** Exercices de conversions d'unités de volume
** Amélioration de la présentation du tableau de conversions
* Exercice de géométrie dans l'espace niveau sixième
* Visualisation des exercices grâce au bouton "Présentation"
Version 10.06-1
* Correction d’un bug (il manquait un retour ligne après certains \par) dans les exercices de géométrie troisième.
* Ajout de l’utilisation du paquet textcomp pour enjoliver les \degres
Version 10.06
* Exercice de calcul d'aires niveau sixième
* Correction d'un non sens dans les tableaux de conversion niveau sixième : le tableau de conversion se retrouvait parfois avec plusieurs chiffres dans la colonne des mL, mm ou mg.
* Correction d'un bug dans l'affichage de la résolution d'une équation du second degré (merci à Marty de l'avoir signalé)
......
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Pyromaths
# Un programme en Python qui permet de créer des fiches d'exercices types de
# mathématiques niveau collège ainsi que leur corrigé en LaTeX.
# Copyright (C) 2006 -- Jérôme Ortais (jerome.ortais@pyromaths.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
import random
from outils.decimaux import decimaux
#
# ------------------- Aire de disques -------------------
#
def arrondir(nombre):
[partie_entiere, partie_decimale] = nombre.split(".")
return int(partie_entiere) + (int(partie_decimale[0])>=5)
def exo_aire_diques():
exo = ["\\exercice"]
cor = ["\\exercice*"]
rayon1 = 2*(random.randrange(33) + 1)
rayon2 = int(1.5*rayon1)
i=random.randrange(2)
if i==0:
donnees=('rayons', rayon1, rayon2)
else:
donnees=(u'diamètres', 2*rayon1, 2*rayon2)
difference_des_carres = rayon2**2-rayon1**2
aire_arrondie = arrondir(str(3.14 * difference_des_carres))
enonce = \
u"""\\begin{minipage}{4cm}
\\begin{pspicture}(-2,-2)(2,2)
\\pscircle[fillstyle=solid,fillcolor=lightgray](0,0){1.5}
\\pscircle[fillstyle=solid,fillcolor=white](0,0){1}
\\psdots[dotstyle=x](0,0)
\\rput(0.3;60){$O$}
\\end{pspicture}
\\end{minipage}\\hfill
\\begin{minipage}{13cm}
On considère deux cercles de centre $O$ et de %s respectifs $\\unit[%s]{cm}$ et $\\unit[%s]{cm}$.\\par
Calculer l'aire de la couronne circulaire (partie en gris) comprise entre les deux cercles en arrondissant le résultat au $\\unit{cm^2}$ le plus proche.""" % donnees
exo.append(enonce)
cor.append(enonce)
cor.append("\\par\\dotfill{}\\\\\n")
if i==0:
cor.append(u"On calcule l'aire du disque de rayon $\\unit[%s]{cm}$:" % rayon2)
cor.append(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]" % (rayon2, rayon2, rayon2, decimaux(rayon2**2)))
cor.append(u"On calcule l'aire du disque de rayon $\\unit[%s]{cm}$:" % rayon1)
cor.append(u"\\[ \\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\]" % (rayon1, rayon1, rayon1, decimaux(rayon1**2)))
else:
cor.append(u"Un disque de diamètre $\\unit[%s]{cm}$ a pour rayon $%s \div 2 = \\unit[%s]{cm}$. Calculons son aire:" % (2*rayon2, 2*rayon2, rayon2))
cor.append(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]" % (rayon2, rayon2, rayon2, decimaux(rayon2**2)))
cor.append(u"Un disque de diamètre $\\unit[%s]{cm}$ a pour rayon $%s \div 2 = \\unit[%s]{cm}$. Calculons son aire:" % (2*rayon1, 2*rayon1, rayon1))
cor.append(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]" % (rayon1, rayon1, rayon1, decimaux(rayon1**2)))
cor.append(u"L'aire $\\mathcal{A}$ de la couronne est obtenue en retranchant l'aire du disque de rayon $\\unit[%s]{cm}$ à l'aire du disque de rayon $\\unit[%s]{cm}$:"% (rayon1, rayon2))
cor.append(u"\\[\\mathcal{A} = %s \\pi - %s \\pi= (%s - %s)\\pi =\\unit[%s \\pi]{cm^2}\\]" % (decimaux(rayon2**2), decimaux(rayon1**2), decimaux(rayon2**2), decimaux(rayon1**2), decimaux(difference_des_carres)))
cor.append(u"L'aire exacte de la couronne est $\\unit[%s \\pi]{cm^2}$." % (decimaux(difference_des_carres)))
cor.append(u"En prenant 3,14 comme valeur approchée du nombre $\\pi$, on obtient :")
cor.append(u"\\[\\mathcal{A} \\approx %s \\times 3,14\\]" % decimaux(difference_des_carres))
cor.append(u"\\[\\boxed{\\mathcal{A} \\approx \\unit[%s]{cm^2}}\\]" % decimaux(aire_arrondie))
exo.append("\\end{minipage}\n")
cor.append("\\end{minipage}\n")
return (exo, cor)
\ No newline at end of file
......@@ -21,7 +21,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
from . import priorites, symetrie, fractions, reperage, relatifs, construction
from . import priorites, symetrie, fractions, reperage, relatifs, construction, proportionnalite, aires, diagrammes
def write(f0, f1, exos):
f0.write("\n")
......@@ -33,6 +33,7 @@ def main(exo,f0, f1):
modules = (priorites.main, symetrie.main, fractions.fractions_egales,
fractions.sommes_fractions, fractions.produits_fractions,
reperage.main, relatifs.main, construction.exo_triangle,
construction.exo_quadrilatere)
construction.exo_quadrilatere,
proportionnalite.exo_echelles, aires.exo_aire_diques, diagrammes.exo_diagrammes)
write(f0, f1, modules[exo]())
......@@ -23,6 +23,7 @@
import outils.Geometrie as geo
import random,math
from outils.Affichage import decimaux
from outils.Geometrie import cotation, cotation_h
#trigo en degré
tan =lambda z:math.tan(math.radians(z))
......@@ -38,18 +39,6 @@ def shuffle_nom(polygone):
for i in range(debut,debut+n*sens,sens):
nom+=polygone[i]
return nom
def cotation(A,B,longueur,couleur="",unite="cm"):
(xA,yA)=A
(xB,yB)=B
if couleur!="":
couleur="\\color{%s}"%couleur
return u"\\pcline[linestyle=none](%s,%s)(%s,%s) \\bput{:U}{%s\\unit[%s]{%s}}" %(xA,yA,xB,yB,couleur,longueur,unite)
def cotation_h(A,B,longueur,couleur="",unite="cm"):
(xA,yA)=A
(xB,yB)=B
if couleur!="":
couleur="\\color{%s}"%couleur
return u"\\pcline[linestyle=none](%s,%s)(%s,%s) \\aput{:U}{%s\\unit[%s]{%s}}" %(xA,yA,xB,yB,couleur,longueur,unite)
def exo_triangle(test=False):
questions=[quest_equilateral,
......
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Pyromaths
# Un programme en Python qui permet de créer des fiches d'exercices types de
# mathématiques niveau collège ainsi que leur corrigé en LaTeX.
# Copyright (C) 2006 -- Jérôme Ortais (jerome.ortais@pyromaths.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
import random
#
# ------------------- Diagrammes -------------------
#
def exo_diagrammes():
exo = ["\\exercice"]
cor = ["\\exercice*"]
h1 = random.randrange(2) + 5
h2 = 8
h3 = random.randrange(2) + 7
h5 = random.randrange(4)+1
h6 = random.randrange(3)
h7 = random.randrange(2)+1
h4 = 30 - h1 - h2 - h3 - h5 - h6 - h7
basket = random.randrange(7) + 3
tennis = random.randrange(7) + 3
judo = random.randrange(7) + 3
football = 30 - tennis - basket - judo
question1 = \
u"""\\renewcommand{\\arraystretch}{1.8}
\\item On a demandé aux élèves d'une classe de cinquième combien de temps par semaine était consacré à leur sport favori.\\par
\\begin{tabular}{|c|c|c|c|c|c|c|c|}\\hline Durée t (en h)& $0 \\le t < 1$ & $1 \\le t < 2$ & $2 \\le t < 3$ & $3 \\le t < 4$ & $4 \\le t < 5$ & $5 \\le t < 6$ & $6 \\le t < 7$ \\\\\\hline Effectif & %s & %s & %s & %s & %s & %s & %s \\\\\\hline \\end{tabular}\\par
À partir de ce tableau, construire un histogramme pour représenter ces données.\\par""" % (h1, h2, h3, h4, h5, h6, h7)
question2 = \
u"""\\item On a demandé aux élèves quel était leur sport préféré. %s élèves préfèrent le basket-ball, %s le tennis, %s le football et %s le judo. Construire un diagramme circulaire représentant cette répartion.\\par""" % (basket, tennis, football, judo)
exo.append("\\begin{enumerate}")
exo.append(question1)
exo.append(question2)
exo.append("\\end{enumerate}")
cor.append("\\begin{enumerate}")
cor.append(question1)
cor.append(u"""\\begin{minipage}{10cm}
\\begin{pspicture}(0,-1)(8.5,9.5)
\\psaxes[showorigin=false]{->}(7.5,8.5)
\\psset{fillstyle=solid,fillcolor=gray,linewidth=0.5pt}
\\psframe(0,0)(1,%s)
\\psframe(1,0)(2,%s)
\\psframe(2,0)(3,%s)
\\psframe(3,0)(4,%s)
\\psframe(4,0)(5,%s)
\\psframe(5,0)(6,%s)
\\psframe(6,0)(7,%s)
\\rput(-0.2,-0.425){$0$}
\\rput(8.3,0){Durée}
\\rput(0,8.8){Effectif}
\\end{pspicture}
\\end{minipage}
\\begin{minipage}{6cm}
Sur l'axe horizontal, on représente les durées en heures et, sur l'axe vertical, on représente les effectifs.
\\end{minipage}""" % (h1, h2, h3, h4, h5, h6, h7))
cor.append(question2)
cor.append(u"L'effectif total est égal à $ %s + %s + %s + %s = 30$. La mesure d'angle d'un secteur circulaire est proportionnelle à l'effectif du sport qu'il représente. Le coefficient de proportionnalité est égal au quotient de l'effectif total par 360\\degre c'est à dire $360 \\div 30=12$.\\par" % (basket, tennis, football, judo))
cor.append(u"""\\renewcommand\\tabcolsep{10pt}
\\begin{tabular}{|l|c|c|c|c|c|c}
\\cline{1-6}
Sport favori & Basket-ball & Tennis & Football & Judo & Total &\\rnode{plan1}{}\\\\
\\cline{1-6}
Effectif & %s & %s & %s & %s & 30 &\\rnode{plan1}{}\\\\
\\cline{1-6}
Mesure (en degré) & \\bf%s & \\bf%s & \\bf%s & \\bf%s & 360 &\\rnode{plan2}{}\\\\
\\cline{1-6}
\\end{tabular}
\\ncbar{->}{plan1}{plan2}\\Aput{$\\times 12$}\\par
\\begin{minipage}{6cm}
En utilisant les mesures d'angles obtenues dans le tableau de proportionnalité, on trace le diagramme circulaire.
\\end{minipage}""" % (basket, tennis, football, judo, basket*12, tennis*12, football*12, judo*12))
cor.append(u"""\\begin{minipage}{13cm}
\\psset{unit=3cm,fillstyle=solid}
\\pspicture(-1.5,-1)(1,1.5)
\\pswedge[fillcolor=lightgray]{1}{0}{%s}
\\pswedge[fillcolor=gray]{1}{%s}{%s}
\\pswedge[fillcolor=darkgray]{1}{%s}{%s}
\\pswedge{1}{%s}{360}
\\rput(.6;%s){Basket}
\\rput(.6;%s){Tennis}
\\rput(.6;%s){\\white Football}
\\rput(.6;%s){Judo}
\\endpspicture
\\end{minipage}""" %(basket*12, basket*12, basket*12+tennis*12, basket*12+tennis*12, basket*12+tennis*12+football*12, basket*12+tennis*12+football*12, basket*6, basket*12+tennis*6, basket*12+tennis*12+football*6, basket*6+tennis*6+football*6+180 ))
cor.append(u"\\end{enumerate}")
return (exo, cor)
\ No newline at end of file
# -*- coding: utf-8 -*-
#
# Pyromaths
# Un programme en Python qui permet de créer des fiches d'exercices types de
# mathématiques niveau collège ainsi que leur corrigé en LaTeX.
# Copyright (C) 2006 -- Jérôme Ortais (jerome.ortais@pyromaths.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
from random import randint, randrange
from outils.decimaux import decimaux
import math
def ncotation(A,B,longueur,couleur=""):
"""trace une flèche et inscrit horizontalement, dessous, la longueur entre A et B
où A et B sont des \node"""
linecouleur = ""
if couleur!="":
linecouleur = ",linecolor = %s"%couleur
couleur="\\color{%s}"%couleur
return u"\\ncline[linestyle=dashed, offset = -1.5, linewidth = 0.4pt %s]{<->}{%s}{%s} \\Bput{%s %s}" %(linecouleur,A, B,couleur,longueur )
def ncotation_h(A,B,longueur,couleur=""):
"""idem mais au dessus de la flèche"""
linecouleur = ""
if couleur!="":
linecouleur = ",linecolor = %s"%couleur
couleur="\\color{%s}"%couleur
return u"\\ncline[linestyle=dashed, offset = 1.5, linewidth = 0.4pt %s]{<->}{%s}{%s} \\Aput{%s %s}" %(linecouleur,A, B,couleur,longueur )
def exo_echelles():
"""À partir d'un plan tracé, déterminer l'échelle et des longueurs déterminées."""
#Échelle
echelle = [ 100, 250, 400, 500, 750, 1000][randrange(6)]
#figure : un plan d'appartement déssiner en psTricks
a, d = randint(40,60), randint(36,45)
b, c = randint(8, d - 27), randint(9, a - 25 )
xF = a - c
xE = xF - 6
yK = b + 9
yF = b - 6
yH = b
#Calculs des grandeurs réelles en mm !
reels = [echelle * a, echelle * b, echelle * c, echelle * d]
plan = [a, b, c, d]
#choix permet de choisir si on donne a, b, c ou d en énoncé
choix = randrange(4)
reponses = ["a", "b", "c", "d"]
enonce = reponses.pop(choix)
#sur la deuxième ligne du tableau, on écrit en cm, en gras, les nombres calculés
tab_reels = [ "\\bf"*(i!=choix) + decimaux(reels[i]/10.0) for i in range(4)]
#Pour placer les quatre lettres sur le plan
cotation_couleur = [["a", ""],
["b", ""],
["c", ""],
["d", ""]]
#la longueur donnée est tracée en bleu
cotation_couleur[choix][1] = "enonce"
#figure PSTricks en fonction des paramètres a, d, xE, XF, yF
figure = ["\\psset{PointName = none, PointSymbol = none, unit = 1mm, linewidth = .5pt}",
"\\definecolor{enonce}{rgb}{0.11,0.56,0.98}",
"\\begin{pspicture}(-10mm, -10mm)(50mm ,50mm)",
#le rectangle ABCD
"\\pstGeonode[CurveType = polygon, linewidth = 1pt](0, 0)A(%s,0)B (%s, %s)C (0, %s)D"%(a, a, d, d),
#les points permettant de placer les cloisons
"\\pstGeonode(%s, 0){E1}(%s, %s){E2}(%s, 0){F1}(%s, %s){F2}"%(xE, xE, yF, xF, xF, yF),
"\\pstGeonode(%s, %s){G1}(%s, %s){G2}(%s, %s){G3}"%(a, b, xF, b, xF, 25),
"\\pstGeonode(%s, %s){H1}(%s, %s){H2}(%s, %s){H3}(%s, %s){H4}"%(xE, b, xE, 25, xE, yK, 15, yK),
"\\pstGeonode(0, %s){K2}(7, %s){K1}"%(yK, yK),
"\\pstGeonode(%s, %s){J1}(%s, %s){J2}(%s, %s){J3}(%s, %s){J4}"%(xE, d - 7, xE, d, xF, d - 7, xF, d),
#trace les cloisons, limitées par des tirets
"\\ncline{-|}{E1}{E2}\\ncline{-|}{F1}{F2}",
"\\ncline{|-}{J1}{J2}\\ncline{|-}{J3}{J4}",
"\\ncline{|-}{K1}{K2}",
"\\ncline{G1}{G2}\\ncline{|-|}{G3}{G2}",
"\\ncline{|-|}{H1}{H2}\\ncline{-|}{H3}{H4}",
#place les cotations sr la figure, l'énoncé en bleu
ncotation_h("D", "C", cotation_couleur[0][0], cotation_couleur[0][1]),
ncotation("B", "G1", cotation_couleur[1][0], cotation_couleur[1][1]),
ncotation("F1", "B", cotation_couleur[2][0], cotation_couleur[2][1]),
ncotation_h("A", "D", cotation_couleur[3][0], cotation_couleur[3][1]),
"\\end{pspicture}"]
exo = [u"\\exercice Sur ce plan, la longueur $%s$ mesure en réalité \\unit[%s]{m} :\n"%(enonce, decimaux(reels[choix]/1000.0))] \
+ figure +\
["\\begin{enumerate}",
u"\\item Déterminer l'échelle de ce plan.",
u"\\item Déterminer les longueurs réelles $%s$, $%s$ et $%s$."%(reponses[0], reponses[1], reponses[2]),
"\\end{enumerate}"]
cor = [u"\\exercice* Sur ce plan, la longueur $%s$ mesure en réalité \\unit[%s]{m} : \n"%(enonce, decimaux(reels[choix]/1000.0))] \
+ figure +\
["\\begin{enumerate}",
u"\\item Déterminer l'échelle de ce plan.\\par",
u"Sur le plan, je mesure que $%s=\\unit[%s]{cm}$.\\par"%(enonce, decimaux(plan[choix]/10.0) ),
u"Or on sait que en réalité $%s = \\unit[%s]{m} = \\unit[%s]{cm}$"%(enonce, decimaux(reels[choix]/1000.0),decimaux(reels[choix]/10.0)),
u" et $%s \\div %s = %s$.\\par"%(decimaux(reels[choix]), decimaux(plan[choix]), decimaux(echelle)),
u"L'échelle de ce plan est donc $1/%s^e$."%echelle,
u"\\item Déterminer les longueurs réelles $%s$, $%s$ et $%s$.\n"%(reponses[0], reponses[1], reponses[2]),
u"Grâce à la question précédente, je peux compléter le tableau :\n",
"\\begin{tabular}{|l|c|c|c|c|c}",
("\\multicolumn{1}{c}{}"+"&\\multicolumn{1}{c}{$%s$}"*4+"\\\\")%("a", "b", "c", "d"),
"\\cline{1-5}",
"Sur le plan (en cm) & %s & %s & %s & %s &\\rnode{plan1}{}\\\\"%tuple(map(lambda n:decimaux(n/10.0),plan)),
"\\cline{1-5}",
u"En réalité (en cm) & %s & %s & %s & %s &\\rnode{plan2}{}\\\\"%tuple(tab_reels),
"\\cline{1-5}",
"\\end{tabular}\n",
"\\ncbar{->}{plan1}{plan2}\\Aput{$\\times %s$}"%echelle,
u"Pour conclure, on convertit ses longueurs en m :\\par",
"$$a = \\unit[%s]{m} \\quad ; \\quad b = \\unit[%s]{m} \\quad ; \\quad c = \\unit[%s]{m} \\quad ; \\quad d =\\unit[%s]{m}$$"\
%tuple(map(lambda n:decimaux(n/1000.0),reels)),
"\\end{enumerate}"]
return exo, cor
def exo_fruits():
fruit = ["Cerises", "Tomates", "Pommes", "Poires", "Raisin", "Oranges"][randrange(6)]
while 1:
a, b, c = randint(10, 50)/10.0, randint(10, 50)/10.0, randint(10, 50)/10.0
if a != b and a != c and b != c:
break
tarif = randint(20, 50)/10.0
fruits_c = (fruit, a, b, c)
fruits_e = (fruit, decimaux(a), decimaux(b), "")
prix_c = ("prix", decimaux(fruits_c[1]*tarif), decimaux(fruits_c[2]*tarif), decimaux(fruits_c[3]*tarif))
prix_e = ("prix", decimaux(fruits_c[1]*tarif), "", decimaux(fruits_c[3]*tarif))
fruits_c = (fruit, decimaux(a), decimaux(b), decimaux(c))
tableau_exo = ["\\begin{tabular}{|l|c|c|c|}",
"\hline",
u"%s (en kg) & %s & %s & %s \\\\"%fruits_e,
"\hline",
u"%s (en \\euro) & %s & %s & %s \\\\"%prix_e,
"\hline",
"\\end{tabular}"]
tableau_cor = ["\\begin{tabular}{|l|c|c|c|}",
"\hline",
u"%s (en kg) & %s & %s & \\bf %s \\\\"%fruits_c,
"\hline",
u"%s (en \\euro) & %s & \\bf %s & %s \\\\"%prix_c,
"\hline",
"\\end{tabular}"]
exo = [u"\\exercice Le prix à payer est proportionnel à la masse de fruits achetés.\\par",
u"Détermine la valeur des cases vides"]
cor = [u"\\exercice Le prix à payer est proportionnel à la masse de fruits achetés.\\par",
u"Détermine la valeur des cases vides"]
exo += ["\n"] + tableau_exo
cor += ["\n"] + tableau_cor
cor.append("$$\\frac{%s \\times %s}{%s} = %s \\quad;\\qquad"%(prix_e[1], fruits_e[2], fruits_e[1],prix_c[2]))
cor.append("\\frac{%s \\times %s}{%s} = %s $$"%(fruits_c[1], prix_c[3], prix_e[1],fruits_c[3]))
return (exo, cor)
......@@ -32,17 +32,17 @@ import random
def choix_trou(nb1, nb2, tot, operateur, exo, cor):
nbaleatoire = random.randrange(4)
if nbaleatoire > 1:
exo.append("\\item $%s %s %s = \\ldots\\ldots$" % (nb1,
exo.append("\\item $%s %s %s = \\ldots\\ldots\\ldots$" % (nb1,
operateur, nb2))
cor.append("\\item $%s %s %s = \\mathbf{%s}$" % (nb1,
operateur, nb2, tot))
elif nbaleatoire > 0:
exo.append("\\item $%s %s \\ldots\\ldots = %s$" % (nb1,
exo.append("\\item $%s %s \\ldots\\ldots\\ldots = %s$" % (nb1,
operateur, tot))
cor.append("\\item $%s %s \\mathbf{%s} = %s$" % (nb1,
operateur, nb2, tot))
else:
exo.append("\\item $\\ldots\\ldots %s %s = %s$" % (operateur,
exo.append("\\item $\\ldots\\ldots\\ldots %s %s = %s$" % (operateur,
nb2, tot))
cor.append("\\item $\\mathbf{%s} %s %s = %s$" % (nb1,
operateur, nb2, tot))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment