Skip to content
Snippets Groups Projects
Select Git revision
  • 7fd451174f7d3169d9ab769db4925b84d076ebd5
  • main default protected
  • adam
  • thomas
4 results

index.js

Blame
  • 08-conversion_exercices.py 2.71 KiB
    # 8 Conversion de types
    
    # Exercice
    
    # Écrire la fonction convertir(S) qui convertit son paramètre (un string) 
    # en un entier. Pour que la conversion soit possible, le paramètre S doit 
    # être être composé de chiffres éventuellement précédé d'un signe.
    
    def convertir(S) : # S est une liste de caractères
    
        # Il y a un signe au début ou pas ?
        signe= +1                                         # Initialisation du signe
        if S[0:1] in '+-':
            if S[0:1]=='-' : signe=-1
            S = S[1:]                                        # On enlève le signe
    
        if S.isdigit(): return int(S) * signe             # On peut aussi écrire : str.isdigit(xs) !
        else: return (S + " n'est pas un nombre")
    
    S=input('Donner  une chaine de chiffres: ')
    print(convertir(S))
    
    # Donner  une chaine de chiffres: -124
    # -124
    # Donner  une chaine de chiffres: 12a
    
    #  Une version qui n'utilise ni int() ni isdigit()
    def convertir02(S1) :       # S est une liste de caractères
        assert(S1 != '' and S1 != None)
        signe= +1                                       # Initialisation du signe
        val = 0; S=S1
        if S[0] in '+-':
            if S[0:1]=='-' : signe=-1
            S = S[1:]
        for car in S :
            if car in "0123456789": val = 10*val+ord(car)-ord('0')
            else : return (S1 + " n'est pas un nombre")
        return val * signe             # On peut aussi écrire : str.isdigit(xs) !
    
    S=input('Donner  une chaine de chiffres : ')
    print(convertir02(S))
    
    # Exercice
    # Écrire la fonction {\tt convertir2r(S)} qui convertit son paramètre (un 
    # string) en un réel (loat). Pour que la conversion soit possible, le
    # paramètre {\it S} doit être être éventuellement précédé d'un signe, puis 
    # composé de chiffres suivis d'un '.' puis une série de chiffres. La
    # présence d'un '.' est obligatoire, et qui est forcément suivi d'au moins
    # un chiffre.
    
    def convertir2r(S) :                       # S est une liste de caractères
        assert('.' in S)                        # '.' obligatoire
        lst_2_parties=S.split('.')              # une liste des 2 parties
        val_int=0
        if lst_2_parties[0] != '' : val_int=convertir02(lst_2_parties[0])
            
        # vérifier que la partie décimale ne comporte  pas un second signe !
        assert(lst_2_parties[1][0] not in '+-')
    
        val_reel=0
        if lst_2_parties[1] != '' : val_reel=convertir02(lst_2_parties[1])
    
        # La partie décimale s'ajoute ou se retrache suivant le signe de val_int'
        if val_int >= 0 :
            return val_int + val_reel/(10**len(lst_2_parties[1]))
        else : return val_int - val_reel/(10**len(lst_2_parties[1]))
    
    
    S=input('Donner  une chaine de chiffres (un réel) : ')
    print(convertir2r(S))
    convertir2r('12.34')
    convertir2r('0.12')
    convertir2r('13.0')
    convertir2r('-3.001')