Echanges autour d'EduPython.
Vous n'êtes pas identifié(e).
Bonjour,
J'ai créé deux programmes : PROG1 qui calcule une équation de droite définie par deux points et qui affiche le graphique ; PROG2 qui calcule une équation de droite définie par un point et un vecteur directeur et qui DOIT afficher le graphique.
Problème : PROG2 n'affiche pas le graphique, alors que PROG1 oui !
Je ne vois pas où est le problème.
Je vous remercie pour votre aide.
Oli
Voici le code :
PROG1 :
# importation des modules from matplotlib import * import matplotlib.pyplot as plt # Entrée des coordonnées des points print("Entrer les coordonnées du 1er point :") x1=float(input("abscisse du premier point x1 :")) y1=float(input("ordonnée du premier point y1 :")) print("Premier point : A(",x1," ; ",y1,")") print("") print("Entrer les coordonnées du 2ème point :") x2=float(input("abscisse du deuxième point x2 :")) y2=float(input("ordonnée du deuxième point y2 :")) print("Deuxième point : B(",x2," ; ",y2,")") print("") # Détermination des équations réduites et cartésiennes (si elles existent) de la droite if x1==x2: if y1==y2: print("droite inexistante car points égaux") else: print("La droite passant par les points A(",x1," ; ",y1,") et B(",x2," ; ",y2,") est une") print("Droite verticale d'équation :") print("x =",x1) # dessin de la droite verticale plt.scatter(x1,0,c='blue',s=200,marker='o',edgecolors = 'none') plt.suptitle('Droite verticale (AB)', fontsize = 18) plt.xlim(-10,10) plt.ylim(-10,10) plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.yticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.plot([-10, 10], [0, 0], 'k-', lw=3) # trait plein noir épaisseur 3 axe des abscisse plt.plot([0, 0], [-10, 10], 'k-', lw=3) # trait plein noir épaisseur 3 axe des ordonnées plt.grid() plt.xlabel('axe des x') plt.ylabel('axe des y') plt.subplot().set_aspect('equal') plt.plot([x1,x1], [-10, 10], 'r-', lw=2) # trait plein rouge épaisseur 2 plt.show() else: m=(y2-y1)/(x2-x1) p=y1-m*x1 print("") print("La droite passant par les points A(",x1," ; ",y1,") et B(",x2," ; ",y2,") a pour") print("équation réduite :") if p>=0: print("y = ", m,"x + ",p) else: print("y = ", m,"x - ",abs(p)) def dessin(): # calcul de ymin ymax pour tracer la droite ymin=m*(-10)+p ymax=m*10+p # dessin des deux points plt.scatter(x1,y1,c='blue',s=200,marker='o',edgecolors = 'none') plt.scatter(x2,y2,c='blue',s=200,marker='o',edgecolors = 'none') # définition des axes plt.xlim(-10,10) plt.ylim(-10,10) # tracé des axes du repère plt.plot([-10, 10], [0, 0], 'k-', lw=3) # trait plein noir épaisseur 3 axe des abscisse plt.plot([0, 0], [-10, 10], 'k-', lw=3) # trait plein noir épaisseur 3 axe des ordonnées # tracé du quadrillage plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.yticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.grid() # aspect égal du quadrillage plt.subplot().set_aspect('equal') # étiquettes des axes et titre du graphique plt.xlabel('axe des x') plt.ylabel('axe des y') plt.suptitle('Droite (AB)', fontsize = 18) # tracé de la droite plt.plot([-10, 10], [ymin, ymax], 'r-', lw=2) # trait plein rouge épaisseur 2 plt.show() a=y2-y1 b=x1-x2 c=x2*y1-y2*x1 if b<0 and c<0: print("") print("et pour") print("équation cartésienne :") print(a,"x -",abs(b),"y -",abs(c)," = 0") dessin() elif b<0 and c>=0: print("") print("et pour") print("équation cartésienne :") print(a,"x -",abs(b),"y +",c," = 0") dessin() elif b>=0 and c<0: print("") print("et pour") print("équation cartésienne :") print(a,"x +",b,"y -",abs(c)," = 0") dessin() else: print("") print("et pour") print("équation cartésienne :") print(a,"x +",b,"y +",c," = 0") dessin()
PROG2 :
# importation des modules from matplotlib import * import matplotlib.pyplot as plt import numpy as np # définition de la fonction dessin def dessin(): # calcul de ymin ymax pour tracer la droite ymin=m*(-10)+p ymax=m*10+p # dessin des deux points plt.scatter(x1,y1,c='blue',s=50,marker='o',edgecolors = 'none') # ancienne écriture : plt.scatter(x1+x2,y1+y2,c='blue',s=200,marker='o',edgecolors = 'none') # définition des axes plt.xlim(-10,10) plt.ylim(-10,10) # tracé des axes du repère plt.plot([-10, 10], [0, 0], 'k-', lw=3) # trait plein noir épaisseur 3 axe des abscisse plt.plot([0, 0], [-10, 10], 'k-', lw=3) # trait plein noir épaisseur 3 axe des ordonnées # tracé du quadrillage plt.xticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.yticks([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]) plt.grid() # étiquettes des axes et titre du graphique plt.xlabel('axe des x') plt.ylabel('axe des y') plt.suptitle('Droite (AB)', fontsize = 18) # tracé de la droite if x2>=0: plt.plot([-10, x1], [ymin, y1], 'r-', lw=2) # trait plein rouge épaisseur 2 plt.plot([x2, 10], [y2, ymax], 'r-', lw=2) # trait plein rouge épaisseur 2 else: plt.plot([-10, x2], [ymin, y2], 'r-', lw=2) # trait plein rouge épaisseur 2 plt.plot([x1, 10], [y1, ymax], 'r-', lw=2) # trait plein rouge épaisseur 2 #tracé vecteur : ax = plt.subplot() q = ax.quiver(x1, y1, x2, y2,units='xy',scale=1,color='blue') ax.set_aspect('equal') plt.show() # Entrée des coordonnées des points print("Entrer les coordonnées du point :") x1=float(input("abscisse du point x :")) y1=float(input("ordonnée du point y :")) print("Point : A(",x1," ; ",y1,")") print("") print("Entrer les coordonnées du vecteur directeur u :") x2=float(input("abscisse du vecteur u :")) y2=float(input("ordonnée du vecteur u :")) print("Vecteur directeur : u(",x2," ; ",y2,")") print("") if x2==0 and y2==0: print("droite inexistante car vecteur nul") else: if x2==0: print("droite verticale d'équation : x=",x1) else: m=y2/x2 p=y1-m*x1 print("La droite passant par le point A(",x1," ; ",y1,") et de vecteur directeur u(",x2," ; ",y2,") a pour") print("équation réduite :") if p>=0: print("y = ", m,"x + ",p) else: print("y = ", m,"x - ",abs(p)) a=y2 b=-x2 c=x2*y1-y2*x1 if b<0 and c<0: print("") print("et pour") print("équation cartésienne :") print(a,"x -",abs(b),"y -",abs(c)," = 0") dessin() elif b<0 and c>=0: print("") print("et pour") print("équation cartésienne :") print(a,"x -",abs(b),"y +",c," = 0") elif b>=0 and c<0: print("") print("et pour") print("équation cartésienne :") print(a,"x +",b,"y -",abs(c)," = 0") dessin() else: print("") print("et pour") print("équation cartésienne :") print(a,"x +",b,"y +",c," = 0") dessin()
Hors ligne
Bonjour,
Il manque un dessin() dans le 2ème if (d'ailleurs, on aurait pu ne mettre qu'une fois dessin() à l'extérieur des tests.
Bonne journée,
Vincent
Hors ligne
Merci beaucoup ça fonctionne le graphique s'affiche.
Ce qui m'a permis de voir qu'il y avait des petits bugs que je suis en train de corriger.
Bien cordialement
Oli
Hors ligne
Par contre j'ai un message d'erreur :
Qu'est-ce que ça signifie ???
C:\EduPython\App\lib\site-packages\matplotlib\cbook\deprecation.py:107: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
warnings.warn(message, mplDeprecation, stacklevel=1)
Hors ligne
ça veut dire qu'il est pas content, mais qu'il va quand même le faire
C'est une "alerte" et non un message d'erreur, il faudrait voir le code
VM
Hors ligne
d'accord . Merci beaucoup. Pour l'instant je vais laisser cette alerte tranquille du moment que ça fonctionne. Parce que je ne pense pas savoir où trouver dans le code ce qui donne cette alerte.
Hors ligne
Bonjour à tous,
Je débute ! ! (jusqu'ici j'utilisais Maple , mais je veux voir ce que donne Python avec sa programmation-objet - j'ai fait du TurboPascal sous Dos pdt des années))
Je crée des morceaux de programmes avec tracé de courbes. Les courbes ne s'affichent nulle part
Même avec les programmes recopiés dans les pdf tutoriels
Qu'ai-je omis de charger ? Où se trouve la "fençetre graphique" (je ne connais que la zone-console)
Merci
Hors ligne
Bonsoir,
où tapez vous le code ? Dans la zone de console ou la zone de script ?
V. Maille
Hors ligne
bonsoir,
je tape le code dans la zone de script
J'ai fait plusieurs essais, le dernier étant une copie toute simple de lignes de code prises dans edupython.pdf :
def dessin00(vmax) :
for i in range( 10000 ):
x=uniform(-vmax,+vmax)
y=uniform(-vmax,+vmax)
if x*(6-x)<y*(8+y):
repere .plot(x,y,'ro')
else :
repere .plot(x,y,'go')
repere .show()
les fonctions basiques sont prises dans lycee.py bien sûr qui est également chargé
NOTER : depuis ma question, j'ai vu que j'avais une alerte que je comprends pas et que je ne peux donc résoudre
"This application failed to start because it could not find or load the Qt platform plugin "windows" in "". Reinstalling the application may fix this problem."
Ouh là !
Merci
Hors ligne
Bonsoir, je pense que vous avez la version 2.9 d'Edupython, et non la dernière.
VM
Hors ligne
Bonjour,
Je vous remercie pour vos réponses très rapides.
J'ai vérifié l'état des versions :
EduPython 3.0
PyScripter : version 3.6.3.0 pour x64 bien sûr ( et W10)
Python 3.7.6
J'ai pris un autre ordi, et ça plante de la même façon avec le même message : pb de Qt
Sur le forum Windows concernant Qt, c'est la panique : c'est trop compliqué pour moi
Bonne journée.
F
Hors ligne
J'AI TROUVE !!!!!!!!
J'ai fouille dans les repertoires EduPython et j'ai vu un fichier qt.conf
En le lisant, je constate qu'il porte des chemins qui ne correspondent pas à mon installation
En effet j'avais installe EduPython dans Programmes x86
Donc :
J'ai desinstalle tout
J'ai reinstallé dans le répertoire propose par défaut (C/EduPython) juste sous la racine
Et zou ...... Ça marche , la fenetre graphique apparaît correctement (au moins dans mes deux premiers essais)
A MÉMORISER !!!!
IL FAUT SIGNALER CELA DANS LE "MANUEL" d'INSTALLATION
OU FAIRE que le fichier qt.conf s'aligne avec le choix du chemin d'install choisi par celui qui installe sur son PC
Personnellement je n'aime pas installer sous la racine
Nota : du coup, cela a aussi résolu une alerte dont je ne faisais pas cas, à savoir, lors du lancement le logiciel ne pouvait pas écrire dans son fichier log . Maintenant c'est ok
C'est Grâce à vos questions que je me suis mis à fouiller
Merci
Bonne soirée
F.
Hors ligne
Bonjour,
Merci de l'info. Je faisais cette mise à jour dans la précédente version d'EduPython, mais a priori, je pensais que cela fonctionnait sans Qt avec Python 3.7 lors de mes tests, je vais réactiver la mise à jour automatique de ce fichier au lancement d'EduPython danss la prochaine version.
Merci du signalement.
Vincent
Hors ligne
Bonjour,
Merci pour votre travail et vos actions, de ma part et sûrement aussi de la part de la Communaiuté EduPython.
Si vous faites les corrections d'ici qq semaines, prévenez moi, je veux bien être un autre "beta-testeur"
N'oubliez pas de traiter aussi le pb des chemins du fichier log
Cordialement
F.
Hors ligne
Bonsoir,
Je viens de regarder plus en détail, mais en fait le fichier qt.conf est déjà mis à jour automatiquement au lancement. Où aviez-vous installé EduPython quand ça ne marchait pas ? Je pense qu'il y avait un problème de droit d'écriture sur le fichier.
Bonne soirée,
Vincent M
Hors ligne
Bonsoir,
Quelle réactivité !!! Merci
j'avais installé , selon mes deux PC, soit dans C: Programmes, soit dans C: Programmes (x86)
Hors ligne
Bonjour, je commence la programation, d'ailleur je vous parle depuis un rasberry py
Et j'a un problème car quand je lance un programe de dessin (pour dessiner de bulle)
les bulle ne s'affiche pas voici le code
from random import randint id_bulle = list() r_bulle = list() vitesse_bulle = list() R_BULLE_MIN = 10 R_BULLE_MAX = 30 VITESSE_BULLE_MAX = 10 ECART = 100 def créer_bulle(): x = LARGEUR + ECART y = randint(0, HAUTEUR) r = randint(R_BULLE_MIN, R_BULLE_MAX) id1 = c.create_oval (x - r, y - r, x + r, y + r, outline='white') id_bulle.append(id1) r_bulle.append(r) vitesse_bulle.append(randint(1, VITESSE_BULLE_MAX))
voila merci de me repondre au plus vite et merci d'avance
Hors ligne
Bonsoir
il n'y a que ça dans le code ?
je l'ai regardé (et lancé !) dans Edupython
A minima, il faut une dernière ligne qui éxécute la routine créer_bulle (elle est créée mais pas exécutée dans le code)
mettre en fin de code qq chose comme
créer_bulle()
s'il n'y a pas d'arguments d'appel
et demander l'ouverture de la fenêtre graphique par : repere.show (si exécution avec module lycee d'edupython)
ensuite, les variables LARGEUR et HAUTEUR ne sont pas initialisées
ni la variable c
enfin, il faut en en-tête charger d'autres modules, notamment
lycee (?)
pylab
et surtout, pour créer un graphique)
matplotlib.pyplot
pour le reste, je laisse à d'autres le soin d'examiner le code car je ne connais pas les commandes
create_oval
bonne soirée
FT
Hors ligne
Bonsoir, je pense que vous avez la version 2.9 d'Edupython, et non la dernière.
myindigocard
jjsploit download
Dernière modification par fafraname (2023-12-08 15:24:21)
Hors ligne