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

Merge branch 'develop' pour la version 13.03

parents d8f9d5a3 e71231fd
Version 13.03
* Correction d'un bug d'affichage des pdf
* Ajout de cinq exercices de statistiques niveau cinquième
* Conversion degrés/radians et mesures principales d'un angle sur le cercle trigonométrique niveau Lycée
Version 11.05
* Sommes de vecteurs niveau lycée
* Deux exercices sur le calcul littéral niveau quatrième
......
data/images/pyromaths.ico

66.1 KB | W: | H:

data/images/pyromaths.ico

82.6 KB | W: | H:

data/images/pyromaths.ico
data/images/pyromaths.ico
data/images/pyromaths.ico
data/images/pyromaths.ico
  • 2-up
  • Swipe
  • Onion skin
[Desktop Entry]
Icon=/usr/share/pyromaths/images/pyromaths.png
Icon=/usr/share/pixmaps/pyromaths.png
Version=1.0
Name=Pyromaths
Comment=Générateur d'exercices de maths
Comment=Generator for math worksheets for french college
Comment[fr]=Générateur d'exercices de maths
Exec=/usr/bin/pyromaths
Terminal=false
Type=Application
......
......@@ -32,7 +32,7 @@
\setlength\mathindent{0em}
\setlength{\columnsep}{30pt}
\usepackage[bookmarks=true, bookmarksnumbered=true, ps2pdf, pagebackref=true,%
colorlinks=true,linkcolor=blue,plainpages=true]{hyperref}
colorlinks=true,linkcolor=blue,plainpages=true,unicode]{hyperref}
\hypersetup{pdfauthor={Jérôme Ortais},pdfsubject={Exercices de
mathématiques},pdftitle={Exercices créés par Pyromaths, un logiciel libre
en Python sous licence GPL}}
......
......@@ -53,7 +53,7 @@ for n in range(len(LESFICHES)):
parametres['liste_exos'] = lst
creation(parametres)
call(["convert", "-density", "288", "/tmp/test.pdf", "-resize", "25%",
"-crop", "710x560+0+85", "-trim", "/tmp/%se-%02d.png" % (6-n, i)],
"-crop", "710x560+0+85", "-flatten", "-trim", "/tmp/%se-%02d.png" % (6-n, i)],
stdout=log)
call(["pngnq", "-f", "-s1", "-n32", "/tmp/%se-%02d.png" % (6-n, i)],
stdout=log)
......
......@@ -2,6 +2,14 @@
VERSION=`date +%y.%m`
PYROPATH=$(cd `dirname $0` && cd .. && pwd)
ARCHIVEPATH=$( cd ${PYROPATH} && cd .. && pwd)
if [ ! -f /usr/bin/debuild ];
then
sudo apt-get install devscripts
fi
if [ ! -f /usr/bin/rpm ];
then
sudo apt-get install rpm
fi
echo "#-------------------------------------
#---- CHANGE LE NUMERO DE VERSION ----
......@@ -39,6 +47,7 @@ cp -r ${PYROPATH}/src ${PYROPATH}/data .
cp ${PYROPATH}/* .
cp -r ${PYROPATH}/scripts/linux/* .
python setup.py sdist --formats=bztar
rm MANIFEST
cp dist/pyromaths-${VERSION}.tar.bz2 ${ARCHIVEPATH}/pyromaths-${VERSION}-sources.tar.bz2
mv dist/pyromaths-${VERSION}.tar.bz2 /tmp/pyromaths_${VERSION}.orig.tar.bz2
......@@ -46,7 +55,8 @@ echo "#--------------------------------------------
#--------- CRÉATION DU PAQUET DEB -----------
#--------------------------------------------"
debuild clean
debuild
debuild -kB39EE5B6
sleep 30
cp /tmp/pyromaths_${VERSION}-?_all.deb ${ARCHIVEPATH}
echo "#--------------------------------------------
......
pyromaths (13.03-1) quantal; urgency=low
* Correction d'un bug d'affichage des pdf
* Ajout de cinq exercices de statistiques niveau cinquième
* Conversion degrés/radians et mesures principales d'un angle sur le cercle trigonométrique niveau Lycée
-- Jérôme Ortais <jerome.ortais@pyromaths.org> Mon, 11 Mar 2013 21:10:00 +0100
pyromaths (11.05.1b1-1) unstable; urgency=low
* Gestion des version 2.5 à 2.7 de Python
......
......@@ -4,12 +4,12 @@ Priority: optional
Maintainer: Jérôme Ortais <jerome.ortais@pyromaths.org>
Build-Depends: debhelper (>= 7)
Build-Depends-Indep: python-support (>= 0.5.3)
Standards-Version: 3.9.1
Standards-Version: 3.9.4
Homepage: http://www.pyromaths.org/
Package: pyromaths
Architecture: all
Depends: ${misc:Depends}, python, python-qt4, python-lxml, texlive-pstricks, texlive-latex-base, texlive-latex-extra, texlive-fonts-recommended, texlive-latex-recommended
Depends: ${python:Depends}, ${misc:Depends}, python, python-qt4, python-lxml, texlive-pstricks, texlive-latex-base, texlive-latex-extra, texlive-fonts-recommended, texlive-latex-recommended
Description: Exerciseur de mathématiques créant des fiches LaTeX
Pyromaths est un programme qui a pour but de créer des exercices
type de mathématiques niveau collège et lycée ainsi que leur corrigé. C'est
......
This work was packaged for Debian by:
Jérôme Ortais <jerome.ortais@pyromaths.org> on Tue, 02 Nov 2010 22:07:58 +0100
It was downloaded from:
<url://www.pyromaths.org>
Upstream Author(s):
Jérôme Ortais <jerome.ortais@pyromaths.org>
Arnaud Kientz <arnaud@pyromaths.org>
Yves Gesnel
Guillaume Barthélémy
Nicolas Bissonnier
Copyright:
<Copyright (C) 2006 Jérôme Ortais>
License:
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This package 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 package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
The Debian packaging is:
Copyright (C) 2010 Jérôme Ortais <jerome.ortais@pyromaths.org>
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.
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: pyromaths
Source: http://www.pyromaths.org
Files: *
Copyright: 2006-2013, Jérôme Ortais <jerome.ortais@pyromaths.org>
2009-2013, Arnaud Kientz <arnaud@pyromaths.org>
2010-2013, Yves Gesnels
2010, Guillaume Barthélémy
2010, Nicolas Bissonier
License: GPL-3.0+
Files: debian/*
Copyright: 2013 Jérôme Ortais <jerome.ortais@pyromaths.org>
License: GPL-3.0+
License: GPL-3.0+
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 3 of the License, or
(at your option) any later version.
.
This package 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, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid to pick license terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.
......@@ -18,6 +18,10 @@ clean:
rm -rf debian/pyromaths
find . -name '*.py[co]' | xargs rm -f
build-arch: build
build-indep: build
install: build
dh_testdir
dh_testroot
......
python setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
# 'brp-compress' gzips the man pages without distutils knowing... fix this
sed -i -e 's@man/man\([[:digit:]]\)/\(.\+\.[[:digit:]]\)$@man/man\1/\2.gz@g' INSTALLED_FILES
REM Creer l'installateur de Pyromaths pour Windows
C:
cd "C:\Documents and Settings\jerome\Bureau"
cd "C:\Users\Jerome\Desktop"
md pyromaths
cd pyromaths
xcopy z:\pyromaths\data data /i /s
......@@ -8,7 +8,7 @@ xcopy z:\pyromaths\src src /i /s
copy z:\pyromaths\scripts\win32\setup.py .
copy z:\pyromaths\* .
move pyromaths Pyromaths.py
c:\Python26\python.exe setup.py innosetup
c:\Python27\python.exe setup.py innosetup
copy dist\Pyromaths-*-win32.exe z:\
cd ..
rmdir /s /q pyromaths
rmdir /s /q pyromaths
\ No newline at end of file
......@@ -26,7 +26,7 @@ def data_dir():
return '/usr/share/pyromaths/'
def icon_dir():
"""Renvoie le dossier où se trouve l'icône, sequ'on utilise pyromaths à
"""Renvoie le dossier où se trouve l'icône, selon qu'on utilise pyromaths à
partir des sources, de l'exécutable win32 ou du paquet deb"""
if we_are_frozen() or exists(join(abspath(dirname(__file__)),'../data/')):
return join(DATADIR, 'images', 'pyromaths.png')
......@@ -54,7 +54,7 @@ else:
def configdir():
return join(home(), ".config", "pyromaths")
VERSION = '12.01'
VERSION = '13.03'
COPYRIGHT_YEAR = strftime('%Y')
COPYRIGHTS = u'© 2006 – %s Jérôme Ortais<br/>\n' \
u'<span style=" font-size:small;">Pyromaths est distribué sous ' \
......@@ -101,7 +101,7 @@ u'Construction de triangles',
u'Construction de parallélogrammes',
u'Échelles',
u'Aire de disques',
u'Représentation de données',
u'Statistiques',
]],
[u'Quatrième', '', [
u'Calcul mental',
......@@ -147,6 +147,7 @@ u'Étude de signe',
u"Sens de variations",
u"Étude de fonctions",
u"Vecteurs",
u"Cercle trigonométrique",
], [
u'Niveau 1èreS',
u'Niveau 1èreS',
......@@ -155,6 +156,7 @@ u'Niveau 1èreS',
u"Niveau 1èreS, Term STG",
u"Niveau Term S",
u"Niveau Seconde",
u"Niveau Seconde",
]],
]
......@@ -21,7 +21,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
from . import priorites, symetrie, fractions, reperage, relatifs, construction, proportionnalite, aires, diagrammes
from . import priorites, symetrie, fractions, reperage, relatifs, construction, proportionnalite, aires, statistiques
def write(f0, f1, exos):
f0.write("\n")
......@@ -34,6 +34,6 @@ def main(exo,f0, f1):
fractions.sommes_fractions, fractions.produits_fractions,
reperage.main, relatifs.main, construction.exo_triangle,
construction.exo_quadrilatere,
proportionnalite.exo_echelles, aires.exo_aire_diques, diagrammes.exo_diagrammes)
proportionnalite.exo_echelles, aires.exo_aire_diques, statistiques.statistiques)
write(f0, f1, modules[exo]())
#!/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, 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=Bisque]{1}{0}{%s}
\\pswedge[fillcolor=LightSalmon]{1}{%s}{%s}
\\pswedge[fillcolor=Chocolate]{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)
This diff is collapsed.
......@@ -420,7 +420,7 @@ class Ui_MainWindow(object):
<span style=" font-weight:600;">David Robert</span> pour l'idée de départ&nbsp;;
</li>
<li>
<span style=" font-weight:600;">Yves Gesnel</span> pour le portage de Pyromaths sur Mac OS X&nbsp;;
<span style=" font-weight:600;">Yves Gesnel</span> pour le portage de Pyromaths sur Mac OS X et la conception d'exercices&nbsp;;
</li>
<li>
<span style=" font-weight:600;">Arnaud Kientz</span> pour ses graphismes, son implication dans le code de Pyromaths et son amitié&nbsp;;
......
#!/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 math import cos, sin, radians, pi
from ..outils.decimaux import decimaux
from ..outils.Arithmetique import pgcd
div180 = [[1,180],[2,90],[3,60],[4,45],[5,36],[6,30],[9,20],[10,18],[12,15]]
# Radians représentés en fait par des fractions
def deg2rad(n):
"""Effectue la conversion de degrés entre 0 et 360° vers radians."""
p = pgcd(n,180)
return [n/p,180/p]
def simprad(liste):
"""Simplifie la fraction d'un angle en radians."""
p = pgcd(liste[0],liste[1])
return [f/p for f in liste]
def rad2deg(liste):
"""Effectue la conversion de radians entre 0 et 2pi vers degrés."""
return liste[0]*180/liste[1] # Attention résultat entier, donc faux si liste[1] ne divise pas 180
def rad2tex(liste):
"""Prépare l'écriture de radians en latex."""
if liste[0]==0:
frac = "$0$"
elif liste[0]==liste[1]:
frac = "$\\pi$"
elif liste[0]==-liste[1]:
frac = "$-\\pi$"
elif liste[0]==1:
frac = "$\\dfrac{\\pi}{"+str(liste[1])+"}$"
elif liste[0]==-1:
frac = "$\\dfrac{-\\pi}{"+str(liste[1])+"}$"
elif liste[1]==-1: # Probablement inutile
frac = "$"+str(-liste[0])+"\\pi$"
elif liste[1]==1:
frac = "$"+str(liste[0])+"\\pi$"
else:
frac = "$\\dfrac{"+str(liste[0])+"\\pi}{"+str(liste[1])+"}$"
return frac
def mes_princ(liste):
"""Calcule la mesure principale d'un angle en radians ( entre -pi et pi )."""
num = liste[0] % (2*liste[1])
if num > liste[1]:
num -= 2*liste[1]
return simprad([num,liste[1]])
def mes_02pi(liste):
"""Calcule la mesure d'un angle en radians dans l'intervalle [0,2pi]."""
num = liste[0] % (2*liste[1])
return [num,liste[1]]
def cercle_trigo(code=0,*args):
"""Dessine le cercle trigonométrique avec un nombre indéfini d'angles en degrés ou radians, en codant ou non les angles."""
figure = """\\psset{xunit=3cm,yunit=3cm,dotstyle=+}
\\begin{pspicture}(-1.4,-1.4)(1.4,1.4)
\\psframe(-1.4,-1.4)(1.4,1.4)
\\psaxes[linewidth=0.5pt,Dx=2,Dy=2]{->}(0,0)(-1.1,-1.1)(1.1,1.1)
\\pscircle[linecolor=gray](0,0){3}
\\definecolor{grisclair}{gray}{0.20}
\\colorlet{bleuclair}{blue!40!white}\n"""
idx = 0
if not code:
for a in range(11):
if (a+1)/6.0 not in [0.5,1,1.5]:
figure += "\\psline[linecolor=LightSkyBlue,linestyle=dashed](0,0)("+str(round(cos((a+1)*pi/6),2))+","+str(round(sin((a+1)*pi/6),2))+")\n"
for a in range(9):
if (a+1)/5.0 not in [0.5,1,1.5]:
figure += "\\psline[linecolor=LightSlateGray,linestyle=dashed](0,0)("+str(round(cos((a+1)*pi/5),2))+","+str(round(sin((a+1)*pi/5),2))+")\n"
for a in range(4):
figure += "\\psline[linecolor=LightGreen,linestyle=dashed](0,0)("+str(round(cos((2*a+1)*pi/4),2))+","+str(round(sin((2*a+1)*pi/4),2))+")\n"
for f in args:
if isinstance(f,list): # mesure en radians
rad = simprad(f)
else: # mesure en degrés
rad = simprad(deg2rad(f))
f = rad[0]*pi/rad[1] # Le dénominateur ne devrait pas être nul...
frac = rad2tex(rad)
figure += "\\psline[linecolor=red,linestyle=dashed](0,0)("+str(round(cos(f),2))+","+str(round(sin(f),2))+")\n"
if code:
figure += "\\rput("+str(round(1.25*cos(f),2))+","+str(round(1.25*sin(f),2))+"){"+frac+"}\n"
else:
figure += "\\rput("+str(round(1.25*cos(f),2))+","+str(round(1.25*sin(f),2))+"){$M_"+str(idx)+"$}\n"
idx += 1
figure += """\\uput[dl](0,0){$O$}
\uput[dr](1,0){$I$}
\uput[ul](0,1){$J$}"""
figure += "\n\\end{pspicture}"
return figure
def findrad(itv=1, neg=0, denom_simple=1):
"""Génère un angle en radians sous certaines conditions :
itv ( intervalle ): 0 ( quelconque ), 1 ( mesure principale ), 2 ( entre 0 et 2 pi )
neg : 0 ( positif ), 1 ( négatif )
denom_simple : 0 ( quelconque ), 1 ( simple, càd 1, 2, 3, 4, 5, ou 6 ), 2 ( diviseur de 180 )"""
global div180
if denom_simple==1:
denom = random.randint(2,6)
elif denom_simple == 0:
denom = random.randint(2,30)
else:
random.shuffle(div180)
random.shuffle(div180[0])
denom = div180[0][0]
if itv == 1:
sgn = (-1)**(random.randint(1,2))
num = sgn * random.randint(1,denom) # pas grave si -pi sort
elif itv == 2:
num = random.randint(1,2*denom)
else:
numliste = [random.randint(2*denom, 120),random.randint(-2*denom, -denom)]
random.shuffle(numliste)
num = numliste[0]
if (neg and (num > 0)) or ((not neg) and (num < 0)):
num = -num
return [num,denom] # FIX Simplifier ?
def cercle_trigonometrique():
"""Exercice de la fiche."""
exo = ["\\exercice"]
cor = ["\\exercice*"]
mes_deg = [] # Question 1
while len(mes_deg)<5:
tmp = random.randint(0,360) # FIX trop complexes parfois
if tmp not in mes_deg:
mes_deg.append(tmp)
mes_deg_tex = [u"$%s\\degres$" %(d) for d in mes_deg]
radq2 = [] # Question 2
while len(radq2)<5:
tmp = findrad(2,0,2) # Dénominateur est un diviseur de 180
if tmp not in radq2:
radq2.append(tmp)
radq3 = [] # Question 3
while len(radq3)<5:
while len(radq3)<4:
tmp = findrad(0,0,0)
if tmp not in radq3:
radq3.append(tmp)
tmp = findrad(0,1,0) # dernier négatif
if tmp not in radq3:
radq3.append(tmp)
radq4 = [] # Question 4
while len(radq4)<4:
tmp = mes_princ(findrad(0,0,1))
if tmp not in radq4:
radq4.append(tmp)
radq5 = [] # Question 5
radq5_princ = []
while len(radq5)<4:
while len(radq5)<2:
tmp = findrad(1,0,1)
tmp_princ = mes_princ(tmp)
if tmp_princ not in radq5_princ:
radq5.append(tmp)
radq5_princ.append(tmp_princ)
while len(radq5)<3:
tmp = findrad(1,1,1) # avant-dernier négatif
tmp_princ = mes_princ(tmp)
if tmp_princ not in radq5_princ:
radq5.append(tmp)
radq5_princ.append(tmp_princ)