Blog

Page d’exemple

Projets

Le jeu du pendu en Python

Le Pendu est un jeu consistant à trouver un mot en devinant quelles sont les lettres qui le composent. Dans cet article, nous allons analyser ensemble un jeu du Pendu, fait en Python. Contrairement aux apparences, ce programme peut être très dur a réaliser, surtout pour les non-initiés.

L’article comme le code produit ci-dessous sont largement améliorable. Ce jeu inclus quelques petits bugs non résolus.

Introduction

Tout d’abord, qu’est ce qu’on attend d’un jeu du Pendu, en Python :

  • L’ordinateur choisit un mot au hasard dans une liste, un mot de huit lettres maximum. – Le joueur tente de trouver les lettres composant le mot.
  • À chaque coup, il saisit une lettre.
  • Si la lettre figure dans le mot, l’ordinateur affiche le mot avec les lettres déjà trouvées. -Celles qui ne le sont pas encore sont remplacées par des barres (_).
  • Le joueur a 6 chances. Au delà, il a perdu.

Le début du code

 print("Bienvenue dans le jeu du Pendu")
play=int(input("Tape 1 si tu veux jouer ! \n "))
if play == 1 :  
    prénom=input("Quel est ton nom ?")
    print("\n")
    print("Salut", prénom)
    import random
    liste_mots=["laitue", "hareng", "jambon", "pharynx", "phoque", "langue",
                "stylo","agent","fromage","whisky","billet","boyaux",
                "laser","joystick","crane","joyeux","cahier","camping","argent",
                "rivage","physique",]

Dans cette première partie de code, il ne faut SURTOUT pas oublier le import random, car on utilise beaucoup d’aléatoire dans ce petit jeu.
Sinon, par grand chose d’important a relever, a part la liste de mot que le jeu va utiliser pour le jeu.

Initialisations

 score = 0
    print("Tu as 6 vies")
    print("\n")
    vie = 6

La non plus, c’est pas super intéressant…
On définit juste les variables des vies et du score

while play == 1 :
        vie = 6
        mot=(liste_mots[random.randint(0,21)])
        longueur=len(mot)
        barre=["_ "]
        barre=barre*longueur
        grandeur=longueur

Attention : Ça se corse…
Avec la ligne « mot=(liste_mots[random.randint(0,21)]) », le programme choisi un mot au hasard dans la liste de mots du début.

Dans le jeu du Pendu, les lettres qui n’ont pas été trouvés sont remplacées par des barres (_), et c’est ce qu’on règle cette portion :
longueur=len(mot) calcule le nombre de lettres du mot choisi, puis barre=barre*longueur affiche le nombre de « _ » en fonction du nombre de lettres.
On l’affiche sous forme de liste, car ce sera beaucoup plus facile pour la suite du programme.
La variable « grandeur » est la même que « longueur », sauf que « grandeur » va (aussi) servir pour la suite du programme

Le jeu

  while vie!=0 and grandeur!=0 :
            lettre_choisi = input("Choisi une lettre  ")
            print("\n")
            if lettre_choisi in mot :
                print("Bravo!")
                if lettre_choisi in barre:
                    print ("Tu l'as déja dit !")
                    resultat = ' '.join(barre)
                    print(resultat)
                else:
                    position=int(mot.index(lettre_choisi))
                    barre.pop(position)
                    barre.insert(position,lettre_choisi)
                    resultat = ' '.join(barre)
                    print(resultat)
                    grandeur=grandeur-1

Tiens tiens, on retrouve « grandeur » !
En fait, grandeur sert a dire au programme quand le joueur a trouvé toute les lettres, car si le mot fait par exemple 7 lettres, on pourra logiquement trouver la bonne lettre 7 fois.
Ensuite, le programme nous demande de choisir une lettre (désolé pour la faute d’orthographe « lettre_choisi » ), et si la lettre est dans le mot, alors le programme continue.

Voila la principale difficulté du programme :L’affichage du mot
En effet, il faut afficher le mot avec toutes les lettres qu’on a trouvées.
Tout d’abord, on repére la position de la lettre trouvée avec « position=int(mot.index(lettre_choisi)) », puis on insère la lettre choisie dans la liste « barre » (_ _ _ _ _ _ _) a la bonne position. On supprime aussi une (_) pour que le mot reste a la bonne longueur avec « barre.pop(position) ».
Enfin, on transforme la liste en chaîne de caractère pour que l’affichage soit plus clair, pour finir dans la variable « résultat »

