A partir de ce que je proposais dans mon dernier Post:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
# Liste des termes du langage des Shadocks
# liste globale réutilisable dans d'autres calculs
Shads=["GA","BU","ZO","MEU"]  
 
def convertBase10toShadocks(n):
    q=n                                #variable qui contiendra le quotient de la division euclidienne n//4
    r=0                                #variable qui contiendra le reste de cette division.
    Base4=[]                           #liste qui contiendra la conversion du nombre base 10 en base 4
    if q==0:                           #permet de traiter le cas où n=0
        Base4.append(0)                #valeur 0 entre dans liste Base4 
    else:
        while q>0:
            q=n//4                     #q reçoit le quotient de la division euclidienne n//4
            r=n%4                      #r reçoit le reste de la division
            n=q                        #n reçoit la valeur du quotient q
            Base4.append(r)            #la valeur du reste r entre dans liste Base4
    Base4.reverse()                    # On retourne la liste
    return [Shads[i] for i in Base4]   #On affecte la valeur du rang i de la liste Shads à la valeur correspondante de la liste Base4, et on stocke ceci dans la liste VocShad
 
def Test1():
    n = int(input("Entrez le nombre en base 10 : "))
    print(convertBase10toShadocks(n))
 
def Test2():
    print "Table de multiplication de BU MEU (7) en shadok)"
    for n in range(10):
        print convertBase10toShadocks(n+1), "X", convertBase10toShadocks(7), "=", convertBase10toShadocks(7*(n+1))
J'ai rajouté deux fonction de tests (dont un petit rappel du début de votre cursus scolaire )
Attention : Votre fonction de calcul retourne une liste et pas une chaîne de caractère, est-ce suffisant par rapport à la demande de votre prof ?

2 formats de chaînes peuvent convenir :
- les chiffres sont les uns après les autres, leur orthographe n'amène pas d'ambigüité
- les chiffres sont séparés par des espaces, c'est plus lisible mais il faut choisir une convention pour écrire 2 nombres Shadock l'un à côté de l'autre.

Pour transformer une liste en chaîne, renseignez-vous sur la méthode Join applicable sur une chaîne et prenant en paramètre une liste, ainsi on a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
>>> " ".join(["1","2","3","4"])
'1 2 3 4'
>>> "".join(["1","2","3","4"])
'1234'
La convention choisie influera sur la façon d'écrire la fonction de conversion inverse.