Le Coin Wiki
d'Olivier Dalle
$WikiTagline
 

Les exercices donns sur cette page sont trs largement inspirs de ceux donns par Bob Cordeau et ses collgues 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 procder 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 Prnom 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 comprhension du verrouillage d’Android

A rendre: le code des questions 2, 5 (et 6 bonus optionnel pour les courageux)

Ces exercices sont inspirs de la rubrique de Cedric Beust concernant le Locking Pattern dAndroid. Voir ici pour les details

Question 1

Essayer de comprendre puis donner une explication prcise sur ce que fait cette ligne de code prsente 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 rsultat en construisant une boucle qui utilise ce gnrateur 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 squences, que vous appelerez interdit.

Question 4

Construisez la main une version rduite du tuple prcdent, 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 comprhensions (generateurs).

Question 6 (difficile)

A l’aide de la technique des comprhensions, construisez un (pseudo-)tuple forbid qui est l’union des lments de la liste reduit et de la liste des palindromes des lments de reduit.

Probleme 7 (facultatif)

Modifiez le programme de la question 2 pour liminer les solutions qui contiennent les squences du tuple forbid

Retour la page principale

Exercice 2: Exceptions

A rendre : le code des questions 1 et 2

Les exceptions en Python sont gres 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 passe!"

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, numerote −44- ) puis faites l’exercice 5.2.2 un peu plus loin, page −48-.

Retour en haut de la feuille d’exercice