Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Enseigner Python: petits projets de découvertes

+7 votes

En cette fin d'année scolaire, j'ai proposé à mes élèves quelques cours optionnels pour découvrir la programmation en Python. Ils ont un niveau lycée (2nd et 1S), n'ont pour la plupart jamais programmé mais ont l'air pas mal motivés!
Je suis donc à la recherche de petits projets plutôt fun pour découvrir sans trop de technicités la programmation.
J'ai à ma disposition, python2.7 installé avec Anaconda et il m'est impossible de pip quoi que ce soit!
S'il est possible d'éviter les projets trop proches des maths (j'en ai fait avec eux toute l'année, il est temps d'arrêter). Les algorithmes pour calculer un pgcd ou trouver les racines d'un polynôme ne sont pas ce qui me pationnent...

Je suis preneur de toutes idées farfeulus réalisable en pas trop de temps pour qu'ils aient le temps d'en faire plusieurs dans un scéance de 2h.

Quelques idées que j'ai déjà pu avoir:

  • Deviner un nombre: l'ordinateur tire un nombre au hasard et l'utilisateur doit le deviner.
  • Traducteur Shodock. Par de référence mais aller regarder la vidéo suivante pour comprendre l'idée https://www.youtube.com/watch?v=nm0cw6b1PMA (en fait c'est de la conversion en base 4 mais sans le dire!)
  • Magic 8 Ball, un boule qui répond aux questions de la vie. L'idée vient de là http://pastebin.com/WSLTkhD1 mais j'enlèverai les fonctions pour le rendre plus accessible au debut.
  • Pierre feuille ciseau (vous connaissez j'espère)
  • Un générateur d'escuse de retard: un peu dans la même idée que ça http://suyeon-son.com/sandbox/mad-libs.html

Quelques références:

demandé 9-Jun-2015 par sPaz (306 points)

7 Réponses

+3 votes

Ça dépend du temps qu'ils auront, mais un petit codage de caesar (chiffrement / déchiffrement) est un classique. Avec un peu d'analyse fréquentielle pour décrypter les messages de leurs camarades ça peut peut-être les intéresser.

C'est un peu des maths mais rien de compliqué (une somme + un tri :), ca fait travailler les boucles et les listes), et çà peut les sensibiliser a la crypto.
Les solutions sont peut être trouvable un peu trop facilement sur le net.

Après je ne me rend pas bien compte du niveau qu'ils peuvent avoir, c'est peut être déjà trop avancé.

répondu 9-Jun-2015 par jc (2,704 points)

Oui je pense que ce n'est pas trop compliqué à faire. La partie la plus compliqué reste à comprendre l'histoire de transformer une lettre en nombre mais ça reste abordable et pas ininteressant!

Pour te donner une idée de leurs niveaux, voila ce que j'ai fait hier en TD avec les 1S (dans le cadre d'un cours de math donc il y avait un peu de math):
http://git.poneyworld.net/Enseignements/plain/1S/gene_suite/Programmation/Decouverte%20de%20Python.html

+12 votes

Le plaisir est pour moi le premier critère.

Un exemple, j'aime la SF mais à l'école on me balançait du Molière et du Balzac. Si je n'étais pas tombé sur un bon roman grâce au gars de la BU, ben je serai devant un secret story à détruire les derniers neurones.

Cible les intérêts de la classe : football, animaux, mécanique, cinéma etc.

Ensuite tu les faits jongler avec les listes , les dicos, l' unpacking.
Je viens de m' imprimer la doc du module collection, itertools et functools, ça me semble très utile.

Fait leur faire le tri entre les scores et stat du PSG ou de l' OM, répertorier les joueurs ou les mammifères, ou des filmographies des grands acteurs et réalisateurs.

Bref, attraper une info, lui faire une prise de judo, l' enregistrer, la resortir, la classer, la transmettre.

Il faut qu'ils s' aperçoivent que ça peut leur être utiles et sympas, baisser l' angoisse de la difficulté à apprendre. Enlever l' image du génie hacker né comme ça, faut juste s’entraîner et pas être pressé.

Un petit jeu pour la fin : sur le site "recettes de tyrtamos" , y'a plusieurs trucs sympas sur les probabilités.
C'est l'occasion de mettre un jeu de carte avec tkinter ou pygame.

http://python.jpvweb.com/mesrecettespython/doku.php#calculs_de_probabilite

autres inspiration :
http://fsincere.free.fr/isn/python/cours_python_tkinter.php

Bref, quand on s' amuse, le cerveau imprègne mieux, plus vite plus longtemps, et c'est pas considéré comme du boulot alors ils y reviennent.

répondu 9-Jun-2015 par buffalo974 (2,886 points)

j'aimerais pouvoir upvoter cette réponse plusieurs fois.

moi aussi ^^

Tout à fait d'accord avec toi! C'est une des raisons qui m'a poussé à poser cette question ici!
Savoir qu'est ce qui vous aurait fait tripper à coder étant jeune!

Il est tout de même assez dure de deviner ce que les élèves aiment et ce qui les motive... On peut s'arracher la peau du dos pour essayer de leur faire un truc qu'on espère qu'ils aimeront et se planter complètement. Et on peut faire des trucs completement à l'arrache et pourri (de mon point de vu) et que ça leurs plaise à fond...
Du coup, je vais expérimenter. Je leurs propose pleins de petits projets qu'ils choisiront et après ils se gèreront avec une méthode Kanban!
Et puis là, ces cours sont optionnels et le simple fait que je leurs parle d'informatique éclairait leur visage!

