Convertir une chaîne de caractère en un chiffre

Résolu/Fermé
nicolas63 - Modifié par mamiemando le 20/02/2013 à 01:45
 Prog - 13 nov. 2013 à 15:18
Bonjour,
je suis en terminale S, spé ISN et je dois coder un programme pour passer de la base décimale à la base shadok (4) en python.
Jusque la pas de problème.

Les problèmes commencent pour convertir les fameux "ga", "bu", "zo", "meu" du language shadok en 0, 1, 2, 3 ... en inversement...

Quelqu'un a t il une solution ?

Mon algo :

#ALGORITHME n°2 : PASSER DE LA BASE 4 AU DECIMAL      

def sha2dec():      
    n=input("Entrer le nombre en Shadok : ")      
    f=open("chaine.txt","w")      
    f.write(n)      
    f.close()      
    f=open("chaine.txt","r")      
    for GA in "chaine.txt":      
        "GA"=="0"      
    for BU in "chaine.txt":      
        "BU"=="1"      
    for ZO in "chaine.txt":      
        "ZO"=="22"      
    for MEU in "chaine.txt":      
        "MEU"=="3"      


    S=0      
    l=len(n)-1      
    for chiffre in n:      
        S=int(S+int(chiffre))*4**l      
        l=l-1      

print("Le nombre correspond à :",S) 

### ALGORITHME n°2 : PASSER DU DECIMAL A LA BASE 4      

def dec2sha():      
    n=input("Entrer le nombre en décimal : ")      
    res=[]      
    while int(n)>0:      
        res.append(str(int(n)%4))      
        n=int(n)//4      

    res.reverse()      
    return("".join(res))      
    for chiffre in res :      
        print("texte")    


# Partie n°3 : Choix de la fonction a executer

a=int(input("BONJOUR ET BIENVENUE SUR CE PROGRAMME.\nCe programme convertit les nombres de la base Shadok au décimal et inversement.\n Pour décimal --> Shadok, tapez 1. Pour Shadok --> décimal, tapez 2."))      
if a==1:      
    print(dec2sha)      
elif a==2:      
    print(sha2dec())   


Merci d'avance !

EDIT :
résolu !
Je vous laisse le script si ça vous intéresse !

def sha2dec():    
    a=input("Entrer votre nombre (Shadok) en minuscule : ")    
    b=a    
    b=b.replace('ga','0').replace('bu','1').replace('zo','2').replace('meu','3')    
    S=0    
    l=len(b)-1    
    for chiffre in b:    
        S=S+int(chiffre)*4**l    
        l=l-1    
    print(S)    

def dec2sha():    
    a=input("Entrer votre nombre (Décimal) : ")    
    res=[]    
    while int(a)>0:    
        res.append(str(int(a)%4))    
        a=int(a)//4    
    res.reverse()    
    return("".join(res))    

a=int(input("BONJOUR ET BIENVENUE SUR CE PROGRAMME.\nCe programme convertit les nombres de la base Shadok au décimal et inversement.\n Pour décimal --> Shadok, tapez 1. Pour Shadok --> décimal, tapez 2."))    
if a==1:    
    print(dec2sha())    
elif a==2:    
    sha2dec()  


EDIT :
CCM.net n'active pas les indentations par défaut, je vous laisse les rajouter de façon logique !

A voir également:

2 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
20 févr. 2013 à 01:45
Petite précision, pour avoir l'indentation il suffit d'encadrer ton code avec les balises codes. Pour cela sélectionne le code et clique sur le bouton <> au dessus de la boîte dans laquelle tu saisis ton message.
0
Bonjour, pourrait tu mettre le fichier programme en telechargement? J' ai pas l impression que ca marche en copier-coller :/
Merci!
0