je revois le cours d'IPT de PCSI pour préparer la PSI à la rentrée.
Le chapitre sur les boucles for et les test if contient plusieurs exemples que je comprends pas totalement, j'ai un niveau faible, si vous pouviez donc m'aider dessus
--
Code : Tout sélectionner
#Exemple5
def max(l):
m=l[0]
imax=0
for i in range (len(l)):
if m<l[i]:
m=l[i]
imax=i
return[imax,m]
c'est donc une fonctionqui prend en argument une liste l et qui donc la position et la valeur du 1er maximum de cette liste
ma prof a fait un tableau d'avancement pour cette fonction appliquée à [4,3,5,1,5] :
pour i=0, elle donne le tableau suivant : https://www.casimages.com/i/200806080918851301.png.html
pour i=0 c'est ok puisque on initialise à l[0]=4
mais pour i=1, on a l[1]=3<m donc ça veut dire que le programme ne verra pas les instructions du test if puisque la condition donnera False,
je vois pas pourquoi ma prof a décidé de garder max et imax aux mêmes valeur que i=0
pour moi on devrait rien mettre dans les cases i=1
-- autre exemple :
Code : Tout sélectionner
#Exemple6
def suite(n):
u=1
l=[u]
for i in range(1,n+1):
u=2*u+1
l.append(u)
return l
x=[n for n in range(11)]
y=suite(10)
plt.plot(x,y,'xk')
plt.show()
alors ici le compteur i de la boucle for n'intervient pas dans les instruction qui suivent la boucle for ! comment ça se fait ça ?? on a un compteur qui n'intervient même pas dans les instructions... ça me parait bizarre pcq cmt Python peut savoir s'il doit avancer d'un rang à chaque fois si le compteur n'intervient pas pour le dire...
j'aurais écrit qlqc comme :
Code : Tout sélectionner
def suite(n):
u[0]=1
l=[u]
for i in range(1,n+1):
u[i]=2*u+1
u=u[i]
l.append(u)
return l
x=[n for n in range(11)]
y=suite(10)
plt.plot(x,y,'xk')
plt.show()
merci de votre aide