Je prends notes du traitement automatisé des résultats sportifs!

+4 votes

Un RaspberryPi, un clobber, une nappe, un breadboard, des LEDs, des resistances, un schema de montage du tout et de l'imagination.

répondu 9-Jun-2015 par Nsukami_ (1,998 points)

J'aurai dû préciser, on a rien..! J'ai déjà dû négocier sec pour avoir python installé dans une salle...
Et après les profs de SI vont dire que je leurs pique leur travail..!

Je te refile les miens si tu peux passer les prendre.

+4 votes

Je te renvoie vers le post de S&M :

Quels exercices pour débutants en Python ?

Et n'oublie pas de jeter un coup d'oeil aux com's, ils complètent pas mal l'article !

répondu 9-Jun-2015 par boblinux (3,092 points)

Bien joué! J'avais oublié cet article!
Merci

+3 votes

Finalement voila ce que je leurs propose http://git.poneyworld.net/Enseignements/plain/Programmation/Projets/Projets%20Python.html

C'est moins libre que ce que j'espérai arriver à faire mais j'espère que les "projets" leurs plairont.
Si vous avez des remarques ou des améliorations je suis preneur.

Merci à tous (même s'il faut pas en mettre...)

répondu 9-Jun-2015 par sPaz (306 points)

Un mini-serveur Flask devrait les intéresser, juste pour leur montrer que python sait faire ça aussi.
Plutôt que de sombrer dans le php ou le java, apprenez le python les enfants !

ui on est raciste contre les "merci" ici =D.

Tu peux poster en résolu ton post du coup? ça n'empêchera pas les gens de continuer à proposer des initiatives intéressantes, mais au moins le post ne restera pas en suspens .

Par contre je te conseille vivement le python3 plutôt que du python2 !

C'est pas vraiment terminé. Ça recommence demain!
Je suis bien d'accord pour python 3 mais python2.7 est la seule version installée... C'est d'autant plus frustrant que je ne peux pas lancer pygame ou d'autre lib!

@buffalo974

t'es un peu dur avec les autres technos )='

Plutôt que de sombrer dans le php ou le java

Du coup ça m'a fait pensé à ce commitstrip ;)

+3 votes
import random

HATS_LIST       = [u"      \n _===_", "  ___ \n .....", "   _  \n  /_\ ", "  ___ \n (_*_)"]
NOSE_LIST       = [u",",    ".",    "_",    " "]
EYES_LIST       = [u".",    "o",    "O",    "-"]
LEFT_ARM_LIST1  = [u" ",    "\\",   " ",    " "]
LEFT_ARM_LIST2  = [u"<",    " ",    "/",    " "]
RIGHT_ARM_LIST1 = [u" ",    "/",    " ",    " "]
RIGHT_ARM_LIST2 = [u">",    " ",    "\\",   " "]
TORSO_LIST      = [u" : ",      "] [",  "> <",  "   "]
BASE_LIST       = [u" : ",      '" "',  "___",  "   "]

leftArm = random.randint(0,3)
rightArm = random.randint(0,3)
print HATS_LIST[random.randint(0,3)]
print LEFT_ARM_LIST1[leftArm] + u"(" + EYES_LIST[random.randint(0,3)] + NOSE_LIST[random.randint(0,3)] + EYES_LIST[random.randint(0,3)] + u")" + RIGHT_ARM_LIST1[rightArm]
print LEFT_ARM_LIST2[leftArm] + u"(" + TORSO_LIST[random.randint(0,3)] + u")" + RIGHT_ARM_LIST2[rightArm]
print u" (" + BASE_LIST[random.randint(0,3)] + u")"

ça fait juste travailler les listes et le print, peut permettre d'aborder la notion de random.

Mais c'est peut-être pas la meilleure saison pour leur faire faire ça.

répondu 10-Jun-2015 par DrHaze
+1 vote

Dans la catégorie "Les idées tordues" :

Un générateurs de langue de bois (blahblahtron) / de pseudo-intello.
Le logiciel pioche dans séries de listes de sujets / verbes / préfixes, suffixes, épithètes, compléments choisis avec soin; articule les phrases..

Comme je suis de culture AGILE, il faut tester :

Le test :
Apprendre après des bouts de texte généré aléatoirement, puis de les clamer sérieusement, avec autorité, en prenant un air inspiré et sûr de soi.
Ne pas hésiter à mettre une cravate où un tailleur (Ca marche, même su pour un étudiant, ça marche).
Faites le avec des complices : c'est beaucoup plus facile et amusant. Le rôle du ou des complices est de se mêler à l'audience, et à vous dévorer du regard comme s'ils comprennaient votre discours ...et bien sûr de vous applaudir à la fin.
A faire lors d'un coctail, d'une inauguration (théatre / évènement en mairie / vernissage etc)

Réussite du test : Les membres de l'audience vous abordent en vous citant.

J'ai déjà fait ce test. C'est très instructif. On oublie jamais (le trac, la honte, la déception liée à la réussite -- expérience rare, et beaucoup d'amusement).

Un projet tout à fait réalisable dans le cadre d'une classe, sous la supervision bienveillante d'un professeur ?

répondu 4-Mai-2016 par e-jambon
...