Université Pierre et Marie Curie 2012-2013 Informatique Générale 1 Travaux Pratiques TD/TP no 1 Objectif(s) M Premiers programmes M Notions d’expressions, d’instructions. M Problèmes du typage. M Premières fonctions prédéfinies PARTIE CORRIG ÉE Exercice 1 – Evaluation interactives d’expressions Ouvrer un terminal et tapez la commande python. Evaluer chaque expression suivante en la recopiant et en tapant Entrée pour valider une ligne et compléter sur votre feuille les lignes vides avec les réponses données par python. Que répond python ? Pourquoi ? Remarque : tapez quit() pour fermer la session interactive de python. >>>2 >>>10.0/3 >>>"t"<"T" >>>2.5 >>>10/3.0 >>>"toto" < "Truc" >>>2,5 >>>float(10)/3 >>>false >>>2+3 >>>2.3 >>>False >>>20%3 >>>True and False >>>2<3 >>>toto >>>not True >>>(2<3) >>>"toto" >>>(2<3) and (3<4) >>>2==3 >>>"toto"2 >>>(2<3) and False >>>2=3 >>>"toto"+2 >>> "toto" and (2<3) >>>2==(10/5) >>>"toto"+"2" >>> ("t"<"T") and (2<3) >>>10/3 >>>"toto"+str(2) >>>2 + 3 >>>10%3 Exercice 2 – Introduction à la notion d’instructions et de variables Exécuter les instructions suivantes dans une session python interactive et compléter sur votre feuille les lignes vides avec les réponses données par python. InfoGen1 - 2012/2013 - TD/TP no 1 >>>x=3 >>>x=3 >>>print x >>>y=8 >>>y=8 >>>z=x+y >>>print x+y >>>z >>>z=x+y >>>print z >>>print z >>>print "resultat=z" >>>z=2 >>>print "resultat="+z >>>print z >>>print "resultat="+str(z) >>> res = x + y * z >>> print res >>>print "resultat=",z >>>print "resultat=%d" % z >>> res = x * y - z >>> print res >>> print "%d+%d=%d" % (x,y,z) >>> res = x - y ** z >>> print res >>> print "%d+%d=%d" % (y,x,z) >>>resultat=2.5 >>> res = x + y % z >>> print res >>>print "resultat=%d" % resultat >>> res = x / y * z >>> print res >>>print "resultat=%f" % resultat >>> res = float(x) / y * z >>> print res >>> res = float(x) * z / y >>> print res >>> res = float(x) / (y * z) >>> print res Exercice 3 – Introduction à l’utilisation de fonctions prédéfinies Exécuter les instructions suivantes dans une session python interactive compléter sur votre feuille les lignes vides avec les réponses données par python. >>>y=-10.2 >>>x=3.6 >>>bool(-2.3) >>>type(x) >>>abs(y) >>>bool(0) >>>int(x) >>>print y >>>bool("abcd") >>>y=abs(y) >>>type(x) >>>bool("GM3 rules!") >>>x = int(x) >>>print y >>>bool("") >>>type(x) >>>y=123.3456 >>>int(3.3) >>>round(y) >>>float(4) >>>round(y,2) c 2011/2012 Polytech’Paris page 2 sur 6 InfoGen1 - 2012/2013 - TD/TP no 1 >>>x=123.4567890123 >>>math.trunc(x) >>>help("math.floor") >>>math.trunc(x) >>>math.floor(x) >>>help("math.ceil") >>>math.floor(x) >>>math.ceil(x) >>>help("round") >>>import math >>>help("math.trunc") >>>print x Exercice 4 – Introduction à la saisie interactive Exécuter les instructions suivantes dans une session python interactive compléter sur votre feuille les lignes vides avec les réponses données par python. >>>print "bonjour" >>>print("bonjour") >>>raw_input "bonjour" >>>raw_input("bonjour") >>>raw_input() >>>help("raw_input") >>>raw_input("entrez votre age.\n") >>>x=raw_input("entrez votre age.\n") >>>print x >>>type(x) >>>print "votre age est %s" % x >>>print "votre age est %d" % x >>>x=int(x) >>>print "votre age est %d" % x Exercice 5 – Premier programme avec Python La saisie interactive d’expressions ou d’instructions dans un terminal a l’inconvénient de ne pas garder de trace de votre travail. Nous allons désormais écrire des programmes complets sous forme de fichiers texte (extension .py), et les exécuter ensuite. 1. Créer dans vos dossiers personnels un répertoire infogen1. Dans ce répertoire, créer un sous-répertoire TP1. Ouvrir l’éditeur gedit, recopiez-y le code ci-dessous et enregistrez futur programme sous le nom premierpg.py dans le sous-répertoire TP1. Exécutez le programme dans un terminal en vous plaçant dans le sous-répertoire en question et exécutez la commande python premierpg.py print("bienvenue dans votre premier programme python") nom=raw_input("Comment vous appelez-vous ?\n") print "bonjour %s !" % nom age=raw_input("quel age avez-vous ?\n") age=int(age) age=age+1 print "l’annee prochaine, vous aurez %d ans" % age c 2011/2012 Polytech’Paris page 3 sur 6 InfoGen1 - 2012/2013 - TD/TP no 1 2. Modifier votre programme pour ajouter l’en-tête de fichier et les commentaires suivants : ########################################### # TP1 - Exercice 1 # # # # Monprenom MONNOM # # Leprenomdemonbinome LENOMDEMONBINOME # # # ########################################### # -*- coding=latin-1 -*# Premier programme de bienvenue print("bienvenue dans votre premier programme python") nom=raw_input("Comment vous appelez-vous ?\n") print "bonjour %s !" % nom age=raw_input("quel age avez-vous ?\n") age=int(age) #conversion en entier age=age+1 #calcul de l’age print "l’annee prochaine, vous aurez %d ans" % age • Quelle est l’utilité des commentaires pour vous? pour votre binôme? pour le prof ? • A quoi sert la ligne commentée #-*- coding=latin-1 -*? Essayer de mettre des caractères accentués dans le code et de l’enlever pour constater la différence. Exercice 6 – Guillemets 1. Écrire un programme guillemets.py qui saisit le nom puis le prénom de l’utilisteur et qui affiche le texte suivant ton nom est machin, en remplaçant machin par le nom saisi. 2. Modifier le programme pour qu’il affiche ensuite le texte ton nom complet est "machin bidule", en respectant la place des guillemets et en remplaçant machin et bidule par les nom et prénom respectivement. Exercice 7 – Les cookies Recette de cuisine : ”Pour 12 cookies environ, battre 115g de beurre mou avec 120g de sucre en poudre jusqu’à ce que le mélange devienne clair. Ajouter 1 œuf et 1 cuillère à café d’extrait de vanille. Ajouter 175g de farine, et mélanger le tout avec 200g de pépites de chocol!at noir. Sur les plaques garnies de papier sulfurisé, déposer des petites boules de la préparation bien espacées, et faire cuire 10min à 180˚C. Laisser refroidir avant de déguster.” Écrire un programme cookies.py qui demande à l’utilisateur le nombre de cookies et qui affiche le texte de la recette actualisé en fonction du nombre de cookies. La fonction int() permet d’arrondir vers 0 pour les nombres d’œufs et de cuillère de vanille. PARTIE À RENDRE Exercice 1 – Jour de la semaine Ecrire un programme TP1 ex1.py qui calcule et affiche le numéro d’un jour de l’année à partir du numéro de la semaine et du numéro du jour dans la semaine et qu précise si ce numéro est pair. Le programme aura les affichages suivants: c 2011/2012 Polytech’Paris page 4 sur 6 InfoGen1 - 2012/2013 - TD/TP no 1 Numero de semaine? 2 Numero du jour de la semaine entre 1 et 7 ? 3 --> Jour numero 10 --> Ce nombre est-t-il pair ? True Exercice 2 – Opérateurs logiques Ecrire un programme TP1 ex2.py qui demande successivement deux valeurs booléennes A et B et qui retourne la valeur de l’expression logique suivante not(A or B) puis celle de l’expression not(A) and not(B). Indice: bool(int("0")) retourne la valeur booléenne False, et bool(int("1")) retourne la valeur booléenne True L’affichage produit est le suivant: Entrez la valeur de 0 Entrez la valeur de 1 "not (A or B)" vaut "not(A) and not(B)" A : B : False vaut False Qu’en déduisez-vous ? La réponse sera donnée en commentaire dans le fichier. Exercice 3 – Date de Paques Voici un algorithme permettant de calculer le jour du mois d’avril représentant le jour de Pâques1 . Algorithme 1 : Calcul du jour de Pâques. Données : M l’année considérée Sorties : P le nombre de jour à compter du 31 mars pour avoir le jour de Pâques 1 n = M − 1900; 2 a = (n mod 19) × 7 + 1 ; 3 b = a/19 Remarque : division entière ; 4 c = (11 × a − b + 4) mod 29 ; 5 d = n/4 Remarque : division entière ; 6 e = (n − c + d + 31) mod 7 ; 7 P = 25 − c − e ; 8 Afficher P 1. Écrire un programme TP1 ex3.py demandant l’année considérée et calculant (puis affichant) le nombre de jour à compter du 31 mars représentant le jour de Pâques. Par exemple, pour l’année 2013, vous afficherez : En 2013, le jour de Paques est le 21eme jour apres le 31 Mars. 2. Cet algorithme est-il correct ? Exercice 4 – What’s the date today ? 1. Décrire l’algorithme permettant de déterminer le nombre de jours J, d’heures H, de minutes M et de secondes S inclus dans un nombre total de secondes ST. On rappelle que : • une minute = 60 secondes • une heure = 60 minutes • une journée = 24 heures Ainsi, dans un total de 123 secondes, il y a 0 jour, 0 heure, 2 minutes et 3 secondes. Pour un total de 3610 secondes, il y a 0 jour, une heure, 0 minute et dix secondes. 1 http://fr.wikipedia.org/wiki/Calcul c 2011/2012 Polytech’Paris de la date de Pâques page 5 sur 6 InfoGen1 - 2012/2013 - TD/TP no 1 2. Écrire un programme TP1 ex4.py qui reprend l’algorithme précédent. Il demandera le nombre de secondes à l’utilisateur et affichera le résultat à l’écran. 3. Tester votre programme. 4. Que se passe-t-il si on entre un nombre négatif ? Exercice 5 – Soumission • Créer une archive en compressant votre répertoire TP1 au format ZIP. L’archive devra être nommée TP1 nom1 nom2.zip, où nom1 et nom2 sont les noms des binômes. • Soumettez votre archive avant la fin de la séance à votre chargé de TD/TP. Le sujet du mail sera de la forme: [GM3-infogen1] TP1 nom1 nom2 c 2011/2012 Polytech’Paris page 6 sur 6