Initiation à l’informatique I. Initiation à Python Université de Provence Licence Sciences et Technologies Année 2007-2008 Exercice I.1 (Python : programmes et interpréteur) 1. Ouvrez un terminal et lancez la commande python dans cette fenêtre. Le logiciel Python lance un interpréteur qui se comporte comme une super-calculatrice. Exécutez les commandes suivantes et commentez-les : >>> 3+2 5 >>> s=12 >>> print s*s 144 >>> pi Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name ’pi’ is not defined >>> from math import * >>> pi 3.1415926535897931 >>> cos (pi/3) 0.50000000000000011 Laissez cette fenêtre ouverte : elle servira à tester des commandes avant des les inclure dans un programme. 2. Dans une autre terminal, lancez la commande xemacs tp6prog1.py &. Ce terminal servira a exécuter les programmes. Remarquez que Emacs a reconnu un programme Python, par son extension .py et qu’il propose deux menus supplémentaires. Ecrivez le programme suivant et sauvez le. n= input(’Entrez un nombre while n!=0: print n%2 n=n/2 : ’) Exécutez-le grâce à la commande python tp6prog1.py. Observez et commentez. Exercice I.2 (Coder un nombre en base 2) 1. Exécutez les commandes suivantes dans l’interpréteur Python. Commentez. >>> s=’’ >>> s ’’ >>> s=s+’1’ >>> s ’1’ >>> s=s+’0’ >>> s ’10’ >>> s=s+0 Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: cannot concatenate ’str’ and ’int’ objects >>> s=s+str(2) >>> s ’102’ 1 La variable s contient des chaı̂nes de caractères. On peut concaténer des chaı̂nes avec l’opérateur +. La fonction prédéfinie str permet de transformer un entier en chaı̂ne de caractères. 2. Modifiez le programme précédent pour qu’il affiche le code en base 2 de l’entier saisi par l’utilisateur. Sauvez ce nouveau programme sous le nom tp6code2.py 3. Faites en sorte que le programme fonctionne également pour n = 0. 4. Ecrivez la partie codage dans une fonction dont l’entête sera def code2(n) et qui renverra une chaı̂ne de caractères. Le programme aura donc la forme suivante : def code2(n) ... n= input(’Entrez un nombre print code2(n) : ’) Exercice I.3 (Coder un nombre en base b) 1. Que faut-il modifier dans le programme précédent pour qu’il code un nombre en base 8 ? 2. Modifiez le programme précédent pour qu’il code un nombre dans une base b comprise entre 0 et 10. Le programme aura la forme suivante : def codeb(n,b) ... n= input(’Entrez un nombre : ’) b= input(’Entrez une base : ’) print codeb(n,b) Exercice I.4 (Coder un nombre en base 16) 1. Dans l’interpréteur, exécutez les commandes suivantes et commentez-les. >>> ord(’A’) 65 >>> chr(65) ’A’ >>> chr(12-10+65) ’C’ La fonction prédéfinie ord calcule le code ASCII d’un caractère et la fonction chr procède au calcul inverse. 2. Ecrivez une fonction chiffre16(n) qui prend en entrée un nombre compris entre 0 et 15 et retourne le chiffre correspondant en base 16. 3. Ecrivez une fonction code16(n) qui code un nombre en base 16. 4. Ecrivez une fonction code1116(n,b) qui code un nombre n dans une base b comprise entre 11 et 16. 5. Ecrivez une fonction qui code un nombre n dans une base b comprise entre 2 et 16. 2