# Correction TP3 - Boucles - CPES
'''
#Exercice 1
for i in range(7):
    print(i)
#affiche les valeurs 0,1,2,3,4,5,6 (il y a bien 7 valeurs, commençant par 0 et qui s'arrête à 6)
for i in range(2,7):
    print(i)
#Même chose, mais commence à 2, finit à 6.
for i in range(2,13,3):
    print(i)
#Commence à 2, progresse de 3 en 3 et s'arrête à 12.

#Exercice 2
for i in range(1000):
    print(i)  #est censé afficher les valeurs entre 0 et 999
    if i>5:
        break

#Les valeurs affichées sont seulement 0, 1, 2, 3, 4, 5. La boucle est interrompue par BREAK

#Exercice 3
# for i in range(1,21):
#     print(f"Ligne {i}")
    #ou print("Ligne",i)
for i in range(20):
    print(f"Ligne {i+1}")

#Exercice 4
u=1
for i in range(50): #répète 50 fois ce qui suit :
    u=u*0.8 + 5
print(u)

#Exercice 5
u=1
S=u #Pour que la somme contienne aussi u0
for i in range(50):
    u=u*0.8 + 5
    S=S+u
print(u)



#Exercice 6 : Calcul de moyenne :
n = int(input("Entrer un nombre : "))
S=0
print(f"Vous allez saisir {n} valeurs")
for i in range(n):
   a = float(input("Entrer une valeur : "))
   S=S+a
print(f"La somme de vos valeurs est : {S}")
print(f"La moyenne vaut donc {S/n}")


#Exercice 7

u=float(input("Entrer le premier terme : "))
u0=u
n=0
while u<2*u0 :
    u=1.04*u
    n+=1
print(f"On a besoin de {n} répétitions pour doubler la valeur initiale")
#On a besoin de 18 répétitions pour doubler la valeur initiale quelle que soit la valeur initiale.

#Rmq : le nombre de tours pour doubler la mise ne dépend que de la raison et pas de la valeur initiale.


#Exercice 8 Programme de seuil
u=1
n=0
while u<20:
   u=u*0.8 + 5
   n+=1
   #n contient à la fin de la boucle le rang de la suite u(n) à partir duquel u(n) dépasse 20
print(f"Le nombre de répétitions avant de dépasser 20 est {n}")


#Exercice 9
from random import random
from math import floor
de=1
q=0
while de!=6:
    de = floor(6*random()+1) #simulation de lancer de dé
    q=q+1
print(q)

#Le programme simule des lancers de dé à 6 faces. Il affiche le nombre de lancers à partir nécessaires pour obtenir un "6".


'''


#Exercice 10
#q et r correspondent au quotient et au reste dans la division euclidienne de a par b

#Exercice 11 : suite de Collatz
u=3
n=0
#génération de la suite
while u!=1:
    if u%2==0:
        u=u//2
    else:
        u=3*u+1
    n=n+1
print(n)
#n contient à la fin le nombre d'itérations nécessaires pour aboutir à 1.
