Python V 2 TP 3
Exercices a rendre
Dans ce qui suit, on vous demande de rendre certains exercices. Pour ce faire veuillez procéder de la facon suivante, en respectant scupuleusement les indications:
- Envoyez vos exercices par mail a Olivier Dalle
- N’envoyez QU’UN SEUL MAIL contenant tous les exercices, a la fin de la seance.
- Votre mail doit comporter un sujet tel que le suivant suivant:
Sujet: PYTHON- Groupe AILE - TP2 - NOM Prenom
(ou vous remplacez NOM Prénom par les votres bien-sur!) - Attendez que O. Dalle vous confirme oralement qu’il a bien recu votre mail avant de quitter la salle
Exercice 1: la compréhension du verrouillage d’Android
A rendre: le code des questions 2, 5 (et 6 bonus optionnel pour les courageux)
Ces exercices sont inspirés de la rubrique de Cedric Beust concernant le Locking Pattern d’Android. Voir ici pour les details…
Question 1
Essayer de comprendre puis donner une explication précise sur ce que fait cette ligne de code présentée dans une solution en python:
Question 2
Construisez un petit programme qui utilise ce bout de code. Affichez le résultat en construisant une boucle qui utilise ce générateur entre 1000 et 1100.
Question 3
Poussons un peu plus que le concours de programmation…
Dans de nombreux cas, la sequence ‘20’ est interdite. Quelles sont les autres sequences interdites ? Construisez un tuple de ces séquences, que vous appelerez interdit
.
Question 4
Construisez à la main une version réduite du tuple précédent, appelé reduit
, sans les palindromes (si le tuple contient ‘20’, il ne doit pas contenir ‘02’)
Question 5
Ecrivez un programme qui construit un nouveau (pseudo-)tuple contenant la liste de palindromes, en partant du tuple reduit
, et seulement en utilisant la technique des compréhensions (generateurs).
Question 6 (difficile)
A l’aide de la technique des compréhensions, construisez un (pseudo-)tuple forbid
qui est l’union des éléments de la liste reduit
et de la liste des palindromes des éléments de reduit
.
Probleme 7 (facultatif)
Modifiez le programme de la question 2 pour éliminer les solutions qui contiennent les séquences du tuple forbid
Exercice 2: Exceptions
A rendre : le code des questions 1 et 2
Les exceptions en Python sont gérées à l’aide d’un bloc try - except - [else]
comme suit:
- try
- le bloc d’instruction susceptible de provoquer une erreur
- except
- que faire en cas d’erreur
- else
- que faire si aucune erreur (bloc facultatif)
Exemple d’utilisation:
try:
f = open(nomFichier, "r")
except:
print "Le fichier", nomFichier, "est inaccessible."
else:
print "L'ouverture s'est bien passée!"
Question 1
Ecrivez une fonction existe(fname)
qui utilise les exceptions pour tester si un fichier existe et retourne vrai ou faux selon le cas.
Question 2
L’instruction raise
permet provoquer explicitement une exception, comme dans l’exemple suivant:
if (not seq1) or (not seq2):
raise ValueError, "Les sequences en parametre ne doivent pas etre vides"
return [(x1, x2) for x1 in seq1 for x2 in seq2]
Expliquez le fonctionnement de ce code et en particulier la ligne de retour. Inspirez-vous en pour écrire une fonction prod_vec_scal(vec,scal) qui calcule le produit d’un vecteur de dimension quelconque par un scalaire.
Retour en haut de la feuille d’exercice
Exercice 3: Programmation graphique
Lisez la paragraphe 5.1.3 de cette feuille d’exercices (page 53, numerotée −44- ) puis faites l’exercice 5.2.2 un peu plus loin, page −48-.