Advertisement
Dushy

Mini Projet ISN, Bug Fix

Jan 30th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.53 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #Fonction verifiant si la variable est bien un entier, si la variable est bien un entier, alors la fonction retourne true, sinon elle donne False
  5. def IsInt(variable): ## [NOTE] on peut même vérifier s'il est positif
  6.     try:
  7.         int(variable)
  8.         return True
  9.     except ValueError:
  10.         return False
  11.  
  12. def IsIntPositif(variable): ## [NOTE] on peut même vérifier s'il est positif
  13.     try:
  14.         int(variable)
  15.         if int(variable)<0:
  16.             return True
  17.         else:
  18.             return False
  19.     except ValueError:
  20.         return False
  21.  
  22. #Fonction nous servant à inverser les digits d'un int 
  23. def reverse_int(nombre):
  24.     return int(str(nombre)[::-1])
  25. ## [NOTE]  on peut aussi inverser une chaine par :
  26. ## "".join(reversed(chaine))
  27.  
  28. #Fonction permettant de convertir du decimal au shadok
  29. def decimal_a_shadok(nombre_decimal):
  30.     quotient = nombre_decimal                               #Variable qui contiendra le quotient de la division euclidienne par 4
  31.     reste = 0                                               #Variable qui contiendra le reste de cette division.
  32.     base_shadok = []                                        #Liste qui contiendra la conversion du nombre base 10 en base 4
  33.     if quotient==0:                                         #Cas spécial ou le quotient vaut 0
  34.         base_shadok.append(0)                               #On insère 0 dans la liste du nombre Shadok
  35.     else:
  36.         while quotient > 0:
  37.             quotient = nombre_decimal // 4                    
  38.             reste = nombre_decimal % 4                          
  39.             nombre_decimal = quotient                      
  40.             base_shadok.append(reste)                       #Le reste entre dans la liste du nombre Shadok
  41.     base_shadok.reverse()                                   #On met le mot dans le bon sens
  42.     nombre_shadok = ["Ga","Bu","Zo","Meu"]                  #Liste contenant les lettres Shadok 0 = GA 1 = BU 2 = ZO 3 = MEU
  43.     return [nombre_shadok[loop] for loop in base_shadok]    #Retourne une liste nombre_shadok associant à chaque valeur de nombre_shadok son equivalent de la liste base_shadok
  44.  
  45. #Fonction permettant de convertir du Shadok à Décimal
  46. def shadok_a_decimal(mot_shadok):                          
  47.    mot_shadok = mot_shadok.replace("Ga","0")
  48.    mot_shadok = mot_shadok.replace("Bu","1")
  49.    mot_shadok = mot_shadok.replace("Zo","2")
  50.    mot_shadok = mot_shadok.replace("Meu","3")   #On remplace les différents "digits Shadok" par leur équivalence en chiffres
  51. ## [NOTE] l'idée de départ étati aussi de vous travailler sur l'analyse de la chaîne (parse)
  52. ## et de vous faire parcourrir la chaîne à la recherche des jetons (tokens)  "Ga", "Bu", "Zo" et "Meu"
  53. ## // d'où la proposition d'utiliser Me au lieu de Meu //
  54.    mot_shadok_conversion = []
  55.    if IsInt(mot_shadok):
  56.       mot_shadok = int(mot_shadok)
  57.       mot_shadok_conversion = list(str(mot_shadok))
  58.       nombre_final_shadok = 0
  59.       for boucle in range(len(mot_shadok_conversion)):
  60.          nombre_final_shadok = 4*nombre_final_shadok + int(mot_shadok_conversion[boucle])
  61. ## [NOTE] c'est dommage de travailler sur une chaîne pour finir par accéder caractère par caractère !
  62. ## mot_shadock en tableau contenant des 0, 1, 2, 3
  63. ## // et un tableau inversé s'obtient  simplement par reversed(mot_shadock)//
  64.    else:    #Si le mot n'est pas en Shadok, on retourne -1
  65.       nombre_final_shadok = -1
  66.    return nombre_final_shadok
  67.  
  68. while 1:    #Boucle infinie
  69.     patate = raw_input("Voulez vous convertir un nombre décimal à Shadok (1) ou un nombre Shadok à décimal (2) ? A moins que vous ne souhaitez quitter le programme (0)\n") #Choix du menu
  70.     if IsInt(patate):
  71.         if int(patate) == 1: #Décimal à Shadok
  72.             nombre_decimal = raw_input("Veuillez entrer le nombre decimal a convertir en Shadok :\n")
  73.             if IsInt(nombre_decimal): #Si la variable est bien un nombre
  74.                 nombre_shadok = decimal_a_shadok(int(nombre_decimal))
  75.                 if nombre_decimal<0:
  76.                     print "Ce n'est pas un nombre positif ou égal à 0 !\n" #Si le nombre n'est pas positif ou nul
  77.                 else:
  78.                     print "En Shadok, " + str(nombre_decimal) + " devient " + "".join(nombre_shadok) + "\n" #On effectue et on affiche le résultat
  79.             else:
  80.                 print str(nombre_decimal) + " n'est pas un nombre !\n" #Sinon il y'a conflit !
  81.         elif int(patate) == 2: #Shadok à Décimal
  82.            mot_shadok = raw_input("Veuillez entrer le mot en Shadok suivant ce modèle : GaBuZoMeu :\n")
  83.            mot_shadok_origine = mot_shadok
  84.            nombre_decimal = shadok_a_decimal(mot_shadok)
  85.            if IsInt(nombre_decimal):
  86.                if nombre_decimal == -1:
  87.                   print str(mot_shadok_origine) + " n'est pas un nombre en base Shadok, veuillez réesayer !\n"
  88.                else:
  89.                   print "En Décimal, " + mot_shadok_origine + " devient " + str(nombre_decimal) + "\n" #On effectue et on affiche le résultat
  90.            else:
  91.                print "Ce n'est pas en language Shadok ! Veuillez vérifier la saisie du texte\n"
  92.         elif int(patate) == 0: #Quitter le programme
  93.           print "Au revoir."
  94.           exit()
  95.         else: #Si ce n'est ni 1, ni 2, ni 0
  96.             print "Veuillez choisir soit 0, soit 1, soit 2, pas autre chose !\n"
  97.     elif patate == 'patate': #Easter egg
  98.         print("Voici un bel Easter Egg\n")
  99.     else:
  100.         print "Veuillez entrer un nombre !\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement