Pour s'entraîner
Combien de points sont affichés à l’exécution des ces deux programmes ? Expliquer.
Script n°1 | Script n°2 |
---|---|
------------------------------------------------------------------------------ |
------------------------------------------------------------------------------ |
Script n°1 | Script n°2 |
---|---|
Ce script permet d'afficher 200 points : 100 pour la première boucle for puis 100 pour la deuxième boucle for |
Ce script permet d'afficher 10^4 (ou 100 x 100) points. Pour chaque valeur de i prise entre 0 et 99 (soit 100 valeurs), la variable j permet d'afficher 100 points. |
Reprendre le programme de bataille navale de la partie Les notions élémentaires et le modifier afin de permettre à l’utilisateur de rejouer s’il le souhaite.
Intégrer le script initial dans une boucle while
dont la condition devra être vérifiée tant que l'on veut jouer
continuer = 1
while continuer == 1:
a = 4
b = 7
print("A vous de jouer")
x = int(input())
y = int(input())
if x == a and y == b:
print("Coulé")
else:
if x == a or y == b:
print("En vue")
else:
print("A l'eau")
reponse = input("Voulez-vous continuer o/n ?")
if reponse == "n":
continuer = 0
Cette solution a l'avantage de donner le choix à l'utilisateur de poursuivre ou bien de stopper le jeu selon la valeur de la variable
continuer
choisie.
while True:
a = 4
b = 7
print("A vous de jouer")
x = int(input())
y = int(input())
if x == a and y == b:
print("Coulé")
else:
if x == a or y == b:
print("En vue")
else:
print("A l'eau")
L'instruction while True
permet en fait de rentrer dans une boucle infinie. Cette solution permet donc à l'utilisateur de rejouer autant
de fois qu'il le veut mais ne permet pas d'arreter le jeu.
Écrire un programme affichant le première valeur entière k à partir de laquelle 3k > 10 000.
Pourquoi est-on certain de l’existence de cet entier k ?
while
. On a le choix dans la construction de la suite.
1ère possibilité :
k = 0
u = 1 # 3 puissance zéro = 1
while u <= 10000:
u *= 3 # ou bien u = u * 3
k += 1 # ou bien k = k + 1
print(k)
ou bien
k = 0
while 3**k <= 10000:
k += 1 # ou bien k = k + 1
print(k)
Écrire un programme permettant d’afficher toutes les tables de multiplication de 0 à 10.
for
.
for k in range(0,11,1):
for j in range(0,11,1):
print(k," *",j," =",k*j)
Écrire un programme permettant d’afficher les carrés et les cubes des 20 premiers entiers naturels non nuls.
while
ou une boucle for
.
1ère possibilité :
for k in range(1,21,1): #Le 1 en troisième argument est facultatif : il s'agit du pas
print(k,k**2,k**3)
ou bien
k=0
while k<21:
print(k,k*k,k**3)
k+=1
Écrire un programme qui affiche une table de conversion des sommes d’argent exprimées en euros et en dollars. La progression des valeurs sera géométrique comme dans l’exemple ci-dessous :
1 euros(s) = 1,1183 dollar(s)
2 euros(s) = 2,2366 dollar(s)
4 euros(s) = 4,4732 dollar(s)
8 euros(s) = 8,9464 dollar(s)
On s’arrêtera à 16 384 euros.
while
ou une boucle for
.
1ère possibilité :
k = 0
while 2 ** k <= 16384:
print(2**k,"euro(s) =",2**k*1.1183,"dollar(s)")
k += 1
ou bien
for k in range(0,15,1): # on va jusqu'à 2**14
print(2**k,"euro(s) =",2**k*1.1183,"dollar(s)")
Écrire un programme qui affiche une suite de 12 nombres dont chaque terme est égal au triple du précédent.
for
.
nombre = int(input("saisir votre nombre de départ : "))
for k in range(12):
print(nombre)
nombre *= 3
Écrire un programme qui calcule les 50 premiers termes de la table de multiplication par 13 et qui n’affiche que ceux qui sont multiples de 7.
for
et y insérer un test.
for k in range(50):
A = 13 * k
if A % 7 == 0:
print(A,"est multiple de 13 et de 7")
Écrire un programme qui affiche la suite de symboles suivante :
*
**
***
****
*****
******
*******
Si on utilise une boucle while
il faudra y intégrer une boucle for
.
Mais tout peut se réaliser avec une seule boucle for
...
1ère possibilité :
k=1
while k<8:
for j in range(1,k+1):
print("*",end="")
print()
k+=1
ou bien, plus efficace...
for k in range(1,8):
print(k * "*") #On utilise l'opérateur * (multiplication) entre deux objets de types
#différents : un entier et une chaîne de caractères.
Écrire un programme qui recueille au clavier les températures de 7 journées successives et calcule la température moyenne de la semaine.
Utiliser une boucle for
.
moyenne = 0
for jour in range(1,8,1):
print("Saisir la température du jour",jour)
T = float(input())
moyenne += T / 7
print("La température moyenne de la semaine est",moyenne)
for
.Question 1
from math import exp
for k in range(-4,5,1):
print("exp(",k,") =",exp(k))
Question 2
from math import exp
for k in range(-20,21,2):
print("exp(",k,") =",exp(k))
Question 3
from math import exp
for k in range(0,3):
for j in range(0,10):
print("exp(",k+0.1*j,") =",exp(k+0.1*j))
print("exp(3.0) =",exp(3))
ou encore
from math import exp
for k in range(0,31):
print("exponentielle de",k/10,"=",exp(k/10))
Question 4
from math import exp
k=0
# Ci-dessous,en théorie, <=3, mais ici 3.001
# pour contourner les erreurs d'arrondis successifs.
while k<=3.001:
print("exp(",k,") =",exp(k))
k+=0.1
Dans un conte américain, huit petits canetons s’appellent respectivement : Jack, Kack, Lack, Mack, Nack, Oack, Pack et Qack.
Écrire un script en trois lignes qui génère tous ces noms à partir des deux chaînes de caractères suivantes :
debuts = ‘JKLMNOP’
et fin = ‘ack’
Utiliser une boucle for
.
debuts,fin='JKLMNOP','ack'
for lettre in debuts:
nom = lettre + fin # concaténation de chaînes
print(nom)