Enseignements

Python V 2 TP 3

Les exercices donnés sur cette page sont très largement inspirés de ceux donnés par Bob Cordeau et ses collègues de l’IUT d’Orsay dans cette feuille d’exercices.

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:

  1. Envoyez vos exercices par mail a Olivier Dalle
  2. N’envoyez QU’UN SEUL MAIL contenant tous les exercices, a la fin de la seance.
  3. 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!)
  4. 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:

(i for i in xrange(start, end) if len(str(i)) == len(set(str(i))))

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

Retour à la page principale

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:

nomFichier = raw_input("Entrez un nom de fichier : ")
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:

def produitCartesien(seq1, seq2):
    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-.

Retour en haut de la feuille d’exercice

Page d’Accueil

Enseignements 2017-18

Enseignements Antérieurs

Recherche…

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki