Chapitre 3

publicité
Informatique
TP1 Chapitre 3 : INSTRUCTIONS D'ENTREE/SORTIE – AFFECTATION DE VARIABLES
LES TYPES SIMPLES DE VARIABLES
I/ VARIABLES DE TYPE SIMPLE EN PYTHON (int, float, bool, str) :
QUELQUES PARTICULARITES A CONNAITRE
1/ Identificateur
L'identificateur correspond au nom de la variable. Il doit être explicite. Pour nommer une variable, il est possible d'utiliser :
– les lettres de l'alphabet en minuscules (a  z) ou en majuscules (A  Z) ;
– des chiffres (0  9) ;
– l'underscore (_) ; ne pas utiliser d'espace.
Le nom d'une variable commence par une lettre.
En Python, les noms de variables suivants sont interdits ("mots clés"):
and
as
assert
break
del
elif
else
except
from
global
if
import
None
nonlocal
not
or
True
try
while
with
class
False
in
pass
yield
continue
finally
is
raise
def
for
lambda
return
Lors de l'affectation d'une valeur à une variable, un espace mémoire est réservé dans la mémoire de l'ordinateur. Cet espace
mémoire est situé à une certaine adresse. Tant que la variable n'est pas réaffectée, l'adresse mémoire reste inchangée.
Taper :
>>> var = 72
>>> id(var)
Relever l'adresse de var en mémoire.
2/ Typage
Le typage correspond à la nature de la variable (booléen, nombre entier, nombre réel, etc).
On parle de typage statique lorsqu'il est nécessaire de définir le type d'une variable lors de sa création. On parle de typage
dynamique lorsque, par exemple, le type le mieux adapté est choisi automatiquement lors de l'assignation d'une variable.
En Python, le typage est dynamique, ce qui extrêmement confortable pour le programmeur !
Exemples à taper :
>>> nbBooleen = True
>>> nbEntier = 2
>>> nbReel = 3.456
>>> chaine = "coucou"
Rappel : type permet de déterminer le type d'une variable :
>>> type(nbBooleen)
Tester les instructions suivantes, en les exécutant les unes après les autres :
>>> y=5
>>> print('y est égal à', y)
>>> y=2*y
>>> print('y est égal à', y)
>>> z=2**y
>>> print('z est égal à', z)
>>> y==z
>>> print(y==z)
Quelles sont les valeurs prises par les variables y et z à l'issue de ces instructions ? Justifier.
Rq : L'éditeur colore de lui-même certains mots (mots réservés), qui sont des mots clés, des noms de fonctions (ici la fonction
print()), ou des noms de modules : cela s'appelle la coloration syntaxique. Ainsi, si un mot réservé n'est pas écrit correctement,
CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville
-1-
vous vous en rendrez compte facilement. ATTENTION : le langage Python est sensible à la casse, cela signifie que A et a sont 2
caractères différents. Par exemple, la fonction print() ne peut pas s'écrire Print().
3/ Conversion entre types
C'est assez simple, il suffit en général d'une syntaxe sous la forme type(donnees) .
Taper et noter le résultat :
>>> chaine = '123'
>>> int(chaine)+3
>>> float(chaine )+3
>>> str(23+12)
II/ MANIPULATION DES CHAINES DE CARACTERES
1/ Caractères d'échappement
 L'utilisation d'un antislash (caractère d'échappement) dans une chaîne de caractère entraîne un comportement particulier de cette
chaîne de caractères :
– \n provoque un retour à la ligne (retour chariot) ;
– \t provoque une tabulation ;
– \a provoque un bip système ;
– \" et \' permettent d'écrire un guillemet sans ouvrir ou fermer une chaîne de caractère ;
– \\ permet d'écrire un antislash.
Taper et noter le résultat :
>>> a = 64 ; b ="Pyrénées Atlantiques"
>>> print(a, ": \t", b)
>>> print(a, ": \n", b)
# Rq : le ";" permet de séparer 2 instructions
 Dans l'inspecteur d'objets, examiner l'utilité des arguments sep et end de la fonction print().
Tester et noter le résultat :
>>> a = 3
>>> print(2*a, a*a, a**10)
>>> print(2*a, a*a, a**10, sep='---')
>>> print(a, end='??') ; print(a)
>>> print(a, end='\n\n\n') ; print(a)
2/ Les manipulations à connaître
er
 ATTENTION : le 1 élément de la chaine CH est l'élément d'indice 0, il est repéré par CH[0].
 Manipulations de base sur des chaînes de caractères :
Tester les opérations suivantes avec (par exemple) les chaînes 'bonjour' et 'et bienvenue'. Affecter des valeurs à n, i, j, k.
Noter le résultat.
>>> s+t
# Concaténation des deux chaînes
>>> s*n
# Création d'une chaîne où s est copiée n fois
>>> s[i]
# Accès à l'élément d'indice i
>>> s[-1]
# Accès au dernier élément
>>> s[i:j]
# Partie ("slice") de l'élément i (inclus) à l'élément j
#(ATTENTION : l'élément j est EXCLU)
>>> s[i:j:k]
# Partie de l'élément i (inclus) à l'élément j (exclu) avec un pas de k
CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville
-2-
Informatique
>>> s[i::k]
# A tester
>>> s[:j]
# A tester
>>> s[4] = 'Z'
# A tester : remplacement de l'élément d'indice 4 ?
ATTENTION : une chaîne de caractères est immuable ; on ne peut la modifier.
Des fonctions bien pratiques sont déjà disponibles :
>>> len(s)
# Renvoie le nombre d'éléments de s
>>> max(s) ; min(s) # Renvoient maximum et minimum de s (selon le code ASCII en décimal)
Écrire une expression qui vérifie si une chaîne de caractères ch (non vide) commence par une majuscule et se termine par un point.
(Aide : utiliser la fonction str.isupper(ch) dont la description est disponible dans l'inspecteur d'objets.)
III/ EXERCICES D'UTILISATION DES VARIABLES DE TYPE SIMPLE, AVEC INSTRUCTIONS D'ENTREE-SORTIE
1/ Taper : nom = input('Quel est votre nom ?'). Entrer alors votre nom et demander d'afficher précisément la phrase
Bonjour votrenom, comment vas-tu ?, avec votre nom à la place de votrenom. Respecter les espaces grâce à sep !
2/ Ecrire, sans utiliser le chiffre 1, une suite d'instructions qui affiche la phrase : x est égal à 4+7, c'est-à-dire 11.
3/ Taper :
nombre=input('Entrer un nombre entier à deux chiffres ')
Evaluer ensuite les expressions 3*nombre et nombre + nombre. Conclusion ?
ATTENTION : La fonction input() renvoie toujours une chaîne de caractères.
4/ Ecrire un programme en Python qui demande à l'utilisateur de saisir deux variables entières puis calcule et affiche leur somme et
leur moyenne.
5/ Ecrire un programme qui prend en entrée le prix "TTC" d'une marchandise et affiche en sortie le prix "Hors Taxe" sachant que cet
article a une T.V.A. de 20,6%. On utilisera la fonction round().
6/ Ecrire un programme qui demande à l'utilisateur de saisir son année de naissance puis affiche son âge (nombre entier). L'année
courante sera mise dans une variable.
7/ Ecrire un programme qui prend en entrée un temps en secondes et affiche ensuite ce temps en jours, heures, minutes, secondes.
8/ Techniques de permutation de 2 variables
En Python, l'échange de deux variables est déjà programmé : il suffit d'écrire l'instruction a, b = b, a.
Mais ce n'est pas le cas dans la plupart des langages de programmation.
Ecrire un programme permettant d'échanger les valeurs de deux variables entières a et b, en utilisant une troisième variable.
Comment faire, si a et b sont des nombres, sans utiliser une variable supplémentaire et toujours sans utiliser l'instruction a, b =
b, a ?
9/ Mouvement vertical d'une balle
On étudie le mouvement vertical d'une balle lancée en l'air. Supposons que la position verticale de la balle à l'instant t est donnée
par y(t) = v0.t – ½.g.t2 , où v0 est la vitesse initiale et g l'accélération due à la gravité.
Ecrire un programme qui demande à l'utilisateur de saisir les valeurs de v0 et t puis calcule et affiche la position y(t).
CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville
-3-
10/ Durée d'un trajet en train
Réaliser un programme qui demande à l’utilisateur l’horaire de départ de son train et son horaire d’arrivée, et qui affiche la durée du
trajet en minutes.
On suppose que l’utilisateur rentre les horaires sous le format : XXhYY (exemples : 19h51, 08h01).
Tester votre programme pour les entrées : départ 17h51 ; arrivée 19h38. Dans l’interpréteur, votre résultat doit exactement avoir la
présentation suivante :
>>>
Horaire de départ ? 17h51
Horaire d’arrivée ? 19h38
Votre trajet dure 107 minutes.
Quels sont les inconvénients de votre programme ? (Vous ne chercherez à les résoudre qu'à la fin complète de ce TP, s'il reste du
temps).
11/ Qu’est-ce qu’un bon mot de passe ?
Vu sur le site securite.informatique.gouv.fr :
« Un mot de passe est bon quand il exploite au maximum les possibilités de choix laissées par le mécanisme de déverrouillage pour
qu’il soit plus difficile à retrouver, soit directement, soit par "ingénierie sociale", soit à l’aide d’outils automatisés. Un mot de passe
est d’autant plus faible qu’il est court ou qu’il est composé à partir d’un alphabet réduit.
Sur un simple PC un outil de "craquage par force brute" mettrait environ 1 heure pour craquer un mot de passe de 8 caractères
alphabétiques [A-Z]. Mais il faudrait environ 1 mois à ce même PC pour craquer un mot de passe de 10 caractères alphabétiques ou
un mot de passe de 8 caractères alphanumériques [A-Za-z0-9].
Avec les capacités techniques actuelles, la taille d’un mot de passe doit être d’au moins 10 caractères non signifiants, composés de
lettres majuscules, minuscules, de chiffres et si possible de caractères spéciaux. »
En Python la fonction randrange() permet de générer des entiers de façon (pseudo)-aléatoire. Elle doit être importée du module
random.
Réaliser un programme dont l’exécution affiche aléatoirement un mot de 10 caractères composés de lettres majuscules, minuscules,
de chiffres et si possible de caractères spéciaux.
Rq : pour faire 10 fois la même instruction, on utilisera une "boucle" selon la syntaxe suivante :
for i in range(10):
instruction
CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville
-4-
Téléchargement