- Question 1 :
Affichez 5 fois les 8 phrases qui suivent, une ligne vide devra être insérée entre la 8ème phrase et la 1ère du nouvel affichage : (un petit indice à été dissimulé dans le texte
)
afficher ces phrases est inutile
mais ça me fait un entrainement donc je le fais.
Je vais devoir faire avec une procédure
sinon je vais passer 100 ans à copier.
Je paris une apparition de la ligne 6.
Bien vu mais je vais arrêter là.
:'( 100 phrases affichées 5 fois aurait été plus clair.
Mais je pense que vous comprendrez le principe avec 8 phrases.
def affiche_phrases() :
print "afficher ces phrases est inutile"
print "mais ça me fait un entrainement donc je le fais."
print "Je vais devoir faire avec une procédure"
print "sinon je vais passer 100 ans à copier."
print "Je paris une apparition de la ligne 6."
print "Bien vu mais je vais arrêter là."
print ":'( 100 phrases affichées 5 fois aurait été plus clair."
print "Mais je pense que vous comprendrez le principe avec 8 phrases."
print ""
affiche_phrases()
affiche_phrases()
affiche_phrases()
affiche_phrases()
affiche_phrases()
- Question 2 :
En utilisant une fonction qui retourne la puissance de 10, affichez les nombres suivant à la puissance 10 : 1, 8, 6, 7, 17, 12, 10
def puissance10(x) :
return x*x*x*x*x*x*x*x*x*x
print puissance10(1)
print puissance10(8)
print puissance10(6)
print puissance10(7)
print puissance10(17)
print puissance10(12)
print puissance10(10)
Une fonction permettant de faire ce qui est demandé a déjà été réalisée, c'est la fonction pow du module math. (Pour avoir exactement le même résultat, transformer en entier avec int()).
import math
print math.pow(1,10)
print math.pow(8,10)
print math.pow(6,10)
print math.pow(7,10)
print math.pow(17,10)
print math.pow(12,10)
print math.pow(10,10)
- Question 3 :
D'après une étude, un individu posséde en moyenne 66 contacts sur sa messagerie instantanée.
Un individu posséde sur son ordinateur un virus qui infecte un contact s'il ne posséde pas de pare-feu. Créer une procédure qui indique le nombre de contacts qui seront infectés par cet individu. Cette procédure aura un paramètre correspondant au pourcentage de contact n'ayant pas de pare-feu (ex: 55 si 55% des contacts n'ont pas de pare-feu). Arrondissez le résultat avec round(x) pour avoir un résultat plus cohérent.
def nb_infecte(nb_sans_firewall) :
infecte = round(66*(nb_sans_firewall/100.0))
print infecte, "contacts seront infectés par cet individu."
nb_infecte(55)
- Question 4 :
Modifier la procédure de la question 3 afin de calculer le nombre de contacts pouvant être infectés en fonction du nombre de contact que posséde cet individu.
def nb_infecte(nb_contact, nb_sans_firewall) :
infecte = round(nb_contact*(nb_sans_firewall/100.0))
print infecte, "contacts seront infectés par cet individu."
nb_infecte(66,55)
- Question 5 :
Sans tester le code suivant :
def test(y):
global x
x -= 2
y += 10
printx,y
x = 5
y = 10
print x,y
test(y)
print x,y
x += 6
y -= 3
print "X vaut", x, "et Y vaut", y
Dites quelle réponse correspond au dernier affichage :
La bonne réponse est la C : X vaut 9 et Y vaut 7.
Pour le premier print, on obtient 5 et 10. Il n'y a pas de difficulté ici.
Ensuite on fait appel à la procédure test en passant le paramètre y. Le print affiche 3 et 20. Mais en sortant de cette procédure, on remarque par le print suivant que les valeurs ont changées surtout celle d'y. En effet la procédure récupère y par paramètre, ce qui veux dire que la procédure créer une nouvelle variable en copiant la valeur du y. Comme on travail sur une copie, la valeur du y original n'est pas modifié donc reste à 10. Remplacez les y dans la procédure par des A et vous verrez que l'affichage est identique.
Le x est par contre modifié car il est transformé en variable globale, c'est-à-dire une variable accessible de partout (en dehors et dans une fonction).
- Enoncé 1 :
Votre jeu utilise des procédures et fonctions présentes dans le module jeu.py:
- La procédure tournerDroiteAngle5() pour faire tourner un personnage de 5° vers la droite.
- La fonction angle5Droite() qui retourne la valeur de l'angle soit 5.
- La fonction avance(coordonneeX,coordonneeY,angle) retourne les coordonnes du personnage (une image) après modification. La modification se fait de 1 en 1. (ex: coordonneeX passe de 5 à 4 si l'angle vaut 0 (se déplace vers le haut), coordonneeX passe de 5 à 4 et coordonneeY passe de 5 à 6 si l'angle vaut 45 (se déplace en diagonale vers le nord est)
Vous devrez utiliser au moins l'une de ces fonctions(procédures) pour chaque question.
- Question 1 :
Créez une et une seule procédure permettant de tourner d'un quart de tour vers la droite soit 45°.
from jeu import tournerDroiteAngle5
def tourner45() :
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
- Question 2 :
Le programme peut gagner une ligne de code en ayant deux procédures. Créez ces deux procédures pour pouvoir tourner de 45°.
from jeu import *
def tourner15():
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
def tourner45():
tourner15()
tourner15()
tourner15()
- Question 3 :
Créez des procédures permettant de tourner à droite (90°), de faire un demi-tour (180°) et de tourner à gauche (270°).
from jeu import *
def tourner15():
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
def tourner45():
tourner15()
tourner15()
tourner15()
def tournerDroite():
tourner45()
tourner45()
def demiTour():
tournerDroite()
tournerDroite()
def tournerGauche():
demiTour()
tournerDroite()
- Question 4 :
Transformez ces procédures en fonctions pour quelles renvoient en plus la valeur de l'angle.
from jeu import *
def tourner15():
tournerDroiteAngle5()
tournerDroiteAngle5()
tournerDroiteAngle5()
return angle5Droite()*3
def tourner45():
angle = tourner15()
angle += tourner15()
angle += tourner15()
return angle
def tournerDroite():
angle = tourner45()
angle += tourner45()
return angle
def demiTour():
angle = tournerDroite()
angle += tournerDroite()
return angle
def tournerGauche():
angle = demiTour()
angle += tournerDroite()
return angle
- Question 5 :
Créez une fonction qui permet de courir, c'est à dire d'avancer de 3 en 3. Utilisez pour cela la fonction qui permet d'avancer de 1 en 1, c'est-à-dire avance() avec les paramètres (x,y,45) qui retourne x et y augmenté de 1.
from jeu import *
def courir(x,y,angle):
x,y,angle = avance(x,y,angle)
x,y,angle = avance(x,y,angle)
x,y,angle = avance(x,y,angle)
return x,y,angle