Étiquette : Python

Projets

Calcul de la quantité de matière, tableau périodique des…

Le tableau périodique des éléments, également appelé tableau de Mendeleïev, classification périodique des éléments ou simplement tableau périodique, représente tous les éléments chimiques, associés à un numéro atomique.
La conception de ce tableau est généralement attribuée au chimiste russe Dmitri Ivanovitch Mendeleïev, qui, en 1869, construisit une table, différente de celle qu’on utilise aujourd’hui mais semblable dans son principe.
On peut également lire sur ce tableau les masses molaires des éléments.

Présentation du projet

Les calculs de quantité de matière étant au programme de seconde et qui sont utilisé régulièrement en travaux pratique de physique-chimie durant les différentes année de lycée. Nous avons souhaité grâce à ce programme vous rendre la tâche plus facile pour calculer simplement des quantités de matière.
Vous pouvez également faire des recherche dans le tableau par exemple en cherchant le symbole d’un élément grâce à son numéro atomique.

Pour ce programme, il était nécessaire de commencer par faire 2 listes. Une première avec tous les symboles atomiques, rangés dans le bon ordres pour que leur place dans la liste soit la même que leur numéro atomique, sachant que dans une liste la première valeur est attribué à 0, nous avons donc mis une valeur nul. Par exemple l’aluminium à le numéro atomique 13, c’est la 14ème valeur de la liste mais attribué au nombre 13 : Magique ! Puis nous avons fait une seconde liste avec exactement le même principe mais cette fois-ci avec les masses molaires des élément à la place des symboles. Grâce à cette organisation, la 14ème valeur de la seconde liste est attribué à la masse molaire de l’aluminium.

# premiere liste pour les symboles des éléments
symbole = ["", "H", "He", "Li","Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al",  "Si", "P", "S", "Cl", "Ar",
           "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr",
           "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe",
           "Cs", "Ba","La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu",
           "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn",
           "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr",
           "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg"]
 
# seconde liste pour les masse molaires
masseMol = [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40,
            39, 40, 45, 48, 51, 52, 55, 56, 59, 59, 64, 65, 70, 73, 75, 79, 80, 84,
            85, 88, 89, 91, 93, 96, 98, 101, 103, 106, 108, 112, 115, 119, 122, 128, 127, 131,
            133, 137, 139, 140, 141, 144, 145, 150, 152, 157, 159, 162, 165, 167, 169, 173, 175,
            178, 181, 184, 186, 190, 192, 195, 197, 201, 204, 207, 209, 209, 210, 222,
            223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 262,
            267, 268, 271, 272, 277, 276, 281, 280]


Nous avons ensuite créé plusieurs petits programmes qui effectues les différentes tâches possibles comme : chercher un symbole dans la liste grâce à son numéro atomique, chercher une masse molaire d’un élément grâce à son symbole puis deux calculs pour chercher une quantité de matière avec soit le symbole de l’élément soit son numéro atomique.

# premiere liste pour les symboles des éléments
symbole = ["", "H", "He", "Li","Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al",  "Si", "P", "S", "Cl", "Ar",
           "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr",
           "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe",
           "Cs", "Ba","La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu",
           "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn",
           "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr",
           "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg"]
 
# seconde liste pour les masse molaires
masseMol = [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40,
            39, 40, 45, 48, 51, 52, 55, 56, 59, 59, 64, 65, 70, 73, 75, 79, 80, 84,
            85, 88, 89, 91, 93, 96, 98, 101, 103, 106, 108, 112, 115, 119, 122, 128, 127, 131,
            133, 137, 139, 140, 141, 144, 145, 150, 152, 157, 159, 162, 165, 167, 169, 173, 175,
            178, 181, 184, 186, 190, 192, 195, 197, 201, 204, 207, 209, 209, 210, 222,
            223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 262,
            267, 268, 271, 272, 277, 276, 281, 280]
Télécharger

Nous avons ensuite créé plusieurs petits programmes qui effectues les différentes tâches possibles comme : chercher un symbole dans la liste grâce à son numéro atomique, chercher une masse molaire d'un élément grâce à son symbole puis deux calculs pour chercher une quantité de matière avec soit le symbole de l'élément soit son numéro atomique.

# définition de chaque fonction pour le menu
 
def fonction1() : #permet de trouver le symbole d'un élément grâce à son numéro atomique
    numero = int(input("Entrez le numero atomique : "))
    print("Le symbole de l'élément est", symbole[numero],".")
 
def fonction2() : #permet de calculer une quantité de matière grâce au numéro atomique
    numero2 = int(input("Entrez le numero atomique : "))
    masse = int(input("Entrez la masse en gramme : "))
    mol = masse/masseMol[numero2]
    print("Il y a", mol,"mol.")
 
 
def fonction3() :  #permet de trouver une masse molaire grâce au symbole de l'élément
    symb1 = input("Entrez le symbole de l'élément:")
    i = 0  
    while i < 113 :
        if symbole[i] == symb1 :
            print("La masse molaire est", masseMol[i],"g.mol-1.")
            break
        i = i + 1
 
 
def fonction4() : #permet de calculer une quantité de matière grâce au symbole de l'élément
    masse2 = float(input("Entrez la masse en gramme : "))
    symb2 = input("Entrez le symbole de l'élément : ")
    i = 0  
    while i < 200 :
        if symbole[i] == symb2 :
            mol2 = masse2/masseMol[i]
            print("Il y a", mol2,"mol.")
            break
        i = i + 1

Comme vous pouvez le voir sur le graphique ci-dessus, le nombre de ligne importe peu sur la qualité d’un programme. Au final, c’est celui qui aura réussi à simplifier le plus son programme avec le moins de lignes qui aura utilisé le plus d’astuces !
Vous pouvez d’ailleurs constater que nous avons modifié le code à plusieurs reprises (3 en réalité) dans le but de le rendre plus court.

Conclusion

Ce programme est simple d’utilisation et peut être utilisé par n’importe quel élève de seconde général ou bien des élève de première et terminale ayant pris spécialité physique-chimie.
Malgré la facilité d’utiliser ce programme il ne peut bien évidemment pas remplacer l’apprentissage des formules mais peut tout de même s’avérer utiles.

Je le veux

Projets

Programme Python multi-fonction constitué d’un jeu, de calculs en…

Script qui permet de faire des conversions et des calculs en rapport avec une fonction. Il contient aussi un quiz.

Lors de l’execution du script, vous serez demandé d’introduire un identifiant et un mot de pass. Si celui-ci est correct, Le message « Bienvenue – Accès autorisé » s’affichera lettre par lettre. Sinon, un script tournera à l’infini spammera « alert intrusion ». Ce system est défini par la fonction « login ». Voici les données qu’il faut rentrer pour accéder au programme :


USERNAME : LJ
PASSWORD : NADIM

#Voici le systeme de login
def login():
    username="LJ"
    password="NADIM"
    print("Enter username : ")
    answer1=input()
    print("Enter password : ")
    answer2=input()
    #Si les données rentré sont correctes, le systeme execute le menu principal
    if answer1==username and answer2==password:
        bonjour="""Bienvenue - Accès autorisé
 
"""
        for char in bonjour:
            sys.stdout.write(char)
            time.sleep(0.2)
        menu1()
    #Si les données rentré sont fausses, le systeme spam un msg  
    else:
        i = 0
        while i < i + 1:
            print("alert intrusion")
 
            i = i + 1

Le script est constitué de 10 fonctions :

- Le login (Défini par : login ) Retour ligne manuel
- Le menu principal (Défini par : menu1Retour ligne manuel
- Le menu des fonctions (Défini par : menu2Retour ligne manuel
- La fonction qui demande deux points sur une droite (Défini par : demande_de_pointsRetour ligne manuel
- L’option 1 qui donne le coefficient directeur et là décris (Défini par : option_1Retour ligne manuel
- L’option 2 qui donne le milieu I (Défini par : option_2Retour ligne manuel
- L’option 3 qui donne la distance des deux points (Défini par : option_3Retour ligne manuel
- L’option 4 qui donne l’équation de la droite (Défini par : option_4Retour ligne manuel
- Le menu des conversions informatiques (Défini par : menu_conversions_informatiqueRetour ligne manuel
- Le quiz (Défini par : jeu)

Explication de chaque fonctions :

LE MENU PRINCIPAL : Il propose l’option de continuer vers le menu des fonctions, vers le menu des conversions informatique et vers le jeu ou de quitter le programme.

#Le menu principal est composé de 3 options de continuation et une option qui "éteint" le scripte
def menu1():
    print("""
 
{MAIN MENU}""")
    choice = input("""
A: Les fonctions
B: Les conversions informatiques
C: Jeu
D: Quitter
 
                     Veuillez entrer votre choix: """)
    if choice == "A" or choice =="a":
        demande_de_points()
    elif choice == "B" or choice =="b":
        menu_conversions_informatique()
    elif choice == "C" or choice =="c":
        jeu()
    elif choice=="D" or choice=="d":
        exit()
    else:
        print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D!")
        print("Veuillez réessayer")
        menu1()

LA DEMANDE DE POINTS : Si vous choisissez de continuer vers le menu des fonctions, le nom de deux points et leurs coordonnées vous serons demander. Ces donnés seront utilisés pour l’option 1, 2, 3 et 4 du menu des fonctions.

#Cette fonction est executé avant que le menu des fonctions le soit. Il demande les coordonées de deux points sur une droite
def demande_de_points():
    global X1, X2, Y1, Y2, premier_point, deuxieme_point
    premier_point=input('Quel est le nom de ton premier point?')
    deuxieme_point=input('Quel est le nom de ton deuxieme point?')
    X1=int(input('Abscisse de '+ premier_point  +'= '))
    Y1=int(input('Ordonnée de '+ premier_point +'= '))
    X2=int(input('Abscisse de '+ deuxieme_point  +'= '))
    Y2=int(input('Ordonnée de '+ deuxieme_point +'= '))
    menu2()

LE MENU DES FONCTIONS : Il propose le coef directeur et la direction de la droite, de donner le milieu I des deux points, de donner leur distance et de calculer l’équation de la droite.

#Voici le menu des fonctions qui effectue des calculs en rapport avec la fonction affine
def menu2():
    print("""
 
{MENU DES FONCTIONS}""")
    choice = input("""
A: Coef directeur et direction
B: Milieu I
C: Distance deux points
D: Equation de droite
E: Retour
 
Veuillez entrer votre choix: """)
 
    if choice == "A" or choice =="a":
        option_1()
    elif choice == "B" or choice =="b":
        option_2()
    elif choice == "C" or choice =="c":
        option_3()
    elif choice=="D" or choice=="d":
        option_4()
    elif choice=="E" or choice=="e":
        menu1()
    else:
        print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D E!")
        print("Veuillez réessayer")
        menu2()

L’OPTION 1 : Elle calcule le coefficient directeur avec les variables globals X1, X2, Y1, Y2 et là décris, meme si elle est parallel à l’axe des abscisses (Si X1=X2).

#1ere option du menu des fonctions. Il calcul le coefficient directeur et nous décris son sens
def option_1():
    global X1, X2, Y1, Y2    
    if X1==X2:
        print("La courbe est parallèle à l'axe des ordonnées")
        time.sleep(3)
    elif Y1==Y2:
        print("La courbe est parallèle à l'axe des abscisses")
        time.sleep(3)
    else:
        coef_1=(Y2-Y1)
        coef_2=(X2-X1)
        coefficient_directeur=Fraction(coef_1,coef_2)
        print('Le coefficient directeur est', coefficient_directeur)
   
        if coefficient_directeur<0:
            print('La courbe est strictement décroissante')
            time.sleep(3)
       
        elif coefficient_directeur>0:
            print('La courbe est strictement croissante')
            time.sleep(3)
   
    menu2()

L’OPTION 2 : Elle calcule les coordonnées de I ((X1+X2)/2 ;(Y1+Y2)/2)

#2ieme option du menu des fonctions. Il calcul le milieu I des deux points sur la droite
def option_2():
    global X1, X2, Y1, Y2, premier_point, deuxieme_point
    milieu_coor1=(X1+X2)/2
    milieu_coor2=(Y1+Y2)/2
    print("""
 
""""Les coordonées de I sont ","(",milieu_coor1,";",milieu_coor2,")")
    time.sleep(3)
    menu2()

L’OPTION 3 : Elle calcule la distance des points avec « sqrt » importé de « math ». Soit sqrt((X2-X1)**2+(Y2-Y1)**2))

#3ieme option du menu des fonctions. Il calcul la distance de deux points
def option_3():
    global X1, X2, Y1, Y2, premier_point, deuxieme_point
    from math import sqrt
    distance_de_deux_points=print(str(premier_point),str(deuxieme_point),"=",sqrt((X2-X1)**2+(Y2-Y1)**2))
    time.sleep(3)
    menu2()

L’OPTION 4 : Elle calcule l’équation de la fonction grace aux coordonnées demandés.

#4ieme option du menu des fonctions. Il calcul l'équation de droite
def option_4():
    global X1, X2, Y1, Y2, premier_point, deuxieme_point
    if X1==X2 or (Y2-Y1)/(X2-X1)==0:
        print("f(x)=",Y1 )
        time.sleep(3)
        menu2()
    else:
        m=int(((Y2-Y1)/(X2-X1)))
        p=(m*X1-Y1)*(-1)
        print("f(x)=",m,'x+',p)
        time.sleep(3)
        menu2()

LE MENU DES CONVERSIONS INFORMATIQUE : Il peut passer les nombres décimaux vers l’octal, le décimal, le binaire et pass le binaire vers le décimal sur 1 octet. Nous avons décider de ne faire q’une seul fonction pour cette catégorie.

#Voici le menu des conversions_informatiques qui effectue des calculs en rapport avec: Le decimal, le binaire, l'hexadecimal, l'octal
def menu_conversions_informatique():
    print("""
 
{Les conversions_informatiques}""")
    choice = input("""
A: Decimal vers octal
B: Decimal vers binaire
C: Decimal vers hexadecimal
D: Binaire vers decimal sur 8 bits
E: Retour
 
Veuillez entrer votre choix: """)
 
    if choice == "A" or choice =="a":
        nombre_decimal=int(input('Votre nombre en base 2?'))
        print(nombre_decimal,"en base 8 est", oct(nombre_decimal))
        time.sleep(3)
       
    elif choice == "B" or choice =="b":
        nombre_decimal=int(input('Votre nombre en base 2?'))
        print(nombre_decimal,"en base 10 est", bin(nombre_decimal))
        time.sleep(3)
       
    elif choice == "C" or choice =="c":
        nombre_decimal=int(input('Votre nombre en base 2?'))
        print(nombre_decimal,"en base 16 est", hex(nombre_decimal))
        time.sleep(3)
       
    elif choice == "D" or choice =="d":
        print("Ce programme marche seulement avec 8 bits")
        binaire=input("Quel sont les 8 bits de votre nombre binaire?")
        print("""
""")
        if len(binaire)!=8:
            print("Donnez les 8 bits de votre nombre SVP")
            time.sleep(1.5)
            menu_conversions_informatique()
           
        else:
            bit_1=int(binaire[0])*2**0
            bit_2=int(binaire[1])*2**1
            bit_3=int(binaire[2])*2**2
            bit_4=int(binaire[3])*2**3
            bit_5=int(binaire[4])*2**4
            bit_6=int(binaire[5])*2**5
            bit_7=int(binaire[6])*2**6
            bit_8=int(binaire[7])*2**7
           
            print("Votre nombre décimal est ",(bit_1 + bit_2 + bit_3 + bit_4 + bit_5 + bit_6 + bit_7 + bit_8))
           
        time.sleep(3)
    elif choice == "E" or "e":
        menu1()
       
    else:
        print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D E!")
        print("Veuillez réessayer")
        menu1()

LE QUIZ : Il comporte 8 questions et calcule ton score en pourcentage. Il fait 46% du script.

#Voici un quiz qui calcul ton score
def jeu():
    score=0
    print("Voici le quiz")
    time.sleep(2)
 
 
    rep_1=input("""En quelle année le premier jeu vidéo a-t-il été créé ?
A: En 1856
B: En 1962
C: En 2005
""")
    if rep_1=="B" or rep_1=="b":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_1=="A" or rep_1=="a" or rep_1=="C" or rep_1=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
   
    rep_2=""
    rep_2=input("""Quelle année voit l'invention de la "Game Boy" ?
A: En 1969
B: En 1979
C: En 1989
""")
    if rep_2=="C" or rep_2=="c":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_2=="B" or rep_2=="b" or rep_2=="A" or rep_2=="a":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
   
    rep_3=""
    rep_3=input("""Quand es-que la DS est sortis?
A: En 2002
B: En 2005
C: En 2008
""")
    if rep_3=="B" or rep_3=="b":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_3=="A" or rep_3=="a" or rep_3=="C" or rep_3=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
   
    rep_4=""
    rep_4=input("""Quelle était la nationalité de Ralph Baer ?
A: Anglaise
B: Allemande
C: Italienne
""")
    if rep_4=="B" or rep_4=="b":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_4=="A" or rep_4=="a" or rep_4=="C" or rep_4=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
   
    rep_5=""
    rep_5=input("""D'où vient "Nintendo" ?
A: Du Japon
B: De la Chine
C: D'Europe
""")
 
    if rep_5=="A" or rep_5=="a":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_5=="B" or rep_5=="b" or rep_5=="C" or rep_5=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
       
    rep_6=""
    rep_6=input("""En écriture binaire on utilise les symboles:
A: 0 et 1
B: -1 et 1
C: 1 et 2
""")
 
    if rep_6=="A" or rep_6=="a":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_6=="B" or rep_6=="b" or rep_6=="C" or rep_6=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
 
    rep_7=""
    rep_7=input("""Un groupement de 8 bits s'appelle:
A: Une brochette
B: Un quintet
C: Un octet
""")
 
    if rep_7=="C" or rep_7=="c":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_7=="A" or rep_7=="a" or rep_7=="B" or rep_7=="b":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
       
    rep_8=""
    rep_8=input("""On peut coder sur un octet:
A: 256 valeurs différentes
B: 255 valeurs différentes
C: 356 valeurs différentes
""")
 
    if rep_8=="B" or rep_8=="b":
        print("BRAVO")
        score=score+1
        print("score=", score)
        time.sleep(1.5)
    elif rep_8=="A" or rep_8=="a" or rep_8=="C" or rep_8=="c":
        print("FAUX")
        print("score=", score)
        time.sleep(1.5)
    else:
        print("""
Il fallait choisir entre A, B ou C
""")
       
       
    pourcentage=(100*score/8)
    print("Tu as eu",pourcentage,"% de bonnes réponses")
    if pourcentage==100:
        print("BRAVO! Un score parfait")
   
    elif pourcentage==0:
        print("Tu doit mieux faire")
 
    elif 0<pourcentage<=20:
        print("C'est bof bof")
 
    elif 20<pourcentage<=50:
        print("Tu peux faire mieux")
   
    elif 50<pourcentage<=80:
        print("C'est bien")
 
    elif 80<pourcentage<100:
        print("Avec un peu d'effort tu arriveras au 100%")
       
    time.sleep(3)
    menu1()

Certaine fonctions contiennent des moyens d’ »anti-bug », c’est à dire si l’utilisateur rentre une donnée fausse il serait prévenu pour qu’aucune erreur s’affiche.

Pour ce servir de certaine fonctions, comme sys.stdout.write(), time.sleep() ou Fraction(). Nous avons importer les modules suivants :

import sys
import time
from fractions import *

A la fin du programme, nous avons du mettre :

login()
menu1()
menu2()
demande_de_points()
option_1()
option_2()
option_3()
option_4()
menu_conversions_informatique()
jeu()

Afin de d’exécuter chaque fonctions.

Télécharger le programme :

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 !

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…