# ###################################################### # # Programme 10_vers_2.py # # Ce programme demande un nombre en base 10 (entier ou # à virgule) et le convertit en base 2 # # Auteur : Jean-Christophe MICHEL # # Site Internet : http://python.gecif.net # # ###################################################### # ###################################################### # D E C L A R A T I O N D E S F O N C T I O N S # ###################################################### def dec_vers_bin_entier(n_dec): # conversion d'un nombre entier chaine_bin="" while n_dec//2>=1: chaine_bin=str(n_dec%2)+chaine_bin n_dec=n_dec//2 chaine_bin=str(n_dec%2)+chaine_bin return chaine_bin def dec_vers_bin_fractionnaire(n_frac): # conversion de la partie fractionnaire precision=20 i=0 ch="" while 0=1: n_frac=n_frac-1 ch=ch+'1' else: ch=ch+'0' return ch # ###################################################### # P R O G R A M M E P R I N C I P A L # ###################################################### n=input('Entrez un nombre en base 10 :') print('Vous avez saisie ',n) while not (n.count('.')<=1 and n.replace('.','').isdigit()): print("ERREUR : vous n'avez pas saisie un nombre en base 10") n=input('Entrez un nombre en base 10 (chiffres de 0 à 9 avec un point éventuel) :') print('Vous avez saisie ',n) if '.' in n: # nombre à virgule partie_entiere=int('0'+n.split('.')[0]) partie_decimale=float('0.'+n.split('.')[1]) print('Partie entière=',partie_entiere,' Partie décimale=',partie_decimale) print('Ce qui donne en base 2 :') print(dec_vers_bin_entier(partie_entiere)+'.'+dec_vers_bin_fractionnaire(partie_decimale)) else: # nombre entier n=int(n) print("Voici l'écriture de votre nombre en base 2 :") print(dec_vers_bin_entier(n))