PYTHON 2.7 TEST 2 D'ALGO 11/12/13
A PREMIER TRAVAIL
1. On donne le script suivant:
from random import*
def concat():
L=[1,2,3]
F=[4,5,6]
G=L+F
print G
QUESTIONS:
a. Qu'affiche finalement ce script?
b. Que faudrait-il modifier dans ce script pour que les deux listes L et F
soient demandées à celui qui lance le script?
c. Ce script étant écrit, dans la fenêtre window , que doit-on faire pour le lancer?
2. On considère le script suivant:
from random import*
def concat():
L=["Lundi","Mardi", "Mercredi","Jeudi","Vendredi","Samedi"," Dimanche"]
j=raw_input("Donnez un jour de la semaine" )
h=input("Précisez l'heure")
if j==L[6] or( j==L[5] and ( h< 8 or h>12) ):
print "Désolé mais c'est fermé"
else:
if ( 8<= h and h <=12) or ( 14<= h and h <=19):
print "C'est ouvert"
else:
print "Désolé mais c'est fermé"
QUESTIONS:
a. Pourquoi a-t-on mis raw_input ?
b. Quelle est la nature des éléments de la liste L.
c. Qu'est-ce que L[6] ?
d. Que signifie ( 8<= h and h <=12) or ( 14<= h and h <=19)
e. Quels sont les horaires d'ouverture?
B SECOND TRAVAIL
Voici un algorithme en Python 2 . 7
from random import*
def trim():
L=input("Entrer une liste de quatre prénoms " )
L1=input("Entrer un liste de quatre notes ")
L2=input("Entrer une seconde liste de quatre notes ")
M=[]
for i in range(0,4):
M.append((L1[i]+L2[i])/2.0)
L.insert(2*i+1,round(M[i],2))
print L
Vous êtes informé que round( 7.789456,2) donne 7.79
c-à-d arrondit au centième supérieur le nombre décimal 7.789456 et ne donne que deux décimales.
1. Quelles sont les valeurs successives de i ?
2. Que signifie M=[] ?
3. Qu'est-ce que L[0] ?
4. Pourquoi a-t-on divisé par 2.0 au lieu de 2 ?
Pouvait-on laisser 2 mais multiplier par 1.0 le numérateur
pour le même effet ?
5. Quel est l'effet produit par M.append((L1[i]+L2[i])/2.0) ?
6. Quelles sont les valeurs de 2*i+1 ?
7. Quel est l'effet produit par L.insert(5,round(M[2],2))?
8. Dans le cas où l'on entre,
L= ["Joe","Alice","Ronan","Silva"]
L1=[16,14,7,11]
L2=[12,15,13,9]
indiquer ce qu'affiche le script.
9. A présent la liste L1 est constituées de notes d'anglais et la liste L2
est la liste de notes d'informatique.
On admet que le coefficient de l'anglais est 3 et que le coefficient
de l'informatique est 8.
Modifier le script proposé pour avoir les moyennes pondérées des étudiants.
10. Que devrait -on changer si la classe comportait 24 étudiants?
-------------------------------------------------------------------------------------------------------------
REPONSE:
A PREMIER TRAVAIL.
1. a. Le script affiche:
>>> concat()
[1, 2, 3, 4, 5, 6]
>>>
b. Il faudrait insérer les deux lignes suivantes
à la deuxième et troisième ligne:
L=input("Donner une liste de trois valeur")
F= input("Donner une liste de trois valeur")
c. Il faut pour le lancer appuyer surla touche F5
l'enregitrer, enfin taper concat() puis Entrée.
2. a.Comme le jour à saisir est une chaîne on doit mettre raw_input.
b. Les termes de la liste L sont des chaînes.
c. L[6] est le 7 ième terme de la liste L.
C'est donc Dimanche.
d. La signification de ( 8<= h and h <=12) or ( 14<= h and h <=19)
est h comprise entre 8 heures et 12 heures au sens large ou
h comprise entre 14 heures et 19 heures au sens large.
e. Il apparaît que c'est fermé le dimanche et tous les jours avant 8 heures ou après 19 heures
ainsi qu'entre 12 heures et 14 heures strictement de même que le samedi parès 12 heures
B SECOND TRAVAIL
1. Les valeurs successives de i sont 0; 1 ;2 ; 3
2. M= [] signifie que M est la liste vide.
3. L[0] est le premier terme de la liste L. Il s'agit ici d'une chaîne
4. On a divisé par 2.0 au de 2 pour indiquer à Python 2.7 que l'on veut
un nombre décimal.
Toute à fait la multiplication du numérateur par 1.0 aurait produit le même effet.
5. L'effet produit par M.append((L1[i]+L2[i])/2.0)
consiste à ajouter à la fin de la liste M lamoyenne arithmétique
de i + 1 ième notes des listes L1 et L2.
6. Les valeurs de 2*i+1 sont : 1 ; 3 ; 5 ; 7
En effet:
Pour i = 0 2*i+1 = 1
Pour i = 1 2*i+1 = 3
Pour i = 2 2*i+1 = 5
Pour i = 3 2*i+1 = 7
7. L'effet produit par L.insert(5,round(M[2],2)) consiste
à mettre dans la liste L en sixième position le troisième terme de la liste M.
8. Le script affiche :
>>> trim()
Entrer une liste de quatre prénoms ["Joe","Alice","Ronan","Silva"]
Entrer un liste de quatre notes [16,14,7,11]
Entrer une seconde liste de quatre notes [12,15,13,9]
['Joe', 14.0, 'Alice', 14.5, 'Ronan', 10.0, 'Silva', 10.0]
>>>
Cela s'apparente à un bulletin trimestriel de notes
9. On peut considérer:
from random import*
def trim():
L=input("Entrer une liste de quatre prénoms " )
L1=input("Entrer un liste de quatre notes ")
L2=input("Entrer une seconde liste de quatre notes ")
M=[]
for i in range(0,4):
M.append((3*L1[i]+8*L2[i])/11.0)
L.insert(2*i+1,round(M[i],2))
print L
On obtient par exemple:
>>> trim()
Entrer une liste de quatre prénoms ["Joe","Alice","Ronan","Silva"]
Entrer un liste de quatre notes [16,14,7,11]
Entrer une seconde liste de quatre notes [12,15,13,9]
['Joe', 13.09, 'Alice', 14.73, 'Ronan', 11.36, 'Silva', 9.55]
>>>
10.Pour 24 étudiant il faudrait remplacer 4 par 24.
---------------------------------------------------------------------------