En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour assurer le bon fonctionnement de nos services.
En savoir plus

ISN Spécialité TS

TD python sur la numération

Par YVES DHENAIN, publié le mardi 26 septembre 2017 09:24 - Mis à jour le mardi 26 septembre 2017 09:28

Le document téléchargeable ici

Programmation python

 

Présentation rapide

 

Python , à l’instar de php est un langage interprété souple et puissant. Il permet de développer des applications, tant au niveau de l’embarqué, que des serveurs et des stations de travail

 

Premières manipulations :tout ce qui brille n’est pas or

Nous développerons à l’aide de Geany, un éditeur de texte qui permet de lancer l’interprétation des scripts (programme).

 

1) Ouvrir Geany, copier les deux lignes suivantes :

#/usr/bin/python3

# -*- coding: utf-8 -*-

 

Enregistrer le fichier sous le nom exo0.py (dans un répertoire isn/python ) et taper F5

Le programme s’exécute dans une console et se termine avec le code 0 indiquant que tout c’est bien passé. Appuyer sur entrée pour fermer la console.

 

2) Commencer proprement

Enregistrer ce fichier sous le nom exo2.py. On va réaliser un programme permettant à l’utilisateur :
 

 

de saisir deux valeurs a et b

 

d’indiquer le cas ou a est plus grand que b

 

puis d’en faire la somme et l’afficher

 

Exécuter le programme en entrant les valeurs 5 et 4. Puis recommencez avec 5 et 11. ????

A l’aide du navigateur de fichiers, allez dans le répertoire contenant vos scripts.

Ouvrez un terminal en taper la commande python3 exo1.py entrer de nouveau 5 et 11 . Mieux ou moins bien ?

Dans le menu construire/ Définir les commandes de construction , modifier python en python3 dans les encadrés comme indiqué ci-dessous.

 

On peut maintenant corriger le code . L’erreur vient du mauvais typage de variables.

 

La fonction input traite la saisie clavier comme un chaîne de caractère, d’où classement alphabétique. !!

 

On modifie donc le code de la façon suivante lors de la saisie : a = int(input("entrez un nombre"))

 

La fonction int() permet de convertir une chaîne de caractère en entier.

 

Ha oui, mais que se passe-t-il si l’utilisateur ne saisit pas un entier ?

 

Modifier le code ainsi :

 

try :

a = int(input("entrez un nombre"))

except :

print(" il faut entrer un entier")

 

Tester le programme, en quoi est-ce mieux ?

 

Pourquoi n’est ce pas suffisant ?

 

 

Modifier le code ainsi :

 

Test = False

 

while not(Test):

try :

a = int(input("entrez un nombre"))

Test = True

except :

print(" il faut entrer un entier")

 

 

 

3) Un premier programme , le convertisseur binaire décimal

 

Dans un programme nommé exo2.py :

 

permettre à l’utilisateur de saisir un nombre binaire (ne pas tester la saisie)

 

récupérer la longueur de la chaîne de caractère saisie avec le fonction len () et la stocker dans une variable l.

 

réaliser une boucle while qui parcourt la chaîne de caractères en partant de la fin ( pourquoi ? ) .

On accède à un caractère d’une chaîne en utilisant la syntaxe machaine[x] ou x commence à 0 pour le premier caractère.

 

Pour élever un nombre 2 à la puissance n, on écrira 2**n. On appellera sortie le résultat.

 

En cas de problème, la solution est ici (se connecter à l’ENT avant)

http://bellevue-albi.entmip.fr/lectureFichiergw.do?ID_FICHIER=1506014934948

 

 

4) On va modifier le programme pour qu’il puisse maintenant convertir dans un sens ou dans l’autre.

Le plus simple sera d’utiliser une fonction pour chaque convertisseur.

On commence par demander quelle conversion désire l’utilisateur .

Méthode proposée

 

initialiser une variable booléenne q à false

faire une boucle de type while sur q

demander une saisie (variable commande)

si commande égal q ou Q n sort du programme avec une message cool

si commande = bd ,on traite binaire décimal

si commande = db , on traite décimal binaire

sinon on donne la doc d’utilisation des commandes

 

la structure python :

if toto :

action….

elif :

action autre …

 

else :

dernier choix

 

Sa solution ici

http://bellevue-albi.entmip.fr/lectureFichiergw.do?ID_FICHIER=1506014934951

 

5) On ajoute la fonction de traitement ...

 

#/usr/bin/python3

# -*- coding: utf-8 -*-

 

 

def convBinDec(a):

 

l=len(a)-1

n=0

sortie = 0

i = l

while i!=-1:

if a[i]=="1":

sortie=sortie+2**n

n=n+1

i=i-1

print (sortie)

return sortie

 

 

 

q = False

 

while not(q):

 

commande=input("Entrer bd ou db , q pour quitter ")

if commande == 'q' or commande == 'Q':

q = True

elif commande == 'bd':

b = input("entrez un nombre en binaire")

convBinDec(b)

elif commande == 'db':

print ("conversion decimal -> binaire")

else :

print("les commandes sont : ")

 

Le fichier ici

http://bellevue-albi.entmip.fr/lectureFichiergw.do?ID_FICHIER=1506014934952

Catégories
  • seances