Veradoclub France

LE SALON DE DISCUSSION => ICI ON PARLE DE TOUT ET DE RIEN ! => Discussion démarrée par: Doudou39330 le 22 Mars 2020 00:55:47



Titre: Edupython
Posté par: Doudou39330 le 22 Mars 2020 00:55:47
Salut tout le monde .

J’essaye d’aider la grande a faire un TD a la maison ( confinement oblige) qui consiste à découvrir edupython.

Jusqu’à présent je n’avais jamais entendu parler de ce truc la. Moi c’est plus les moteurs et la mécanique.. ;D ;D

Donc voici la colle!

(http://img.pccreation.net/photos/202003212349015034.JPG)

(http://img.pccreation.net/photos/202003212343375266.JPG)

J’ai bien compris jusqu’au 62 et bien arrivé a faire donc un carré jaune en 800 par 800.

A placer des pixels a des points définis. De modifier les couleurs ( RVB) ... avec la commande

 im.putpixel

Maintenant je cale au 62 je n’arrive pas a tracer une ligne.

Quelqu’un peut éclairer ma lanterne ? 

Car je suis loin d’arriver a dessiner les drapeaux..



Titre: Re : Edupython
Posté par: ziak31 le 22 Mars 2020 08:45:08
Non Bertrand, j'ignorais ce mot jusqu'à hier soir, mais compte tenu de la période que nous traversons, je me doutais que c'était pour un devoir... :)


Titre: Re : Edupython
Posté par: Jlapeva le 22 Mars 2020 09:12:25
Connais pas. Désolé Bertrand.


Titre: Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 09:41:10
Ça va devenir compliqué si j’ai personne pour m’aider  :-X

Le pire j’ai fait un mail au prof et il nous a même pas répondu...

Bon comme  j’ai le temps vu la situation j’ai téléchargé un PDF de  + 200 pages...


Titre: Re : Edupython
Posté par: Flyer550 le 22 Mars 2020 09:45:31
Je prends le point ... patience le temps de trouver l'interpreteur sur le web


Titre: Re : Edupython
Posté par: bataclo le 22 Mars 2020 09:51:43
Sans lancer la moindre polémique, ça émane du corps enseignant ?

Parce que perso dès le départ on voit que c'est maîtrisé et ça donne envie de poursuivre vu l'emploi de l'infinitif du genre olé olé

"sauvegarder le .... "

"puis exécuter le ..."

j'ai mal aux œils , œuilles , sieus , yeux ...


Ouiiiii, je savez que jaler y arrivez  aa


Titre: Re : Edupython
Posté par: Flyer550 le 22 Mars 2020 10:27:26
Je ne sais pas en quelle classe est ta fille , une méthode simple est d'utiliser le module Tortue ....

from lycee import *
import turtle as tortue
tortue . forward(100)
tortue . mainloop()

La tu auras une ligne de 100 pixels !

sans la tortue cela donne cela avec en plus le point d'origine :

from lycee import *
a=demande("quel est le point d'origine ?")
x=np.arange(-10,10,0.1)
repere.plot(x,a)
repere.show

Christophe


Titre: Re : Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 10:35:22
Je ne sais pas en quelle classe est ta fille , une méthode simple est d'utiliser le module Tortue ....

from lycee import *
import turtle as tortue
tortue . forward(100)
tortue . mainloop()

La tu auras une ligne de 100 pixels !

Christophe

Elle est en seconde

Ca ok pas de soucis mais je n’ai pas assimilé pour lui donner la hauteur départ car mon trait se trouve au dessus de l’image. C’est pas évident on a pas de court....



Titre: Re : Re : Re : Edupython
Posté par: xabmay le 22 Mars 2020 10:37:44
Elle est en seconde

Ca ok pas de soucis mais je n’ai pas assimilé pour lui donner la hauteur départ car mon trait se trouve au dessus de l’image. C’est pas évident on a pas de court....



Salut Bertrand,
Ma grande aussi est en seconde et j’ai eu la même galère que toi sur un autre exercice et la aussi sans cours.
J’ai trouvé la solution avec une recherche Google sur des forums maths. Il y avait le même exercice.


Titre: Re : Edupython
Posté par: Flyer550 le 22 Mars 2020 10:42:53
pour les exos suivants il te faut agir sur le coeff directeur de la droite
Sur l'exo 63 : coeff directeur = -1
Sur l'exo 64 : coeff directeur = +1

Tu changes la ligne suivante :

repere .plot(x, 1*x+a) : le 1 est optionnel bien sur c'est pour te montrer
et
repere .plot(x, -1*x+a) : idem

Christophe


Titre: Re : Edupython
Posté par: bataclo le 22 Mars 2020 10:51:13
Perso j'ai réagi "à chaud" devant un truc secondaire qui m'a alerté, et du coup j'ai été hors sujet, aussi merci pour votre aide collégiale les amis  :P

Je prends conscience que mon propos peut-être mal perçu, loin de moi l'intention de faire obstruction à ces initiatives il faut que la vie et l'instruction se poursuive, nonobstant un défaut de relecture.


Titre: Re : Re : Edupython
Posté par: le 22 Mars 2020 11:14:29
Ça va devenir compliqué si j’ai personne pour m’aider  :-X

Le pire j’ai fait un mail au prof et il nous a même pas répondu...

Bon comme  j’ai le temps vu la situation j’ai téléchargé un PDF de  + 200 pages...

Ta fille n’a pas son cours ?
Laisse un peu de temps à l’enseignant pour répondre. Il a les mêmes problèmes que tous les autres français.
Perso j’ai plus de 130 élèves, le support informatique de l’éducation nationale plante, nous sommes obligés d’envoyer nos cours la nuit pour que ça passe, quand ça fonctionne, trop de monde dessus et il n’est pas prévu pour...
J’ai donné mon mail perso à mes élèves, j’ai déjà une cinquantaine de mails à traiter, chacun va à sa vitesse, certains qui avait une semaine pour me rendre leur travail, l’ont déjà rendus. Ce n’est pas le cas de tous.
L’idéal est de mettre le corrigé en ligne à la fin mais il faut répondre également aux questions élève par élève.
J’ai une collègue qui s’est fait allumer par un parent, elle fait ce qu’elle peut, elle, son mari et ses deux momes ont attrapé cette saleté de virus et elle continue à bosser,  chacun fait ce qu’il peut en cette période pour laquelle nous ne sommes pas préparés du tout.
Bon courage à tous.


Titre: Re : Re : Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 11:39:08
Ta fille n’a pas son cours ?
Laisse un peu de temps à l’enseignant pour répondre. Il a les mêmes problèmes que tous les autres français.
Perso j’ai plus de 130 élèves, le support informatique de l’éducation nationale plante, nous sommes obligés d’envoyer nos cours la nuit pour que ça passe, quand ça fonctionne, trop de monde dessus et il n’est pas prévu pour...
J’ai donné mon mail perso à mes élèves, j’ai déjà une cinquantaine de mails à traiter, chacun va à sa vitesse, certains qui avait une semaine pour me rendre leur travail, l’ont déjà rendus. Ce n’est pas le cas de tous.
L’idéal est de mettre le corrigé en ligne à la fin mais il faut répondre également aux questions élève par élève.
J’ai une collègue qui s’est fait allumer par un parent, elle fait ce qu’elle peut, elle, son mari et ses deux momes ont attrapé cette saleté de virus et elle continue à bosser,  chacun fait ce qu’il peut en cette période pour laquelle nous ne sommes pas préparés du tout.
Bon courage à tous.

Bien je reprend depuis le début.

Voila notre exercice sur pronote..donc pas de cours.. je vous laisse juger..

(http://img.pccreation.net/photos/202003221032573796.JPG)

Je passe la grammaire et l’orthographe. Moi aussi je fais beaucoup de fautes au passage mais je n’enseigne pas a nos enfants  :( :(

Merci Christophe ton aide m’est précieuse.

1 j’ai compris comment créer une image.
2 j’ai compris comment dessiner avec la tortue
3 je n’arrive pas a dessiner avec ma tortue sur mon image. En fait je n’arrive pas a importer une image PNG dans python.

Je suis vraiment novice je ne connaissais pas encore hier ce programme qui par contre je trouve hyper intéressant. ;)







Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 11:43:05
Je veux bien t'aider, mais il y a plusieurs façons de réaliser ces droites.

1) il existe des méthodes pour tracer des droites. Tu donnes les coordonnées de départ et de fin, et la fonction trace tout seul sur l'image.

2) si tu ne sais que 'allumer' un pixel à partir de ses coordonnées, il faut faire une boucle pour allumer chaque pixel du segment
Code:
pour chaque abscisse x du segment
   calculer ordonnée de l'abscisse  // (y = a*x + b)
   afficher le pixel (x,y)
fin pour


Titre: Re : Re : Re : Re : Edupython
Posté par: Kalango le 22 Mars 2020 11:52:55

Je passe la grammaire et l’orthographe. Moi aussi je fais beaucoup de fautes au passage mais je n’enseigne pas a nos enfants  :( :(

Je suis vraiment novice je ne connaissais pas encore hier ce programme qui par contre je trouve hyper intéressant. ;)


Ca doit être drôle de faire de l'informatique avec un prof qui fait des fautes d'orthographe et des erreurs de syntaxe.
Etudiant, on programmait sur Mini 6. On tapait le code dans un fichier la journée. On lançait la compilation la nuit. On avait le résultat le lendemain. Le troisième jour, on avait forcément compris la nécessité de relire avant de lancer la compilation...


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 12:11:43
Une fois que tu sais faire une ligne, c'est pas très compliqué de remplir un rectangle. Il suffit de tracer un segment horizontal de la même longueur que la largeur du rectangle, pour chaque pixel de la hauteur rectangle.

Si tu as un rectangle de 200 pixels de large pour 400 pixels de haut dont l'origine est au pixel 0,0

Code:
pour y = 0 à 399

  'tracer la ligne

  pour x = 0 à 199
    pixel (x,y,couleur)
  fin pour

  'et hop, on passe à la ligne suivante
fin pour

Pour le drapeau français, tu crées une image blanche au départ, tu dessines le rectangle bleu, puis le rectangle rouge. Si ta fille est révolutionnaire elle peut d'abord dessiner un drapeau rouge, puis un rectangle bleu et un autre blanc.

Le pseudo-code pour dessiner un rectangle place le rectangle à l'abscisse 0. C'est l'abscisse du rectangle bleu. Si le drapeau fait 600 px de large, le rectangle blanc commencera à 200, et le rouge à 400.

Il faut donc remplacer la ligne 

 
Code:
 pour x = 0 à 199
par
 
Code:
 pour x = 200 à 399
et 
 
Code:
pour x = 400 à 599


Titre: Re : Re : Re : Re : Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 12:22:55
Ca doit être drôle de faire de l'informatique avec un prof qui fait des fautes d'orthographe et des erreurs de syntaxe.


c'est une cata......

j'ai toujours pas trouver comment importer mon image dans python

Pourtant si j'ai bien compris

61  tu crée ton image 800,800 pixels jaune dans la console
-    tu modifie le programme pour faire apparaitre un pixel  noir , bleu , rouge, et blanc avec la fonction im;putpixel
-    tu modifie le programme pour que la couleur devienne bleu clair
-    tu compare si tu avais enregistré en JPG

Jusque la ok

-    tu repars d'une feuille blanche et tu crée une image en 800,800 gris

62  J'arrive avec la tortue de creer le dessin,

maintenant je n'arrive pas a dessiner sur mon image ou mettre de la couleur dans mon dessin, je ne comprends vraiment pas comment faire..

Je suis bien null   :-\ :-\ :-\




Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 13:04:33
Code:
# Exo 61                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "yellow")

# Un pixel à l'écran correspond en fait à trois lampes (une rouge,              
# une verte, et une bleue) qui, en s'allumant plus ou moins,                    
# donnent la couleur au pixel.                                                  
# Le système de codage de la couleur RGB (rouge, vert, bleu)                    
# reproduit le fonctionnement de l'écran. L'intensité d'une lampe              
# varie entre 0 (éteinte) et 255 (pleine intensité).                            
# Le noir correspond à toutes les lampes éteintes. Il se code (0,0,0)          
# le blanc au contraire correspond à toutes les lampes allumées. Il            
# se code (255,255,255)                                                        
# Pour le rouge, il faut allumer le rouge et pas les autres : (255,0,0)        
# Pour le bleu, c'est pareil, mais avec le bleu :  (0,0,255)                    
# Pour le vert, ce sera (0,255,0)                                              

im.putpixel((10,10), (0,0,0))       # noir                                      
im.putpixel((20,20), (0,0,255))     # bleu                                      
im.putpixel((30,30), (255,0,0))     # rouge                                    
im.putpixel((40,40), (255,255,255)) # blanc                                    


# on peut aussi nommer les couleurs dans Python
# il faut pour cela parler anglais ;-),
# et le même que python, car chez moi ça ne marche pas
# im.putpixel((50,50), "skyblue")

im.putpixel((50,50), (135,206,235)) 

im.save("premiere_image.png", "PNG")


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 13:29:32
Code:
# Exo 62                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "grey")

# on balaie toutes les abscisses (variable x) de 0 à 799                       
# et on met le pixel à l'ordonnée 400 (au milieu) en noir                       

for x in range (0,799):
    im.putpixel((x,400), (0,0,0))

# c'est pas très joli, mais bon                                                 

im.save("exo62.png", "PNG")



Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 13:38:44
Code:
# Exo 63                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "grey")


# le truc nouveau dans cet exercice, c'est que l'ordonnée change               
# quand on balaie les abscisses.                                               
# C'est une diagonale dont l'ordonnée est égale à l'abscisse                   
# (et oui, l'axe des ordonnées est inversé, les ordonnées croissent             
# le bas... un truc inventé par un gars qui vivait visiblement dans             
# l'hémisphère sud  !)                                                         
# on balaie toutes les abscisses (variable x) de 0 à 799                       
# et on met le pixel à l'ordonnée y = x  en noir                               

for x in range (0,799):
    im.putpixel((x,x), (0,0,0))

# on aurait pu mettre                                                           
# for x in range (0,799):                                                       
#    y = x                                                                     
#    im.putpixel((x,y), (0,0,0))                                               

# c'est pas très joli, mais bon                                                 

im.save("exo63.png", "PNG")


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 13:43:38
Code:
# Exo 64                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "grey")


# le truc nouveau dans cet exercice, c'est que l'ordonnée change               
# quand on balaie les abscisses de manière un peu moins triviale               

# les ordonnées vont décroitre quand les abscisses vont croitre,               
# en partant de (0,799) pour finir à (799,0)                                   

# l'équation est y  = 799 -x                                                   


# on balaie toutes les abscisses (variable x) de 0 à 799                       
# et on met le pixel à l'ordonnée y = 799 - x  en noir                         

for x in range (0,799):
    im.putpixel((x,799 - x), (0,0,0))

# on aurait pu mettre                                                           
# for x in range (0,799):                                                       
#    y = 799 - x                                                               
#    im.putpixel((x,y), (0,0,0))                                               

# c'est toujours pas très joli, mais bon                                       

im.save("exo64.png", "PNG")


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 13:57:26
Code:
# Exo 65                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "grey")


# Il y a plusieurs façons de faire le pointillé :                               
# - soit on balaie l'ensemble des abscisses et on n'allume                     
#   qu'un point sur deux, en vérifiant si l'abscisse est paire                 
# - soit on est un peu plus malin; et on se dit qu'une abscisse                 
#   paire, ça s'écrit xpaire = 2 * x.           
#   On fait donc une boucle sur la moitié de la largeur de du carré             
#   et on allume les points (2 * x, 400)                                         




# on balaie toutes les abscisses (variable x) de 0 à 399                       
# et on met le pixel à l'abscisse paire = 2 * x 
# et ordonnée 400 en noir                           

for x in range (0,399):
    im.putpixel((2 * x, 400), (0,0,0))

# on aurait pu mettre                                                           
# for x in range (0,399):                                                       
#    xpaire = 2 * x                                                             
#    im.putpixel((xpaire, 400), (0,0,0))                                         

# Le pointillisme a eu son heure de gloire                                     

im.save("exo65.png", "PNG")


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 14:11:20
Code:
# Exo 66                                                                        

from PIL import Image

im = Image.new("RGB", (800,800), "grey")


# Soit on fait une première boucle pour la première couleur                     
# suivie d'une seconde boucle pour l'autre couleur                             

for x in range (0,399):
    im.putpixel((x, 400), (255,0,0))

for x in range (400,799):
    im.putpixel((x, 400), (0,0,255))


# Ca marche, mais ce n'est pas très élégant.                                   

# On peut tout faire dans une seule boucle                                     
# Si on balaie toutes les abscisses (variable x) de 0 à 399                     
# on va tracer un premier segment qui correspond à la moitié                   
# du rectangle                                                                 
# En affichant les pixels décalés de 400 pixels (x + 400),                     
# on affiche l'autre moitié                                                     


for x in range (0,399):
    im.putpixel((x, 450), (255,0,0))        # ligne rouge                       
    im.putpixel((400 + x, 450), (0,0,255))  # ligne bleue                       

# (j'ai décalé de 50 px vers e bas pour qu'on voit les 2 tracés)               



im.save("exo66.png", "PNG")



Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 14:45:59
Dans ce programme, tout n'est pas utile, je fais plusieurs fois la même chose, mais c'est pour montrer.
En prime, ta fille pourra dessiner le pavillon national  :D


Code:
# Exo 67                                                                        

from PIL import Image

# un drapeau, c'est un rectangle 2:3                                           
# et on le fait blanc pour commencer, puisqu'historiquement,                   
# on est parti de l'étendard royal, auquel on a adjoint les                     
# couleurs du PSG                                                               

im = Image.new("RGB", (600,400), "white")


# Il ne reste plus qu'à faire les deux rectangles bleu et rouge                 

# Pour faire un rectangle, on balaie toute la hauteur du drapeau               
# pour tracer des segments horizontaux de couleur                               

for y in range (0,399):                #rectangle bleu                         
    for x in range (0,199):
        im.putpixel((x,y), (0,0,255))
for y in range (0,400):                #rectangle rouge                         
    for x in range (400,599):
        im.putpixel((x,y), (255,0,0))


# Ca marche, mais ce n'est pas très élégant.                                   

# Comme tout à l'heure, on peut faire dans une seule boucle                     

for y in range (0,399):
    for x in range (0,199):
        im.putpixel((x,y), (0,0,255))           # ligne rouge                   
        im.putpixel((400 + x, y), (255,0,0))    # ligne bleue                   

# cette dernière méthode n'est pas applicable à un drapeau                     
# dont les bandes ne sont pas de même largeur (comme le pavillon               
# de nos bateaux, dont les bandes sont de 30/33/37 %)                           

# dans ce cas, pour le pavillon                                                 
#for y in range (0,399):                                                       
#    for x in range (0,179):                                                   
#        im.putpixel((x,y), (0,0,255))                                         
#    for x in range (379,599):                                                 
#        im.putpixel((x,y), (255,0,0))                                         

# et pour le drapeau, parce que le prof ne fait pas de bateau...               

for y in range (0,399):
    for x in range (0,199):
        im.putpixel((x,y), (0,0,255))
    for x in range (400,599):
im.putpixel((x,y), (255,0,0))


im.save("exo67.png", "PNG")

Je lui laisse le soin de faire les autres drapeaux...


Titre: Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 14:56:25
Merci Eric tu es Génial.....

Je m'y remets et je reprend au 62

Le but c'est que je comprenne afin de lui expliquer...

J'espere y arriver. ;)


Titre: Re : Edupython
Posté par: Flyer550 le 22 Mars 2020 15:11:08
“Vous devez arrivé tousse”

Passons le “arrivé” mais le “tousse” c est la premiere fois que je vois cela !!

Sinon c est ok pour toi ?


Titre: Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 15:12:31
Tu vas me trouver nul..,

(http://img.pccreation.net/photos/202003221408041992.JPG)

Je vois ou tu veux en venir en mettant une variable a la hauteur de (400) pour tracer une droite.

Mais je n’arrive pas a valider la ligne. Si je fais entrée ça me mets a la ligne ...
Et si je tape ma sauvegarde je n’ai que mon carré gris  :-X :(
Heureusement que je n’ai que ça a faire  :D :D



Titre: Re : Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 15:14:01
“Vous devez arrivé tousse”

Passons le “arrivé” mais le “tousse” c est la premiere fois que je vois cela !!

Sinon c est ok pour toi ?

J’en bave un peu.. le pire c’est que j’ai compris la logique mais je n’arrive pas a l’interpréter  :-X


Titre: Re : Edupython
Posté par: djmecra le 22 Mars 2020 15:40:34
sinon il y a une foction line :
line(Surface, color, (x1,y1), (x2,y2), width)

faut pas réinventer la roue !


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 15:48:41
C'est l'interpréter qui ne sait pas s'il doit finir l'instruction composée à la fin de la ligne.
essaie de mettre un point virgule à la fin de la boucle


Titre: Re : Re : Edupython
Posté par: Kalango le 22 Mars 2020 15:51:47
sinon il y a une foction line :
line(Surface, color, (x1,y1), (x2,y2), width)

faut pas réinventer la roue !


on peut aussi acheter des drapeaux tout faits ! :D.
Si le prof a seulement introduit le dessin d'un pixel...


Titre: Re : Re : Edupython
Posté par: Doudou39330 le 22 Mars 2020 16:19:18
C'est l'interpréter qui ne sait pas s'il doit finir l'instruction composée à la fin de la ligne.
essaie de mettre un point virgule à la fin de la boucle


EUREKA  :D :D :D :D

on a fait le 62.... ;)


Titre: Re : Edupython
Posté par: Kalango le 22 Mars 2020 17:58:26
(http://img.pccreation.net/photos/202003221657048030.JPG)

 :)


Titre: Re : Re : Edupython
Posté par: pechevoile le 22 Mars 2020 18:05:46
“Vous devez arrivé tousse”

Passons le “arrivé” mais le “tousse” c est la premiere fois que je vois cela !!

Sinon c est ok pour toi ?



Tousse, ça doit être un jeu de mots en lien avec les circonstances.  :-\


Titre: Re : Re : Re : Edupython
Posté par: doumes le 22 Mars 2020 18:43:36
Bonsoir,

EUREKA  :D :D :D :D

on a fait le 62.... ;)

Fait attention ne va pas trop loin  tout de même  maximum six................  pas un de plus   ;D ;D ;D :-[ :-[ :-[ :-[


Titre: Re : Re : Re : Edupython
Posté par: Flyer550 le 22 Mars 2020 22:51:40


Tousse, ça doit être un jeu de mots en lien avec les circonstances.  :-\
:P


Titre: Re : Edupython
Posté par: Doudou39330 le 23 Mars 2020 00:26:37
bon je m'y suis remis un peu (beaucoup même)

j'ai du mal a faire le 2 eme drapeau

(http://img.pccreation.net/photos/20200322232526.JPG)

je n'arrive pas a remplir la boite de bleu..






Titre: Re : Edupython
Posté par: stephane le 23 Mars 2020 00:32:19

méfie toi Bertrand, tu risques de devoir reprendre le banc des élèves à la reprise :D


Titre: Re : Re : Edupython
Posté par: Doudou39330 le 23 Mars 2020 00:44:11
méfie toi Bertrand, tu risques de devoir reprendre le banc des élèves à la reprise :D

C’est un peu galère pour mes vielles neurones  :D :D ;)


Titre: Re : Re : Edupython
Posté par: Kalango le 23 Mars 2020 10:21:51
bon je m'y suis remis un peu (beaucoup même)

j'ai du mal a faire le 2 eme drapeau

(http://img.pccreation.net/photos/20200322232526.JPG)

je n'arrive pas a remplir la boite de bleu..


Il faut que tu empiles des lignes bleues horizontales qui vont du bord gauche (x =0) jusqu'à la ligne bleue que tu as dessinée (y = x).

pour chaque y de 0 à ..
dessiner la ligne de (0,y) à (y,y)
fin pour

Si tu veux le code, je te l'envoie




Titre: Re : Edupython
Posté par: Doudou39330 le 23 Mars 2020 10:25:40
Salut Eric, oui je veux bien le code pour que je l'analyse afin de comprendre...

C'est pas évident pour un vieux comme moi  :D :D :D

mais surtout je voudrais vraiment avoir compris pour expliquer la logique a Olivia  ;)

Merci pour elle surtout..


Titre: Re : Edupython
Posté par: Kalango le 23 Mars 2020 10:47:27
Code:
# Exo 67b

from PIL import Image

# un drapeau, c'est un rectangle 2:3
# et on le fait blanc pour commencer, puisqu'historiquement,
# on est parti de l'étendard royal, auquel on a adjoint les
# couleurs du PSG

im = Image.new("RGB", (600,400), "white")



for y in range(200,399):
    for x in range (0,599):
        im.putpixel((x,y), (255,0,0))

# triangle bleu :
# on peut le faire de 2 façons, soit en traçant les lignes horizontalement,
# soit en traçant des lignes verticales.

# c'est cette deuxièeme option que je prends
# les points supérieurs de la ligne verticale ont abscisse = ordonnée (x = y)
# les points inférieurs, y = 399 - x

# donc pou une abscisse donnée, on trace la ligne verticale entre les
# ordonnées x et 399 -x

for x in range(0,199):
    for y in range (x,399-x):
        im.putpixel((x,y), (0,0,255))
   


im.save("exo67b.png", "PNG")


Titre: Re : Edupython
Posté par: Doudou39330 le 23 Mars 2020 11:39:07
La nuit a été bénéfique et surtout ton aide vraiment précieuse. Je te remercie grandement de ta patience et surtout de ton dernier post qui m’a fait vraiment comprendre.
Maintenant il faut que je fasse gaffe aux erreurs de frappe.

J’ai fait un mega tuto en word a Olivia et lui installer sur sa machine.

Je vais la laisser bosser un peu en surveillant,  maintenant qu’elle a un cours...

Encore merci  ; et vive VCF.....

Ps: promis quand elle aura compris je lui ferai poster plusieurs drapeaux....





Titre: Re : Edupython
Posté par: bataclo le 23 Mars 2020 12:11:22
ça réchauffe le cœur, merci Eric pour ton implication et tes explications !


Titre: Re : Re : Edupython
Posté par: Doudou39330 le 23 Mars 2020 16:12:03
ça réchauffe le cœur, merci Eric pour ton implication et tes explications !

Oui c'est clair, il n'y a qu'ici que l'on trouve des personnes sympa comme ça  ;)


Titre: Re : Edupython
Posté par: Doudou39330 le 24 Mars 2020 12:54:51
Bien .  Je veux pas abuser de ta gentillesse Eric mais nous sommes bloqués a ce niveau.

(http://img.pccreation.net/photos/202003241134108660.JPG)

L’avantage je vois qu’Olivia a compris pas mal de chose car c’est elle qui a commencé le drapeau.

J’ai bien essayé de faire des triangles ( ça je peux )

mais ce que je n’arrive pas c’est de partir de l’abscisse (10) a une ordonnée de (0)  (Pour faire les diagonales blanches)


J’ai bien essayé de modifier les formules  sur une autre image mais ça me donne ça :

(http://img.pccreation.net/photos/202003241141251679.JPG)

Pour le triangle noir ok il part de (0,0)

Mais je voudrais faire la même forme mais qui part de (0) sur l’abscisse  mais moins haut sur l’ordonnée.  

J’ai essayé de changer les valeurs ( triangle rouge) mais c’est pas bon....

A la limite ça marche pour le bas ..

As tu une formule magique ?  Ou vois tu mon erreur ? Je t’avoue ne pas comprendre.



Titre: Re : Edupython
Posté par: Kalango le 24 Mars 2020 15:01:25
Je passe l'après midi en visio, télétravail oblige.
Je reviens vers toi en fin de journée.
Bravo à Olivia pour le drapeau de l'Islande  :D


Titre: Re : Re : Edupython
Posté par: Doudou39330 le 24 Mars 2020 15:42:29
Je passe l'après midi en visio, télétravail oblige.
Je reviens vers toi en fin de journée.
Bravo à Olivia pour le drapeau de l'Islande  :D

Super de plus elle est en pleine réflexion.

Moi j’ai abdiqué. L’élève a dépassé le maitre... ;D ;D :D

(http://img.pccreation.net/photos/202003241438397411.JPG)





Titre: Re : Edupython
Posté par: Sebastien le 25 Mars 2020 06:12:25
Beau sujet et Merci Eric  8) 8) 8)


Titre: Re : Re : Edupython
Posté par: Kalango le 25 Mars 2020 13:25:22
Désolé, je n'ai pas pu m'y mettre hier soir.


J’ai bien essayé de faire des triangles ( ça je peux )

mais ce que je n’arrive pas c’est de partir de l’abscisse (10) a une ordonnée de (0)  (Pour faire les diagonales blanches)


J’ai bien essayé de modifier les formules  sur une autre image mais ça me donne ça :

(http://img.pccreation.net/photos/202003241141251679.JPG)

Pour le triangle noir ok il part de (0,0)

Mais je voudrais faire la même forme mais qui part de (0) sur l’abscisse  mais moins haut sur l’ordonnée.  

J’ai essayé de changer les valeurs ( triangle rouge) mais c’est pas bon....


C'est pas mal : tu arrives déjà à faire les triangles.

Le décalage n'est pas très compliqué : c'est juste un mix entre tes triangles noir et rouge !

Code:
# ton code pour le triangle noir

for x in range (0,250):
    for y in range (x, 400 - x) :
        im.putpixel((x,y), (0,0,0))

Ce code trace un succession de lignes verticales dont l'ordonnée des points sera comprise en x et 400 - x.

Quand tu es sur le bord, x = 0. Tu traces donc une ligne verticale qui va de 0 à 400 -0 = 400. Tu traces donc une ligne sur toute la verticale du drapeau.

Comme tu veux décaler un peu le tracé en haut et en bas - tu voulais un décalage de 40 px sur ton triangle rouge, il faut rajouter 40 en haut du drapeau, et retirer 40 en bas.

les lignes verticales devront être comprises entre x + 40 et 400 - x - 40.


Tu peux essayer pour voir ce que ça fait (j'ai pas essayé) : soit ça plante, soit ça va faire un deuxième petit triangle au bout du premier...

En fait j'ai essayé depuis, ça ne plante pas et ça ne fait pas de deuxième triangle. :D. Python ne dessine pas les segments à l'envers... Bon, mais c'est pas propre de faire dessiner à Python des trucs qu'il ne dessine pas. On pense à la planète et à l'électricité inutile, et au CO2 qu'il a fallu produire... (de mon temps, on pensait surtout à accélérer le programme...)

Car en réduisant ainsi ton triangle, la pointe du triangle n'est plus à l'abscisse 200.

Comme elle est à toujours à l'ordonnée 200 (y = 200) c'est à dire au milieu de la hauteur, et comme y = x + 40 sur le bord du triangle, x = 160.
(on peut faire la même chose avec l'équation de l'autre bord y = 400 - x - 40... et on peut même regarder quand les deux bords se coupent, c'est à dire x + 40 = 400 - x - 40, on trouvera toujours x = 160  <???>)

Il faut donc faire varier x entre 0 et 160.

Code:
# code modifié pour le triangle noir décalé des deux côtés

for x in range (0,160):
    for y in range (x + 40, 400 - x - 40) :
        im.putpixel((x,y), (0,0,0))

Maintenant... Le drapeau n'étant pas carré (600 x 400), il va falloir étirer le triangle vers la droite.
La pente de notre triangle est de 1 pour 1 ( y = x +...); alors qu'elle devrait être de 2 pour 3 ( y = 2/3 x + ...). Olivia peut vérifier quand x vaut 600 au bout du drapeau, y = 2/3 600  = 400  :D
 
Il faut modifier le code en conséquence :


Code:
# code modifié pour le triangle noir décalé des deux côtés
# sur un drapeau 3:2

for x in range (0,160):
    for y in range (2/3*x + 40, 400 - 2/3*x - 40) :
        im.putpixel((x,y), (0,0,0))

En faisant cela, on rentre dans une autre dimension... puisque l'on multiplie un entier par un rationnel... et donc les entiers deviennent des nombres à virgules (float) quand l'interprêteur attend un entier. Il est gentil, il a dû t'adresser un gentil message d'erreur...


Alors on lui fait plaisir... on convertit les nombres à virgule en nombres entiers en utilisant la fonction int(). C'est pas compliqué, il faut juste le savoir....
 
Code:
for x in range (0,160):
    for y in range (int(2/3*x + 40), int(400 - 2/3*x - 40)) :
im.putpixel((x,y), (0,0,0))


Il reste un petit problème que tu auras vite corrigé  :)

Comme on descend moins vite sur le côté du triangle, il faut aller plus loin sur les abscisses.

La pointe est toujours à l'ordonnée 200 (au milieu de la hauteur du drapeau), sauf que y = 2/3 x + 40, soit 200 = 2/3 x + 40, soit x = 240 si j'ai encore tous mes neurones. Et don c au final :

Code:
for x in range (0,240):
    for y in range (int(2/3*x + 40), int(400 - 2/3*x - 40)) :
im.putpixel((x,y), (0,0,0))

 :) :) :)

Pour le point bonus... Comment ça y en n'a pas ????

La fonction int() prend la partie entière du nombre à virgule : int (0.0001) = 0, et int (0,9999) = 0. C'est normal, mais cet arrondi donne un effet d'escalier au côté du triangle pas toujours très heureux.

Il existe une fonction round() qui fait l'arrondi. Il y a un bug (round 2.5) = 2 plutôt que 3 par convention. J'ai toujours fait int( x + 0.5) pour l'arrondi

Code:
for x in range (0,240):
    for y in range (int(2/3*x + 40 + 0.5), int(400 - 2/3*x - 40 + 0.5)) :
im.putpixel((x,y), (0,0,0))

Voilà, voilou


Je te mets mon code pour l'Union Jack, avec une approche légèrement différente de la tienne, mais il n'y a pas de bonne ou moins bonne façon de tracer le drapeau.

Code:
# Exo 67                                                              

from PIL import Image

# un drapeau, c'est un rectangle 2:3                                 
# Drapeau 'Union Jack'                                                   

im = Image.new("RGB", (600,400), "blue")


# bandes blanches drapeau écossais                                     

for y in range(0,400):
    for x in range (0,50):
        x = int( y * 1.5 - 25 + x);
        if x < 0: x = 0
        if x > 599: x =599
        im.putpixel((x, y), (255,255,255))
        im.putpixel((599-x,y), (255,255,255))

# bandes rouges du drapeau gallois                                   

for y in range(0,200):
    for x in range (0,20):
        im.putpixel((max(0,int(y * 1.5 - x)),y), (255,0,0))
        im.putpixel((min(599,int(600 - y * 1.5 - x+.5)), y), (255,0,0))
        im.putpixel((max(0,int(300 - y * 1.5 + x)), y+199), (255,0,0))
        im.putpixel((min(599,int(300 + y * 1.5 + x+.5)), y+199), (255,0,0))


# bandes rouges drapeau anglais                                       

for y in range(0,399):
    for x in range (0,75):
        im.putpixel((261+x,y), (255,255,255))
for y in range (0,75):
    for x in range(0,599):
        im.putpixel((x,161+y), (255,255,255))


for y in range(0,399):
    for x in range (0,65):
        im.putpixel((266+x,y), (255,0,0))
for y in range (0,65):
    for x in range(0,599):
        im.putpixel((x,166+y), (255,0,0))


# God save the queen

im.save("exo67c.png", "PNG")                                         



Je commence à écrire des posts plus longs que les plus courts de Michel... faut que je sorte m'aérer. :P



Titre: Re : Edupython
Posté par: Doudou39330 le 25 Mars 2020 14:05:28
Génial... :D :D :D

Fait gaffe sort pas trop loin car ça va te couter 135€  ;) :D ;D

Merci en tout cas. Je vais imprimer ton post afin de pouvoir travailler un peu afin de le refaire avec Olivia.

Bon pour mes vielles neurones c’est un peu compliqué et Olivia comprends plus vite que moi  donc c’est rassurant.. aa aa

Encore merci  ;)