Programme Python multi-fonction constitué d’un jeu, de calculs en rapport avec des fonctions et d’un convertisseur informatique


Accueil > Projets > Programme Python multi-fonction constitué d’un jeu, de calculs en rapport avec des fonctions et d’un convertisseur informatique

Par Douhane N., Fernando L. en novembre 2019

Ce projet a été réalisé par des élèves en spécialité NSI du Lycée Louis Pasteur. Ils sont également les auteurs de ce compte rendu. Pour en savoir plus : Les projets en spécialité NSI

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

  1. #Voici le systeme de login
  2. def login():
  3.     username="LJ"
  4.     password="NADIM"
  5.     print("Enter username : ")
  6.     answer1=input()
  7.     print("Enter password : ")
  8.     answer2=input()
  9.     #Si les données rentré sont correctes, le systeme execute le menu principal
  10.     if answer1==username and answer2==password:
  11.         bonjour="""Bienvenue - Accès autorisé
  12.  
  13. """
  14.         for char in bonjour:
  15.             sys.stdout.write(char)
  16.             time.sleep(0.2)
  17.         menu1()
  18.     #Si les données rentré sont fausses, le systeme spam un msg  
  19.     else:
  20.         i = 0
  21.         while i < i + 1:
  22.             print("alert intrusion")
  23.  
  24.             i = i + 1

Télécharger

Le script est constitué de 10 fonctions :

- Le login (Défini par : login )
- Le menu principal (Défini par : menu1)
- Le menu des fonctions (Défini par : menu2)
- La fonction qui demande deux points sur une droite (Défini par : demande_de_points)
- L’option 1 qui donne le coefficient directeur et là décris (Défini par : option_1)
- L’option 2 qui donne le milieu I (Défini par : option_2)
- L’option 3 qui donne la distance des deux points (Défini par : option_3)
- L’option 4 qui donne l’équation de la droite (Défini par : option_4)
- Le menu des conversions informatiques (Défini par : menu_conversions_informatique)
- 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.

  1. #Le menu principal est composé de 3 options de continuation et une option qui "éteint" le scripte
  2. def menu1():
  3.     print("""
  4.  
  5. {MAIN MENU}""")
  6.     choice = input("""
  7. A: Les fonctions
  8. B: Les conversions informatiques
  9. C: Jeu
  10. D: Quitter
  11.  
  12.                      Veuillez entrer votre choix: """)
  13.     if choice == "A" or choice =="a":
  14.         demande_de_points()
  15.     elif choice == "B" or choice =="b":
  16.         menu_conversions_informatique()
  17.     elif choice == "C" or choice =="c":
  18.         jeu()
  19.     elif choice=="D" or choice=="d":
  20.         exit()
  21.     else:
  22.         print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D!")
  23.         print("Veuillez réessayer")
  24.         menu1()

Télécharger

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.

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

Télécharger

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.

  1. #Voici le menu des fonctions qui effectue des calculs en rapport avec la fonction affine
  2. def menu2():
  3.     print("""
  4.  
  5. {MENU DES FONCTIONS}""")
  6.     choice = input("""
  7. A: Coef directeur et direction
  8. B: Milieu I
  9. C: Distance deux points
  10. D: Equation de droite
  11. E: Retour
  12.  
  13. Veuillez entrer votre choix: """)
  14.  
  15.     if choice == "A" or choice =="a":
  16.         option_1()
  17.     elif choice == "B" or choice =="b":
  18.         option_2()
  19.     elif choice == "C" or choice =="c":
  20.         option_3()
  21.     elif choice=="D" or choice=="d":
  22.         option_4()
  23.     elif choice=="E" or choice=="e":
  24.         menu1()
  25.     else:
  26.         print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D E!")
  27.         print("Veuillez réessayer")
  28.         menu2()

Télécharger

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).

  1. #1ere option du menu des fonctions. Il calcul le coefficient directeur et nous décris son sens
  2. def option_1():
  3.     global X1, X2, Y1, Y2    
  4.     if X1==X2:
  5.         print("La courbe est parallèle à l'axe des ordonnées")
  6.         time.sleep(3)
  7.     elif Y1==Y2:
  8.         print("La courbe est parallèle à l'axe des abscisses")
  9.         time.sleep(3)
  10.     else:
  11.         coef_1=(Y2-Y1)
  12.         coef_2=(X2-X1)
  13.         coefficient_directeur=Fraction(coef_1,coef_2)
  14.         print('Le coefficient directeur est', coefficient_directeur)
  15.    
  16.         if coefficient_directeur<0:
  17.             print('La courbe est strictement décroissante')
  18.             time.sleep(3)
  19.        
  20.         elif coefficient_directeur>0:
  21.             print('La courbe est strictement croissante')
  22.             time.sleep(3)
  23.    
  24.     menu2()

Télécharger

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

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

Télécharger

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

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

Télécharger

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

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