Avant de continuer, je voudrai vous montrer ce qui se passe si on met une lettre qu’on a déjà mise :
C’est exactement comme auparavant, sauf que grandeur ne diminue pas, et qu’il n’y a pas besoin d’afficher une lettre de plus, car elle a déjà été affichée

Trouver toutes ces formules m’ont causé BEAUCOUP de problèmes, donc j’espère que ce sera clair pour vous.

Sinon, si la lettre choisie n’est pas dans le mot, alors :

            else:
                print("Raté")
                if grandeur==longueur :
                    print(longueur*"_ ")
                else:
                    print (resultat)
                vie=vie-1
                print("Il te reste",vie,"vies")
                print("\n")

Sur cette partie, si le joueur se trompe des la première lettre, le programme ne peut pas afficher la variable « résultat », car elle n’existe pas encore. Le programme affiche donc seulement le mot sous forme de barre (_). Dans tout les cas, une vie est retirée.

La fin du jeu

   if vie==0 :
            print("Tu as perdu")
        elif grandeur==0 :
            print("Bravo ! Tu as trouvé le mot !")
            score=score+5
            print("Tu a gagné 5 points !")
        replay=int(input("Tape 1 pour rejouer, et sur 2 si tu veux quitter le jeu   "))
        if replay != 1 :
            break
    print(prénom,"vous avez un score de ",score)

Evidemment, si vos vies tombent à 0, vous perdez.
Si vous gagnez, vous gagnez 5 points. A 50 points vous avez une surprise….
Vous pouvez rejouer en tapant 1, et vous quittez le programme en tapant 2

Voila, j’espère vous avoir aidés a comprendre ce petit programme !
N’hésitez pas a le personnaliser, avec vos propres fonctions, ou avec quelques easters eggs sympathiques !

Le code entier est téléchargeable en bas de la page !

Tutoriels

Se monter un mini PC pour un usage bureautique

Il existe sur le marché des mini pc dont le volume est nettement inférieur à un 1 litre, qui utilisent des composants d’ordinateurs portables et qui sont néanmoins capables de fournir des performances comparables à une unité centrale classique.

Un mini PC c’est quoi ?

Un mini PC est un ordinateur de petit taille, conçu pour des usages classiques tel que la bureautique ou la navigation sur internet.

Le mac mini, le précurseur

Apple a été un précurseur dans le domaine des minis pc largement diffusé avec le mac mini lancé en 2005.

Le NUC, la version d’intel du mini PC

Conçu par Intel, les PC NUC (Next Unit of Computing) sont parmi les plus petits PC disponibles.

Ils utilisent des composants issue de l’univers des ordinateurs portables (mémoire vive au format SODIMM, disques 2.5 pouces, processeur basse consommation) et proposent néanmoins des performances de premier ordre.

Le plus gros avantage d’un mini pc est son faible encombrement comme le montre l’image ci-dessous.

Avantages et inconvenants d’un NUC

Mini PCUnité centrale classique
AvantagesFaible encombrement 
Faible consommation énergétique 
Nomade, peut-être déplacé facilement 
Esthétique 
Montage très facile
Connectivité riche 
Possibilité d’y ajouter une carte graphique 
Evolutif 
Rapport prix / performance souvent favorable 
Réparable facilement
InconvenantsPuissance plus faible du processeur 
Connectivité limitée 
Peu adapté aux jeux vidéos 
Peu évolutif 
Rapport prix / performance souvent défavorable 
Peu réparable, en cas de panne pas de pièces détachées
Encombrement 
Bruyante si refroidissement mal conçu 
Consommation énergétique plus élevée

Commander ses composants

Version 1 : La configuration la moins chère possible

ComposantMarque-ModèlePrix juillet 2019
ÉcranHP 22w Ecran PC Full HD 21,5″ Retour ligne manuel
autres écrans IPS
80€
Boîtier + Alim + Carte mère + ProcesseurIntel NUC BOXNUC6CAYH145€
Mémoire DDR3L SODIMCrucial 8Go DDR3L SODIMM36€
Disque dur SSDCrucial BX500 240 Go Retour ligne manuel
autres SSD SATA
29€
Clavier- SourisMicrosoft Kit Clavier + Souris Desktop 900 Retour ligne manuel
Autres kits clavier + souris
40€

