Info-PCSI2 TP n°2 : Premiers programmes Python 1. Quelques

publicité
Info-PCSI2
TP n°2 : Premiers programmes Python
1. Quelques principes généraux :
Dès que l’on écrit un programme d’une dizaine de lignes, il devient indispensable de le rendre parfaitement
lisible pour permettre à une autre personne de le comprendre et de le modifier ou bien pour soi-même le
reprendre plus tard. On veillera en particulier à:
- choisir des noms de variables parlants
- ajouter des commentaires en les précédant du symbole #.
2. Les commandes de base
 Les entrées/Sorties
print()
input
Affiche du texte, le contenu d’une
variable, …
>>> print ("Bonjour le monde !")
Bonjour le monde !
il existe des caractères spéciaux
qui ne seront pas affichés :
\t : tabulation
\n : saut à la ligne
>>> print("bonjour \n tout \t le monde")
bonjour
tout
le monde
Afficher plusieurs variables à la fois :
>>> print ("x =", 1)
Demander une valeur à l’utilisateur :
Attention la variable ainsi définie est
une chaîne de caractère.
>>> valeur = input("entrez une
valeur :")
print(valeur)
 Les branchements conditionnels
On utilise une variable condition de type booléen.
>>> if condition1:
>>>
bloc d’instructions
>>> elif condition 2:
>>>
bloc d’instructions
.........
>>> elif condition (n-1):
>>>
bloc d’instructions
>>> else:
>>>
bloc d’instructions
1
2
(n-1)
n
Remarques :
-Seul le bloc en gras est obligatoire, le reste est optionnel
- L’instruction « elif » est une compression de « else if », qui signifie « sinon si »
C’est l’indendation qui définit les blocs d’instructions à exécuter si condition est vraie.
N.Véron-LMB-2014
Info-PCSI2
Opérateurs de comparaison
Signification
Exemple
Résultat
==
est égal à
1 == 2
False
n'est pas égal à
1 != 2
True
<
est strictement inférieur
1 < 2
True
>
est strictement supérieur
1 > 2
False
>=
est supérieur ou égal
1 >= 2
False
<=
est inférieur ou égal
1 <= 2
True
!=
ou <>
Il faut bien faire la différence entre le symbole de l'affectation "=" et le symbole de la comparaison "==".
 La boucle for :
>>> for compteur in itérable
>>>
bloc d’instructions
C’est l’indendation qui définit le corps de la boucle.
Les itérables en Python sont les types range, string, tuple et liste.
L’expression range(m,n,p) est défini de la façon suivante : son premier élément est m ; son plus grand élément
est n − 1; et l’élément venant après l’élément i est l’élément i + p. range(n) abrège l’expression range(0, n, 1)
 La boucle while
>>> while condition :
>>>
bloc d’instructions
Remarque : En cas de problème type boucle infinie, il est possible de sortir d’une boucle à tout moment à l’aide
de CTRL + C. Cela permet de forcer l’arrêt d’un programme.
C’est l’indendation qui définit le corps de la boucle.
3. Les modules complémentaires :
Au démarrage, Python dispose d’un petit nombre de fonctions permettant d’exécuter des programmes basiques. On
peut compléter la bibliothèque initiale en chargeant des modules. Par exemple pour utiliser la fonction sinus
présente dans le module math, on pourra écrire au choix :
>>> from math import sin
>>> a = sin(pi/4)
>>> import math as m
>>> a = m.sin(pi/4)
>>> from math import *
>>> a = sin(pi/4)
On a importé la seule fonction sinus.
A préférer car il peut y avoir une
autre fonction sin dans un autre
module
On a importé tout le module math
Le problème est qu’il y ait d’autres
fonction
oooov éditeur et le sauvegarder dans la repertoire courant sous le nom : TP2_14-15
Ouvrir
un nouvel
Pour executer le code tapé dans l’éditeur : F5
Pour executer un bloc de ligne en surbrillance : F9
N.Véron-LMB-2014
Info-PCSI2
Exercice 1 : Voici un programme Python
N = int(input(‘entrer un entier naturel : ‘))
for i in range(N) :
if i%2 = 0:
carre = i**2
else :
carre = 0
somme = somme + carre
print(somme)
a. A quelle question répond-t-il ?
b. Il comporte deux erreurs, lesquelles ?
c. Modifier ce programme pour qu’il détermine le nombre d’itérations nécessaires pour que somme > A, A entier
donné par l’utilisateur.
Exercice 2 : Que fait l’algorithme suivant ?
Données : a,b,c entiers relatifs
Si a > b alors
Si a>c alors
ma
Sinon
mc
FindeSi
Sinon
Si b>c alors
mb
Sinon
mc
FindeSi
FindeSi
Afficher m
a. Le traduire en Python, de sorte que a,b et c soient
entrés par l’utilisateur.
b. Le tester avec différentes valeurs de a,b et c.
c. Trouver un moyen de faire la même chose avec une
commande Python.
Exercice n°3 : sinus et cosinus
a. Ecrire un programme qui affiche la valeur de la somme : sin(1) + sin(2) + ...+ sin(100).
b. Le modifier pour qu’il affiche la valeur du produit : sin(1)*sin(2)*...*sin(100)..
c. Ecrire un programme qui affiche les entiers k de [-20,20] tels que sin(k) < cos(k)
d. Ecrire un programme qui affiche la valeur u100, lorsque u0 = 1 et k , uk+1 = sin(uk)
e. Ecrire un programme qui affiche le plus petit entier k>0 tel que sin(k) > 0,99.
Exercice n°4 : Un jeu
a. Ecrire un programme qui choisit un entier N au hasard entre 1 et 200, puis qui demande à l’utilisateur de rentrer
des entiers jusqu’à ce qu’il trouve N, en lui répondant « plus » ou « moins » pour chaque réponse erronée et en lui
donnant son « score » une fois N trouvé.
b. Quelle est la bonne stratégie pour gagner à ce jeu ? Essayer
c. Ecrire un programme qui inverse les rôles c’est à dire que c’est l’utilisateur qui choisit un nombre et c’est
l’ordinateur qui essaye de le trouver (la personne qui code le programme a su répondre à la question b.)
Aide : On pourra utiliser la fonction randint(a,b) du module random qui renvoie un entier au hasard entre a et b.
Correction de l’exercice 4
N.Véron-LMB-2014
Info-PCSI2
Correction
#Exercice4, jeu 1
import random as rd
N=rd.randint(1,200)
print('Vous devez devinez un nombre entier entre 1 et 200')
essai=0
score=0
while essai!=N:
essai=int(input('tentez votre chance: '))
score=score+1
if essai==N:
print('Bravo en ',score,' essais')
elif essai<N:
print('plus grand')
else:
print('plus petit')
#Exercice 4 jeu 2
print('choissez un nombre entre 1 et 200')
print('A chaque essai, répondez juste, plus ou moins')
a,b=1,200
print('je tente, ',int((a+b)/2))
essai=input('juste, plus ou moins? ')
if essai=='juste':
print('je suis trop fort')
else:
while essai!='juste':
if essai=='moins':
a,b=a,int((a+b)/2)
print('je tente, ',int((a+b)/2))
essai=input('juste, plus ou moins?')
else:
a,b=int((a+b)/2),b
print('je tente, ',int((a+b)/2))
essai=input('juste, plus ou moins?')
print('je suis trop fort!')
N.Véron-LMB-2014
Téléchargement