« Questions flash »
- Qu’affiche l’exécution de ce code ?
def cube(x): return x * x * x def diff(a, b): return b - a print(diff(2, cube(3))) def mystery(A, N): reponse = 0 while A < N: A = A ** 2 reponse += 1 return reponse print(mystery(3, 100)) print(mystery(100, 3))
Correction des exercices donnés mercredi pour aujourd’hui :
- créer ces listes en compréhension (oublié ? Voir exemple 3 de ce cours) :
[10, 8, 6, 4, 2, 0, -2, -4, -6, -8]
:['a', 'c', 'e', ... , 'y']
- créer ce dictionnaire :
{'A' : 0, 'B' : 1, ... , 'Z' : 25}
- avec une boucle
for i in range(26):
, - en compréhension.
- avec une boucle
- créer une fonction
mot_de_passe(a, b, c)
qui renvoie un mot de passe aléatoire constitué dea
lettres minuscules,b
lettres majuscules,c
chiffres.
On discute préconditions et postconditions et on en teste quelques unes avec la fonction assert()
, qu’on présente.
Reprise d’un ancien TP délaissé : décodage de CESAR en python
Objectifs :
- Réviser le parcours d’un texte avec une boucle,
- reparler code ASCII,
- faire un bon découpage fonctionnel,
- faire des tests dans notre programmation avec la fonction
assert()
, - utiliser un dictionnaire,
- qu’on construira en compréhension.
Beau programme !
Depuis lundi 20 janvier, on veut créer une fonction decode(texte, decalage)
qui prend en paramètre une chaîne de caractères texte
non accentuée et effectue le décodage de CESAR avec un décalage de decalage
.

Ici decalage
vaut 3
.
Cette fonction
- Crée un chaîne de caractères vide
resultat
, - parcourt la chaîne de caractères
texte
,lettre
parlettre
:- Si la
lettre
est une minuscule, on ajoute ou plutôt on concatène àresultat
une lettrenew
décalée dedecalage
. Attention, on doit tester si on dépasse lez
et sinon agir en conséquence ! - sinon si la
lettre
est une majuscule, on concatène àresultat
une lettrenew
décalée dedecalage
. Attention, là encore, on doit tester si on dépasse leZ
et sinon agir en conséquence ! - sinon on conserve la
lettre
et c’est elle qu’on concatène àresultat
.
- Si la
- renvoie la nouvelle chaîne
resultat
.
Je propose de la tester :
- d’abord avec des tests et l’instruction
assert
:# Des tests ! assert decode("", 5) == "" assert decode("Ac Z!", 5) == "Fh E!"
- puis avec ce texte à décoder :
"Lpz x'zno xcjpzooz yz kmjbmvhhzm zi ktocji kziyvio gzn xjpmn yz IND !"
Le tableau du jour :
Le code corrigé en cliquant sur « lire la suite » ci-dessous.
Pour demain, séance exceptionnelle (salle H.M.I. 13h22 – 15h17) :
- créer ce dictionnaire :
{'A' : 0, 'B' : 0, ... , 'Z' : 0}
- avec une boucle
for i in range(26):
, - en compréhension.
- avec une boucle
- créer une fonction
lit_et_affiche()
qui- ouvre un fichier texte «
texte.txt
» (en lecture) - l’affiche dans le shell.
- ouvre un fichier texte «
Deuxième partie du cours : travail sur le projetLaby
def decode(texte, decalage): """Renvoie une chaine de caractères décalés Attend une chaîne de caractères non accentués éventuellement vide : texte Un entier positif entre 0 et 25 : decalage Renvoie une chaîne de la même longueur avec des caractères décalés de ... decalage, et ramenés dans l'alphabet en revenant de 26si on dépasse z ou Z Garde les caractères non alphabétiques """ # Une chaîne vide à compléter au fur et à mesure resultat = "" # On parcourt la chaîne texte for lettre in texte : # décalage -> new est un code ASCII new = ord(lettre) + decalage if 65 <= ord(lettre) <= 90 : # si minuscule if new > 90 : # dépassement du z ? new -= 26 resultat += chr(new) # on rajoute le caractère décalé elif 97 <= ord(lettre) <= 122 : # si majuscule if new > 122 : # dépassement du Z ? new -= 26 resultat += chr(new) # on rajoute le caractère décalé else : resultat += lettre # on rajoute le caractère non décalé # On renvoie la nouvelle chaîne return resultat # Des tests ! assert decode("", 5) == "" assert decode("Ac Z!", 5) == "Fh E!" ################################################################### # Décodage de ce mot : mot = "Lpz x'zno xcjpzooz yz kmjbmvhhzm zi ktocji kziyvio gzn xjpmn yz IND !" for d in range(1,26): print(decode(mot, d)) ###########################################################
Mqa y'aop ydkqappa za lnkcnwiian aj lupdkj lajzwjp hao ykqno za JOE ! Nrb z'bpq zelrbqqb ab moldoxjjbo bk mvqelk mbkaxkq ibp zlrop ab KPF ! Osc a'cqr afmscrrc bc npmepykkcp cl nwrfml nclbylr jcq amspq bc LQG ! Ptd b'drs bgntdssd cd oqnfqzlldq dm oxsgnm odmczms kdr bntqr cd MRH ! Que c'est chouette de programmer en python pendant les cours de NSI ! Rvf d'ftu dipvfuuf ef qsphsbnnfs fo qzuipo qfoebou mft dpvst ef OTJ ! Swg e'guv ejqwgvvg fg rtqitcoogt gp ravjqp rgpfcpv ngu eqwtu fg PUK ! Txh f'hvw fkrxhwwh gh surjudpphu hq sbwkrq shqgdqw ohv frxuv gh QVL ! Uyi g'iwx glsyixxi hi tvskveqqiv ir tcxlsr tirherx piw gsyvw hi RWM ! Vzj h'jxy hmtzjyyj ij uwtlwfrrjw js udymts ujsifsy qjx htzwx ij SXN ! Wak i'kyz inuakzzk jk vxumxgsskx kt veznut vktjgtz rky iuaxy jk TYO ! Xbl j'lza jovblaal kl wyvnyhttly lu wfaovu wlukhua slz jvbyz kl UZP ! Ycm k'mab kpwcmbbm lm xzwoziuumz mv xgbpwv xmvlivb tma kwcza lm VAQ ! Zdn l'nbc lqxdnccn mn yaxpajvvna nw yhcqxw ynwmjwc unb lxdab mn WBR ! Aeo m'ocd mryeoddo no zbyqbkwwob ox zidryx zoxnkxd voc myebc no XCS ! Bfp n'pde nszfpeep op aczrclxxpc py ajeszy apyolye wpd nzfcd op YDT ! Cgq o'qef otagqffq pq bdasdmyyqd qz bkftaz bqzpmzf xqe oagde pq ZEU ! Dhr p'rfg pubhrggr qr cebtenzzre ra clguba craqnag yrf pbhef qr AFV ! Eis q'sgh qvcishhs rs dfcufoaasf sb dmhvcb dsbrobh zsg qcifg rs BGW ! Fjt r'thi rwdjtiit st egdvgpbbtg tc eniwdc etcspci ath rdjgh st CHX ! Gku s'uij sxekujju tu fhewhqccuh ud fojxed fudtqdj bui sekhi tu DIY ! Hlv t'vjk tyflvkkv uv gifxirddvi ve gpkyfe gveurek cvj tflij uv EJZ ! Imw u'wkl uzgmwllw vw hjgyjseewj wf hqlzgf hwfvsfl dwk ugmjk vw FKA ! Jnx v'xlm vahnxmmx wx ikhzktffxk xg irmahg ixgwtgm exl vhnkl wx GLB ! Koy w'ymn wbioynny xy jlialuggyl yh jsnbih jyhxuhn fym wiolm xy HMC !