Une configuration complète pour 330€ environ. Alors certes le processeur n’est pas un foudre de guerre, mais il est très économe en électricité.

Accompagné d’un SSD correct et d’une quantité de mémoire vive adéquate, il remplira pleinement son rôle et probablement mieux qu’une configuration du supermarché équipé d’un disque dur mécanique.

Par contre, il n’est ni évolutif ni adapté aux jeux vidéos.

Version 2 : Un choix équilibré comparable à une plateforme Ryzen 2200G

ComposantMarque-ModèlePrix juillet 2019
ÉcranBenQ GW2480 IPS Retour ligne manuel
autres écrans IPS
118€
Boîtier + Alim + Carte mère + ProcesseurIntel NUC NUC8i3BEH Retour ligne manuel
ou autres NUC
279 €
Mémoire DDR4 SODIMCrucial 16Go Kit (8Go x2) SODIMM73€
Disque dur SSDCrucial P1 500Go M.2 PCIe63€
Clavier- SourisMicrosoft Kit Clavier + Souris Desktop 900 Retour ligne manuel
Autres kits clavier + souris
40€

Cette configuration d’un coût total d’environ 600€ présente sensiblement les performance de l’unité centrale proposée dans ce tutoriel :

Assembler un ordinateur personnel pour la première fois

Les écrans sélectionnés ont une fixation VESA 100, ce qui permettra de monter le NUC derrière l’écran.

En attendant la livraison

En attendant la livraison du Intel NUC NUC8i3BEH, il convient de récupérer les notices et pilotes pour faire marcher le matériel.

Les notices seront lues avant la livraison pour gagner du temps pendant le montage, les pilotes eux seront conservés sur une clé USB et ils seront installés après le système d’exploitation

Monter la configuration

Le NUC, le SSD M.2 et les 16 GO de DDR4

1. On ouvre le NUC avec un simple tournevis

2. On installe le SSD M.2 sans forcer

3. On installe les barrettes de DDR4 au format SODIMM

4. On referme le boitier avec le tounevis.

Les images sont issues de la documentation officielle d’Intel.

Vérifier les paramètres du BIOS

Sur le système Intel NUC NUC8i3BEH on peut accéder au BIOS en appuyant sur la touche F2 durant la séquence de boot.

Accéder au BIOS permet de vérifier que tous les composants sont bien reconnus, que les températures de la carte mère et du processeur ne sont pas excessives (sinon le montage est incorrect) et les utilisateurs les plus avertis peuvent y modifier les réglages de la mémoire vive ou procéder à l’overclocking leur processeur.

Installer un système d’exploitation

Pour créer une clé USB bootable sur windows 10 on utilisera l’outil proposé par mircosoft, mais on peut aussi décider d’installer une distribution linux, ubuntu étant la plus connue.

Si aucun système n’est installé, le NUC démarrera tout seul sur la clé USB et l’installation de windows 10 sera très rapide …

Tutoriels

Assembler un ordinateur personnel pour la première fois

Lycéen intégrant une première générale spécialité NSI, je me suis rendu compte que je ne possédais plus d’ordinateur personnel, ce qui est embêtant si on ne veut pas trop squatter l’ordinateur familial.

Quitte à acheter un ordinateur, autant le monter moi même, cette expérience est profitable.

Définir son besoin

Cet ordinateur sera utilisé pour usage bureautique classique, et éventuellement pour faire du montage vidéo, de la composition musicale. Intéressé par l’animation 2d et 3d, j’aimerai en tester la modélisation.

Pour la taille de l’unité centrale, un emplacement prévu à cet effet dans mon bureau mesure 48 cm de hauteur, 23 cm de largeur et 50 cm de longueur.

Choisir ses composants

Pourquoi un SSD plutôt qu’un HDD

Un disque SSD possède une mémoire flash qui lui permet d’être plus rapide, vivre plus longtemps, consommer moins et les données ne disparaissent pas quand elle est mise hors tension. De plus, si on se penche sur L’IOPS (Input/output per second, représentant la performance des disques), le disque SSD fait du 90 000 IOPS et le disque Hdd fait seulement du 50 IOPS soit le disque SSD est 1800 fois plus performant !

Pourquoi un processeur Ryzen plutôt qu’un processeur Core i3/i5 en 2019

 Le processeur Ryzen 3 2200G possède une meilleure fréquence (vitesse) et plus de cœurs par rapport à la puce concurrente équivalente. Le Ryzen peut aussi supporter la vitesse Turbo alors que le Core i3 en est incapable. En plus, le Core i3 fait presque le double du prix du Ryzen (190€-85€) alors qu’il n’est en rien 2 fois plus puissant.

Pourquoi privilégier la quantité de mémoire vive et le SSD à la performance du processeur

Allant plus utiliser des logiciels de bureau et n’étant pas un utilisateur et un informaticien aguerri, ça serait inutile de prendre un processeur haute gamme alors qu’il y aura très peu de chance que je l’utilise à pleine capacité. Il est donc plus pratique d’augmenter la mémoire, moi qui vais utiliser la plupart du temps des logiciels. De plus, s’il n’y a pas assez de DDR (Double data rate), cela fait ramer l’ordinateur, peu importe le processeur.

Commander ses composants

ComposantMarque-ModèlePrix juillet 2019
ÉcranLG24MP88HV-S IPS135€
BoîtierCorsair Carbide 88R48 €
AlimentationCorsair VS 45040€
Mémoire DDRCorsair Vengeance LPX 8 Go40€
Disque dur SSDCrucial MX500 500 Go70€
Carte mèreMSI B450M Mortar105€
ProcesseurAMD Ryzen 32200G88€
Clavier- SourisMicrosoft Kit Clavier AZERTY + Souris Sans fil Desktop 900 USB40€

En attendant la livraison

En attendant la livraison, il convient de récupérer les notices et pilotes pour faire marcher le matériel. Les notices seront lues avant la livraison pour gagner du temps pendant le montage, les pilotes eux seront conservés en lieu sur et il seront installés après le système d’exploitation

ComposantMarque-ModèleFiche produitDocumentation
ÉcranLG24MP88HV-S IPSliendocs pilotes
BoîtierCorsair Carbide 88Rliendocs
AlimentationCorsair VS 450liendocs
Mémoire DDRCorsair Vengeance LPX 8 Goliendocs
Disque dur SSDCrucial MX500 500 Goliendocs pilotes
Carte mèreMSI B450M Mortarliendoc pilotes
ProcesseurAMD Ryzen 32200Glienpilotes
Clavier- SourisMicrosoft Kit Clavier AZERTY + Souris Sans fil Desktop 900 USBlien directdocs pilotes

Durant le transit des colis :

On prépare la clé bootable du système d’exploitation

Outil a télécharger ici

Monter la configuration

Après avoir lu attentivement les notices de la carte mère et celle du boitier, il est utile de lire quelques tutoriels. En lire plusieurs permet de bien comprendre ce qu’il va falloir faire :

GUIDE DE MONTAGE PC Retour ligne automatique
Eviter – Les erreurs de montage PC Retour ligne automatique
Guide de montage PC, Monter soi-même son PC Retour ligne automatique
MONTER SON PC LE GUIDE ULTIME Retour ligne automatique
guide-montage-pc par ldlc Retour ligne automatique
TUTO MSI – Installer un processeur AMD AM4 Retour ligne automatique
Chaîne YouTube MSI France

Nous passons donc maintenant au montage :

1-Mettre le processeur sur la carte mère

2-Mettre le ventirad sur la carte mère (la pâte thermique à déjà été appliquée, inutile d’en remettre)

3-Mettre la DDR sur la carte mère

4-Installer la carte mère dans le boitier

5-Installer l’alimentation dans le boîtier

6-Installer le disque SSD dans le boîtier

7-Branchement et « câble management » (si on peut appeler ma configuration comme ça 😅)

Démarrer une première fois le PC

À l’allumage du pc, si ce dernier ne « s’allume pas », ne paniquez pas et pensez à revoir des petits détails tout simples comme le brancher sur la bonne prise hdmi ( oui c’est du vécu…. 😅)

Inspecter le BIOS

Après avoir allumé l’ordinateur, on inspecte le BIOS afin de vérifier la température de la carte mère et du processeur. Il faut faire « Supr » au démarrage et on a accès au BIOS. La touche à utiliser dépend de la carte mère, lisez la notice !

Installer un système d’exploitation

Avant d’installer le système d’exploitation (ici Windows 10), il faut créer une clé bootable (créé plus tôt) , que vous pouvez faire ici. Une fois cela fait, allumez votre pc (branché dans la bonne prise hdmi… 😅) avec la clé bootable dedans. Après avoir répondu à plein de questions de Windows et avoir rentré votre clé d’activation, votre ordi est fin prêt à être utilisé !

Découvrir

Les projets en spécialité NSI

L’enseignement de spécialité NSI a vocation à multiplier les occasions de mise en activité des élèves, sous des formes variées qui permettent de développer des compétences transversales. La réalisation de projets est un cadre naturel pour exploiter et réinvestir ses connaissances.

Un objectif du programme de spécialité NSI

  • faire preuve d’autonomie, d’initiative et de créativité ;
  • présenter un problème ou sa solution,
  • développer une argumentation dans le cadre d’un débat ;
  • coopérer au sein d’une équipe dans le cadre d’un projet ;
  • rechercher de l’information, partager des ressources ;
  • faire un usage responsable et critique de l’informatique.

Un projet, c’est quoi exactement ?

Un projet est un ensemble d’activités organisées en étapes et permettant la réalisation d’un objectif défini et précis.

Un projet est caractérisé par :

  • Une durée limitée : Un projet à un début et une fin.
  • Des objectifs clairement définis : Le projet répond à une demande spécifique, les objectifs à atteindre devant être les plus clairs possibles
  • Des contraintes : Les moyens humains attribués pour atteindre les objectifs sont limités tout comme le délais de réalisation.

Les projets en classe de 1ère spé NSI au lycée Louis Pasteur

Au lycée Louis Pasteur d’Avignon, en classe de première, les élèves réaliseront 3 projets sur 5 semaines de cours.

Ces projets sont amorcés dans les 15 derniers jours précédents les vacances de la Toussaint, de février et de Pâques.

  • 2 semaines, en classe, les élèves créent des groupes et définissent leur projet. Il commencent la réalisation de leurs projet sur les heures de cours aidé des conseils de leurs enseignants.
  • 2 semaines, en classe, vacances scolaires, ils s’organisent pour travailler au sein du groupe et ils finissent leur projet. Dans un second temps, ils créent le compte rendu de leur projet sur nsi.xyz et ils préparent activement leur présentation orale.
  • La veille de la reprise des cours, ils proposent à la publication le compte rendu de leur projet sur le site internet nsi.xyz. Il sera alors évalué par les enseignants et publié dans 90% des cas.
  • 1 semaine, en classe, présentation à l’oral des projets aux autres élèves de spécialité NSI.

Thème des projets

Un thème commun est imposé pour chaque projet mais les élèves choisissent librement leur sujet. Le thème commun est juste un fil conducteur qui a pour objectif de les guider.

Quelques exemples de thèmes :

  • Créer un programme en python utile à un élève de lycée
  • Créer un programme en python qui fonctionne sur votre calculatrice
  • Créer un mini-jeu en python qui fonctionne sur votre calculatrice
  • Créer un site internet de 3 à 5 pages reliées par un menu de navigation sans exploiter ni template ni CMS
  • Créer un site internet en utilisant un Template HTML5UP et en y intégrant d’autres d’autres scripts javascripts.
  • Programmer des interactions avec une carte Arduino / micro:bit
  • Résoudre un problème algorithmique classique

Comptes rendus publiés par nos élèves

Ce sont les élèves qui rédigent librement les comptes rendus de leurs projets.

Les enseignants ne rédigent pas à la place des élèves ces comptes rendus, ils leurs donnent juste des conseils afin que le rendu soit acceptable.

Une très grande liberté dans la forme comme dans le fond est laissé aux élèves, il est juste exigé que cela soit intelligible et exploitable par un visiteur du site.

Découvrir

Présentation de la spécialité NSI

L’enseignement de spécialité de numérique et sciences informatiques (NSI) du cycle terminal de la voie générale vise l’appropriation des fondements de l’informatique pour préparer les élèves à une poursuite d’études dans l’enseignement supérieur, en les formant à la pratique d’une démarche scientifique et en développant leur appétence pour des activités de recherche.

Objectifs de la spécialité NSI

L’objectif de cet enseignement est l’appropriation des concepts et des méthodes qui fondent l’informatique, dans ses dimensions scientifiques et techniques.

Cet enseignement s’appuie sur l’universalité de quatre concepts fondamentaux et la variété de leurs interactions :

  • les données ,
  • les algorithmes,
  • les langages,
  • les machines.

Profils recherchés

La spécialité NSI est proposée au lycée Louis Pasteur aux élèves ayant choisi de préparer un baccalauréat général.

Cet enseignement de 4 heures par semaine en classe de première a lieu en salle informatique exclusivement, il prépare les élèves aux études scientifiques mais il peut aussi être suivi par des élèves ayant un profil plus littéraire.

Organisation des enseignements au lycée Louis Pasteur

L’enseignement de la spécialité NSI au lycée Louis Pasteur place l’élève au cœur du dispositif.

Chaque élève construit son propre cours, en partir de documents numériques préparés par les enseignants du lycée, chacun peut avancer à son rythme.

Environ 1/4 du temps scolaire est consacré à la réalisation du mini-projets ou de tutoriels.

Les projets et les tutoriels réalisés par nos étudiants donnent lieu à :

  • la rédaction d’un compte rendu, publié sur ce site
  • une présentation orale devant la classe, indispensable entrainement au grand oral du baccalauréat.

Projets

Quiz sur les fonctions en mathématiques en Python

Ce projet est un programme de mathématiques réalisé spécialité NSI (Numérique et Sciences de l’Informatique). Il est organisé sous forme de quiz et réalisé sur le logiciel Thonny.

Présentation du projet

Ce projet permet à un lycéen d’apprendre et de comprendre les différentes fonctions de mathématiques accessibles, généralement, à un élève de seconde (fonction carré, inverse, linéaire, affine et du second degré). Grâce à notre programme, les élèves s’entraînent et cela permet d’évaluer leur niveau. Celui-ci est composé de 11 questions (10 questions sur les fonctions et une question bonus de culture personnelle sur l’histoire des mathématiques). Une fois que l’élève a répondu à toutes les questions, il obtient une note sur 20 points (chaque bonne réponse rapporte 2 points et chaque mauvaise réponse n’apporte ni n’enlève de point).

Supports nécessaires à la réalisation du projet

Afin de réaliser notre projet, nous avons utilisé différents outils :

  • un ordinateur 
  • le logiciel Thonny que l’on peut télécharger sur un ordinateur gratuitement grâce à Internet

Difficultés rencontrées

Tout au long de notre programme, nous avons rencontré diverses difficultés :

  • des problèmes de programmation (dans les lignes de codes)
  • des problèmes dans la publication de cette article
  • des problèmes d’enregistrement qui nous ont parfois coûté de tout recommencer
  • des problèmes d’ordinateur qui surchauffe
  • etc…

Mais malgré toutes ces péripéties, tous nos problèmes ont été résolu avec plus ou moins de difficulté…

Notre programme

import random
score = 0
reponse= int(input("Bienvenue cher utilisateur, prêt à réviser les mathématiques ?\nPour oui, tapez 1 et sinon, tapez 0 : "))
if reponse == 0:
    print("Dommage ! Reviens quand tu seras prêt !")
elif reponse == 1:
    print("C'est parti, commençons !")
    y= input("Quelle est l'équation de f(x) pour une fonction linéaire ? \nf(x)=")
    if y != "ax":
        print("Tu as faux. Mais ne te décourage pas !")
    elif y == "ax":
        print("Bravo ! Continu comme ça.")
        score = score + 2
    chiffre= random.randint(2, 10)
    y2 = str(input("Donne moi l'équation de la fonction linéaire de coefficient directeur {} \nf(x)=".format(chiffre)))
    if y2 != ("{}x".format(chiffre)) :
       print("Tu t'es trompé ! C'est pas grave. Poursuis...")
    elif y2 == ("{}x".format(chiffre)) :
        print("Bravo, tu as raison ! Pousuivons...")
        score = score + 2
    y3= input("Quelle est l'équation de g(x) pour une fonction affine ? \ng(x)=")
    if y3 != "ax+b":
        print("Oh mince, tu as fait une erreur !")
    elif y3 == "ax+b":
        print("Félicitation tu as réussi !")
        score = score + 2
    chiffre2= random.randint(2, 20)
    y4 = str(input("Donne moi l'équation de la fonction affine de coefficient directeur {} et ayant pour ordonnée à l'origine {} \ng(x)=".format(chiffre, chiffre2)))
    if y4 != ("{}x+{}".format(chiffre, chiffre2)) :
        print("Nous avons confiance en toi ! Tu as faux mais tu vas y arriver.")
    elif y4 == ("{}x+{}".format(chiffre, chiffre2)) :
        print("Tu es un génie toi dit donc !")
        score = score + 2
    y5 = input("Quelle est l'équation du second degré h(x) ? \nh(x)=")
    if y5 != "ax²+bx+c" :
        print("Revoie ta leçon ce n'est pas la bonne réponse !")
    elif y5 == "ax²+bx+c" :
        print("Waaaouh quel talent !!")
        score = score + 2
    chiffre3= random.randint(0, 20)
    y6 = str(input("Donne nous l'équation du second degrès pour a= {}, b= {} et c = {} \nh(x)=".format(chiffre, chiffre2, chiffre3)))
    if y6 != ("{}x²+{}x+{}".format(chiffre, chiffre2, chiffre3)):
        print("Tu nous déçois !")
    elif y6 == ("{}x²+{}x+{}".format(chiffre, chiffre2, chiffre3)):
        print("Fantastique !")
        score = score + 2
    y7 = input("Quelle est l'équation de la fonction carré ? \ni(x)=")
    if y7 != "x²" :
        print("Mauvaise réponse !")
    elif y7 == "x²" :
        print ("Bonne réponse !")
        score = score + 2
    y8 = str(input("Quelle est l'équation de la fonction carré pour x= {} (non simplifiée) ? \ni(x)=".format(chiffre)))
    if y8 != ("{}²".format(chiffre)) :
        print("Retente ta chance !")
    elif y8 == ("{}²".format(chiffre)) :
        print("Bien joué !!")
        score = score + 2
    y9 = input("Quelle est l'équation de la fonction inverse ? \nj(x)=")
    if y9 != "1/x" :
        print("Tu vas devoir révisé un peu plus toi...")
    elif y9 == "1/x" :
        print("Bravo ! Tu en a dans la tête toi dit donc...")
        score = score + 2
    y10 = str(input("Quelle est l'équation inverse pour x= {} ? \nj(x)=".format(chiffre)))
    if y10 != "1/{}".format(chiffre) :
        print("C'est pas terrible tout ça")
    elif y10 == "1/{}".format(chiffre) :
        print("Amazing !!")
        score = score + 2
    print("Question bonus...")
    reponsee= input("A quel siècle le mathématicien français François Viète a-t-il proposé une définition des fonctions par des formules et non à partir de tables et de graphiques ? \n")
    if reponsee == "17eme siècle" or reponsee == "17eme":
        print("Waouh ! Quelle personne cultivée es-tu !")
        score = score + 2
    elif reponsee !="17eme siècle" or reponsee !="17eme"  :
        print("Ce n'est pas grave, c'est une question difficile...")
    print("Tu as une note totale de", score, "/20")
    print("Tu as fini ! A bientôt pour de nouvelles aventures...")

Explications du programme

Tout d’abord, avant de commencer l’explication, nous tenons à vous dire, que chaque virgule, parenthèse, alinéa, guillemet ou deux points sont très importants. S’il en manque ne serait-ce qu’un seul, le programme peut totalement « beuguer » et vous marquer « error » de partout (ceci est du vécu…☺).

Les couleurs ci-dessus se mettent automatiquement lorsque vous créez le programme sur Thonny mais celles-ci peuvent vous aider pour voir si vous avez oublié une lettre ou une parenthèse.

Commençons…

Dans un premier temps, il ne faut surtout pas oublier de mettre la ligne de codes 1 :

import random

car c’est grâce à elle que notre programme va nous donner des nombres aléatoires.

Nous l’utilisons à différents endroits mais prenons l’exemple, des lignes de codes suivantes (14, 15, 16 et 18 du programme). Il est écrit.

chiffre= random.randint(2, 10)
y2 = str(input("Donne moi l'équation de la fonction linéaire de coefficient directeur {} \nf(x)=".format(chiffre)))
if y2 != ("{}x".format(chiffre)) :
elif y2 == ("{}x".format(chiffre)) :

Nous avons, à la ligne de codes 14, créé une variable « chiffre » où l’on demande au logiciel de prendre un nombre aléatoire situé entre 2 et 10 compris :

chiffre= random.randint(2, 10)

La virgule, présente entre ces deux chiffres, sert à dire au logiciel de prendre n’importe quel nombre entre ceux-ci.

A la ligne de codes 15, nous utilisons « str » car c’est lui qui va nous permettre de convertir un nombre pris au hasard entre 2 et 10 en un caractère afin que l’on puisse l’utiliser dans la réponse. Les « {} » signifient le nombre aléatoire. Et pour que le logiciel comprenne, il ne faut pas oublier « .format(chiffre) » à l’intérieur des parenthèses pour dire que nous utilisons la variable « chiffre » :

y2 = str(input("Donne moi l'équation de la fonction linéaire de coefficient directeur {} \nf(x)=".format(chiffre)))

A cette même ligne de codes nous utilisons « \n » qui signifie « saut de ligne ».

Grâce à tout cela, nous pouvons voir qu’aux lignes de codes 16 et 18, nous utilisons le chiffre aléatoire donné comme étant un caractère.

Exemple : si le chiffre aléatoire donné est 3, nous pouvons écrire 3x comme réponse pour la fonction linéaire et cela fonctionne pour n’importe quel chiffre aléatoire.

Nous pouvons créer autant de chiffres aléatoires que l’on souhaite tant que toutes les variables sont citées « .format(chiffre, chiffre2, chiffre3) » —> ligne de codes 41 par exemple.

Ensuite, à la ligne de code 2, il est écrit :

score = 0

Ici, nous créons une variable qui se nomme « score » et qui est, au départ, égale à 0. A chaque bonne réponse de la part de l’utilisateur, nous allons marquer « score = score + 2 » (car rappelons-le, chaque bonne réponse rapporte 2 points) comme à la ligne de code 13, ou encore la 20.

Nous allons ensuite créer une deuxième variable, qui se nomme « reponse » à la ligne de codes 3 :

reponse= int(input("Bienvenue cher utilisateur, prêt à réviser les mathématiques ?\nPour oui, tapez 1 et sinon, tapez 0 : "))

Ici nous demandons à l’élève de répondre à une question par des chiffres (s’il est prêt à réviser les mathématiques, il doit taper 1, sinon il doit taper 0).

Nous utilisons « int » et « input » à cette endroit car « input » sert à poser une question à laquelle le logiciel attend une réponse de la part de l’utilisateur et « int » parce que c’est un chiffre qu’il va écrire et non du texte (des caractères).

Après, nous pouvons voir aux lignes de codes 4 et 6 ceci :

if reponse == 0:
elif reponse == 1:

Pourquoi utilisons-nous « if » et « elif » ?

« If » signifie « si » et « elif » veut dire « sinon ». Retour ligne automatique
Ici nous disons au programme que si l’utilisateur répond 0, celui-ci devra écrire « Dommage ! Reviens quand tu seras prêt ! » sinon, si l’utilisateur écrit 1, celui-ci devra écrire « C’est parti, commençons ! ».

Attention : ne pas oublier le deux points à la fin de la ligne de codes de « if » et « elif » !! Après 2 points, il doit toujours y avoir un alinéa.

« Print » signifie imprimer, c’est à dire que l’on demande au logiciel de faire apparaître cette phrase mais que celle-ci n’attend pas de réponse. C’est une affirmation.

Lorsqu’on pose une question (avec « input ») ou qu’on affiche du texte (avec « print »), on met tout le temps le texte entre parenthèses et entre guillemets.

A la ligne de codes 9, il est écrit :

if y != "ax":

Et à la ligne de codes 11, il nous pouvons lire :

elif y == "ax":

 » != » signifie différent et « == » signifie égal (on doit toujours en mettre 2 !)

Puis, aux lignes de codes 73 et 76, nous utilisons « or » qui signifie « ou ». Cela permet de proposer plusieurs réponses justes car le résultat peut, ici, être écrit de deux manières différentes :

if reponsee == "17eme siècle" or reponsee == "17eme":
elif reponsee !="17eme siècle" or reponsee !="17eme"  :

Pour finir, voyons ensemble la ligne de codes 78 :

print("Tu as une note totale de", score, "/20")

A cet endroit, le logiciel donne le score total des points obtenus c’est à dire des bonnes réponses fois deux (car chaque bonne réponse rapporte deux points). On marque donc la phrase, suivi de la variable (qui n’est pas du texte donc celle-ci n’est pas entre guillemets).

Conclusion

Nous espérons que toutes ces explications vous ont aidé et que grâce à cela notre programme est plus compréhensible pour vous. Maintenant, que vous êtes un génie de Python, vous pouvez faire les modifications que vous souhaitez pour vous l’approprier !!

Vous le voulez ? Et bien le voici…