Télécharger

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.

  1. #Voici le menu des conversions_informatiques qui effectue des calculs en rapport avec: Le decimal, le binaire, l'hexadecimal, l'octal
  2. def menu_conversions_informatique():
  3.     print("""
  4.  
  5. {Les conversions_informatiques}""")
  6.     choice = input("""
  7. A: Decimal vers octal
  8. B: Decimal vers binaire
  9. C: Decimal vers hexadecimal
  10. D: Binaire vers decimal sur 8 bits
  11. E: Retour
  12.  
  13. Veuillez entrer votre choix: """)
  14.  
  15.     if choice == "A" or choice =="a":
  16.         nombre_decimal=int(input('Votre nombre en base 2?'))
  17.         print(nombre_decimal,"en base 8 est", oct(nombre_decimal))
  18.         time.sleep(3)
  19.        
  20.     elif choice == "B" or choice =="b":
  21.         nombre_decimal=int(input('Votre nombre en base 2?'))
  22.         print(nombre_decimal,"en base 10 est", bin(nombre_decimal))
  23.         time.sleep(3)
  24.        
  25.     elif choice == "C" or choice =="c":
  26.         nombre_decimal=int(input('Votre nombre en base 2?'))
  27.         print(nombre_decimal,"en base 16 est", hex(nombre_decimal))
  28.         time.sleep(3)
  29.        
  30.     elif choice == "D" or choice =="d":
  31.         print("Ce programme marche seulement avec 8 bits")
  32.         binaire=input("Quel sont les 8 bits de votre nombre binaire?")
  33.         print("""
  34. """)
  35.         if len(binaire)!=8:
  36.             print("Donnez les 8 bits de votre nombre SVP")
  37.             time.sleep(1.5)
  38.             menu_conversions_informatique()
  39.            
  40.         else:
  41.             bit_1=int(binaire[0])*2**0
  42.             bit_2=int(binaire[1])*2**1
  43.             bit_3=int(binaire[2])*2**2
  44.             bit_4=int(binaire[3])*2**3
  45.             bit_5=int(binaire[4])*2**4
  46.             bit_6=int(binaire[5])*2**5
  47.             bit_7=int(binaire[6])*2**6
  48.             bit_8=int(binaire[7])*2**7
  49.            
  50.             print("Votre nombre décimal est ",(bit_1 + bit_2 + bit_3 + bit_4 + bit_5 + bit_6 + bit_7 + bit_8))
  51.            
  52.         time.sleep(3)
  53.     elif choice == "E" or "e":
  54.         menu1()
  55.        
  56.     else:
  57.         print("VOUS NE DEVEZ QUE CHOISIR ENTRE A B C D E!")
  58.         print("Veuillez réessayer")
  59.         menu1()

Télécharger

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

  1. #Voici un quiz qui calcul ton score
  2. def jeu():
  3.     score=0
  4.     print("Voici le quiz")
  5.     time.sleep(2)
  6.  
  7.  
  8.     rep_1=input("""En quelle année le premier jeu vidéo a-t-il été créé ?
  9. A: En 1856
  10. B: En 1962
  11. C: En 2005
  12. """)
  13.     if rep_1=="B" or rep_1=="b":
  14.         print("BRAVO")
  15.         score=score+1
  16.         print("score=", score)
  17.         time.sleep(1.5)
  18.     elif rep_1=="A" or rep_1=="a" or rep_1=="C" or rep_1=="c":
  19.         print("FAUX")
  20.         print("score=", score)
  21.         time.sleep(1.5)
  22.     else:
  23.         print("""
  24. Il fallait choisir entre A, B ou C
  25. """)
  26.    
  27.     rep_2=""
  28.     rep_2=input("""Quelle année voit l'invention de la "Game Boy" ?
  29. A: En 1969
  30. B: En 1979
  31. C: En 1989
  32. """)
  33.     if rep_2=="C" or rep_2=="c":
  34.         print("BRAVO")
  35.         score=score+1
  36.         print("score=", score)
  37.         time.sleep(1.5)
  38.     elif rep_2=="B" or rep_2=="b" or rep_2=="A" or rep_2=="a":
  39.         print("FAUX")
  40.         print("score=", score)
  41.         time.sleep(1.5)
  42.     else:
  43.         print("""
  44. Il fallait choisir entre A, B ou C
  45. """)
  46.    
  47.     rep_3=""
  48.     rep_3=input("""Quand es-que la DS est sortis?
  49. A: En 2002
  50. B: En 2005
  51. C: En 2008
  52. """)
  53.     if rep_3=="B" or rep_3=="b":
  54.         print("BRAVO")
  55.         score=score+1
  56.         print("score=", score)
  57.         time.sleep(1.5)
  58.     elif rep_3=="A" or rep_3=="a" or rep_3=="C" or rep_3=="c":
  59.         print("FAUX")
  60.         print("score=", score)
  61.         time.sleep(1.5)
  62.     else:
  63.         print("""
  64. Il fallait choisir entre A, B ou C
  65. """)
  66.    
  67.     rep_4=""
  68.     rep_4=input("""Quelle était la nationalité de Ralph Baer ?
  69. A: Anglaise
  70. B: Allemande
  71. C: Italienne
  72. """)
  73.     if rep_4=="B" or rep_4=="b":
  74.         print("BRAVO")
  75.         score=score+1
  76.         print("score=", score)
  77.         time.sleep(1.5)
  78.     elif rep_4=="A" or rep_4=="a" or rep_4=="C" or rep_4=="c":
  79.         print("FAUX")
  80.         print("score=", score)
  81.         time.sleep(1.5)
  82.     else:
  83.         print("""
  84. Il fallait choisir entre A, B ou C
  85. """)
  86.    
  87.     rep_5=""
  88.     rep_5=input("""D'où vient "Nintendo" ?
  89. A: Du Japon
  90. B: De la Chine
  91. C: D'Europe
  92. """)
  93.  
  94.     if rep_5=="A" or rep_5=="a":
  95.         print("BRAVO")
  96.         score=score+1
  97.         print("score=", score)
  98.         time.sleep(1.5)
  99.     elif rep_5=="B" or rep_5=="b" or rep_5=="C" or rep_5=="c":
  100.         print("FAUX")
  101.         print("score=", score)
  102.         time.sleep(1.5)
  103.     else:
  104.         print("""
  105. Il fallait choisir entre A, B ou C
  106. """)
  107.        
  108.     rep_6=""
  109.     rep_6=input("""En écriture binaire on utilise les symboles:
  110. A: 0 et 1
  111. B: -1 et 1
  112. C: 1 et 2
  113. """)
  114.  
  115.     if rep_6=="A" or rep_6=="a":
  116.         print("BRAVO")
  117.         score=score+1
  118.         print("score=", score)
  119.         time.sleep(1.5)
  120.     elif rep_6=="B" or rep_6=="b" or rep_6=="C" or rep_6=="c":
  121.         print("FAUX")
  122.         print("score=", score)
  123.         time.sleep(1.5)
  124.     else:
  125.         print("""
  126. Il fallait choisir entre A, B ou C
  127. """)
  128.  
  129.     rep_7=""
  130.     rep_7=input("""Un groupement de 8 bits s'appelle:
  131. A: Une brochette
  132. B: Un quintet
  133. C: Un octet
  134. """)
  135.  
  136.     if rep_7=="C" or rep_7=="c":
  137.         print("BRAVO")
  138.         score=score+1
  139.         print("score=", score)
  140.         time.sleep(1.5)
  141.     elif rep_7=="A" or rep_7=="a" or rep_7=="B" or rep_7=="b":
  142.         print("FAUX")
  143.         print("score=", score)
  144.         time.sleep(1.5)
  145.     else:
  146.         print("""
  147. Il fallait choisir entre A, B ou C
  148. """)
  149.        
  150.     rep_8=""
  151.     rep_8=input("""On peut coder sur un octet:
  152. A: 256 valeurs différentes
  153. B: 255 valeurs différentes
  154. C: 356 valeurs différentes
  155. """)
  156.  
  157.     if rep_8=="B" or rep_8=="b":
  158.         print("BRAVO")
  159.         score=score+1
  160.         print("score=", score)
  161.         time.sleep(1.5)
  162.     elif rep_8=="A" or rep_8=="a" or rep_8=="C" or rep_8=="c":
  163.         print("FAUX")
  164.         print("score=", score)
  165.         time.sleep(1.5)
  166.     else:
  167.         print("""
  168. Il fallait choisir entre A, B ou C
  169. """)
  170.        
  171.        
  172.     pourcentage=(100*score/8)
  173.     print("Tu as eu",pourcentage,"% de bonnes réponses")
  174.     if pourcentage==100:
  175.         print("BRAVO! Un score parfait")
  176.    
  177.     elif pourcentage==0:
  178.         print("Tu doit mieux faire")
  179.  
  180.     elif 0<pourcentage<=20:
  181.         print("C'est bof bof")
  182.  
  183.     elif 20<pourcentage<=50:
  184.         print("Tu peux faire mieux")
  185.    
  186.     elif 50<pourcentage<=80:
  187.         print("C'est bien")
  188.  
  189.     elif 80<pourcentage<100:
  190.         print("Avec un peu d'effort tu arriveras au 100%")
  191.        
  192.     time.sleep(3)
  193.     menu1()

Télécharger

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 :

  1. import sys
  2. import time
  3. from fractions import *

Télécharger

A la fin du programme, nous avons du mettre :

  1. login()
  2. menu1()
  3. menu2()
  4. demande_de_points()
  5. option_1()
  6. option_2()
  7. option_3()
  8. option_4()
  9. menu_conversions_informatique()
  10. jeu()

Télécharger

Afin de d’exécuter chaque fonctions.

Télécharger le programme :

projet_1.zip (ZIP - 3.2 ko)
projet_1.zip

Mots-clés