Bonjour,
J'ai un algorithme et je doit le changer en language Python mais j'ai beaucoup de mal avec Python. Pouvez-vous m'aider s'il vous plaît.
Pour (N allant de 3 à 50)
Pour (A allant de 2 à N-1)
P=(A/N)*(A-1/N-1) + (N-A/N)*(N-A-1/N-1)
Si P=0,5
Afficher A et N
Fin Si
Fin Pour
Fin pour
Bonjour,
c'est presque de la traduction mot à mot !
pour = for ... :
si =if ... :
afficher = print()
il y a juste quelques particularité
le for :
la syntaxe est for N in range(a, b), fera varier N de a à b, b exclus
c'est à dire la liste de valeurs a, a+1, ... b-1
les débuts et fin de boucle (de structures for, if, while etc) :
le début de boucle et marqué par les deux point en fin de ligne
et l'ajout de un niveau d'indentation
et la fin est traduite par le simple retour à l'indentation précédente
for ... :
bla bla
if ... :
bla bla
suite éventuelle du for, à l'extérieur du if
suite éventuelle à l'extérieur du for
non, pas du tout "et voila"
l'indentation et les ":" obligatoires
on exige d'écrire du Python , pas de le "raconter" de travers
l'indentation (décalages du début de ligne) est la base de la syntaxe Python.
"Là on met le calcul de p " non
ce calcul, il est à écrire explicitement !
(on ne raconte pas)
p et P ce n'est pas pareil
écrire le nom de cette variable partout de la même façon
le "si P = 0.5" n'a pas été traduit !!
il est d'autant plus indispensable que le "afficher" n'a lieu que si le test donne vrai !!
print A et N , non
print(A, N)
for N in range(3,51) :
for A in range(2):
P=A/N*(A-1)/(N-1) + (N-A)/N*(N-A-1)/(N-1)
if P==0.5 :
print (A,N)
indentations (espaces corrects en début de lignes) toujours absentes et fondamentales en Python
ce que tu as écrit c'est la traduction de :
pour N de 3 à 50
ne rien faire
fin pour
pour A de 0 à 1
ne rien faire
fin pour
P = etc
si P = 0.5
ne rien faire
fin si
afficher A et N
!!!
c'est exactement ce que veut dire le code Python si on supprime les indentations.
et ça n'a rien à voir avec l'algorithme de l'énoncé.
explications sur les indentations : voir mon message du 10-03-20 à 19:11
et de plus la boucle sur A ce n'est pas de 0 à 1 mais de 2 à N !
mettre des espaces là où ils sont obligatoires et correcteme,t
je n'avais pas dans mon exemple de principe écrit
for ... :
bla bla
if ... :
bla bla
suite éventuelle du for, à l'extérieur du if
suite éventuelle à l'extérieur du for
for ... :
bla bla
if ... :
bla bla
suite éventuelle du for, à l'extérieur du if
suite éventuelle à l'extérieur du for
For N in range (2,50)
P==A/N*(A-1)/(N-1) + (N-A)/N*(N-A-1)/(N-1)
For A in range (2,N)
P==A/N*(A-1)/(N-1) + (N-A)/N*(N-A-1)/(N-1)
if P==0.5
Print A,N
regarde mieux où sont les "fin de" de l'algorithme
le deuxième for doit être entièrement à l'intérieur du premier
le if à l'intérieur de ce deuxième for et le print à l'intérieur du if
c'est comme des parenthèses imbtiquées :
Pour (N allant de 3 à 50)
( Pour (A allant de 2 à N-1)
( P=(A/N)*(A-1/N-1) + (N-A/N)*(N-A-1/N-1)
Si P=0,5
( Afficher A et N
Fin Si) tout ceci est à l'intérieur du Si qui est dans le 2ème pour qui est dans le 1er pour
Fin Pour) tout ceci est dans le second Pour qui est dans le premier
Fin pour ) tout ceci est dans le 1er Pour
chaque niveau d'imbrication ajoute un décalage supplémentaire en Python
Bonjour à tous,
Pourriez-vous car je ré-essaye à chaque fois mais mon programme python marche toujours pas . J'aurais besoin de votre aide s'il vous plait.
Voila mon programme python:
for N in range (3,50):
for A in range (2,N-1):
P=((A/N)*(A-1)/(N-1)+ ((N-A)/N)*((N-A-1)/(N-1))
if P==0.5
print(A)
print(N)
*** message déplacé ***
on veut bien t'aider, mais à condition que tu respectes les règles du forum
or, le multipost est strictement interdit sur notre site
L'esprit d'observation est il indispensable pour faire quoi que ce soit ? oui !
observer précisément les espaces que j'avais mis dans mon exemple
surtout que si on tape ça dans EduPython par exemple, l'espace supplémentaire en "entrant" dans le for ou le if (si on n'oublie pas les ":" ) est fait automatiquement au passage à la ligne !!
et qu'il faut le faire exprès pour les supprimer ( = de rajouter volontairement une erreur) !
Bonjour à tous ,
pourriez vous m'aidez s'il vous plaît car j'ai cherché et je ne trouve pas mon erreur.
J'ai un programme python et il se bloque sur print(A) mais je ne comprends pas pourquoi.
pourriez vous m'aidez s'il vous plaît ?
Merci à vous
malou edit > **la prochaine fois, cadre ta capture d'écran sur uniquement sur le programme**car là j'ai agrandi, mais ce n'est pas net**
*** message déplacé ***
Bonjour,
Deja dit et donc MULTIPOST interdit
indentation incorrecte
on ne fait RIEN dans le if
et on affiche toutes les valeurs de A et de N quelle que soit la valeur de P dont finalement on ne fait rigoureusement rien du tout de ce P
*** message déplacé ***
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :