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

Info-PCSI2
N.Véron-LMB-2014
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()
Affiche du texte, le contenu d’une
variable, …
il existe des caractères spéciaux
qui ne seront pas affichés :
\t : tabulation
\n : saut à la ligne
>>> print ("Bonjour le monde !")
Bonjour le monde !
>>> print("bonjour \n tout \t le monde")
bonjour
tout le monde
Afficher plusieurs variables à la fois :
>>> print ("x =", 1)
input
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 1
>>> elif condition 2:
>>> bloc d’instructions 2
.........
>>> elif condition (n-1):
>>> bloc d’instructions (n-1)
>>> else:
>>> bloc d’instructions 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.
Info-PCSI2
N.Véron-LMB-2014
Opérateurs de comparaison
Signification
Exemple
Résultat
==
est égal à
1 == 2
False
!= ou <>
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
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 :
>>> import math as m
>>> a = m.sin(pi/4)
A préférer car il peut y avoir une
autre fonction sin dans un autre
module
>>> from math import *
>>> a = sin(pi/4)
On a importé tout le module math
Ouvrir un nouvel éditeur et le sauvegarder dans la repertoire courant sous le nom : TP2_14-15
Pour executer le code tapé dans l’éditeur : F5
Pour executer un bloc de ligne en surbrillance : F9
Info-PCSI2
N.Véron-LMB-2014
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
Info-PCSI2
N.Véron-LMB-2014
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!')
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !