Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme en Python

Posté par
lililili85
10-03-20 à 18:39

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

Posté par
mathafou Moderateur
re : Algorithme en Python 10-03-20 à 19:11

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


les conditions (de if, while etc)
égal se dit == (deux signes "=", un seul est une affectation et pas un test)
inférieur ou égal <=
supérieur ou égal >=
différent !=

avec ça tu peux déja te lancer et proposer quelque chose ...

Posté par
lililili85
re : Algorithme en Python 10-03-20 à 20:09

For N in range (4,49)
For A in range (3,N-1)
Là on met le calcul de p
Print A et N
Et voila

Posté par
mathafou Moderateur
re : Algorithme en Python 10-03-20 à 23:38

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)

Posté par
lililili85
re : Algorithme en Python 11-03-20 à 13:46

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)

Posté par
mathafou Moderateur
re : Algorithme en Python 11-03-20 à 13:57

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 !

Posté par
lililili85
re : Algorithme en Python 11-03-20 à 15:10

Oui mais que dois-je faire

Posté par
mathafou Moderateur
re : Algorithme en Python 11-03-20 à 15:17

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

mais

for ... :
     bla bla
     if  ... :
          bla bla
     suite éventuelle du for, à l'extérieur du if
suite éventuelle à l'extérieur du for

avec certains espaces en début de ligne absolument obligatoires
ils font partie intégrante de la syntaxe en Python.
c'est fondamental

Posté par
lililili85
re : Algorithme en Python 11-03-20 à 20:01

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

Posté par
mathafou Moderateur
re : Algorithme en Python 11-03-20 à 23:41


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

Posté par
lililili85
Python 17-03-20 à 15:11

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é ***

Posté par
malou Webmaster
re : Algorithme en Python 17-03-20 à 15:14

on veut bien t'aider, mais à condition que tu respectes les règles du forum
or, le multipost est strictement interdit sur notre site

Posté par
mathafou Moderateur
re : Algorithme en Python 17-03-20 à 15:32

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) !

Posté par
lililili85
Programme python 13-04-20 à 17:07

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
Programme python

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é ***

Posté par
mathafou Moderateur
re : Programme python 13-04-20 à 17:19

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é ***

Posté par
mathafou Moderateur
re : Algorithme en Python 13-04-20 à 17:25

recidive même de multipost ...

attentionextrait de c_faq la FAQ du forum :

Q30 - J'ai été averti ou banni, pourquoi, et que faire ?



bien LIRE et comprendre ce qui est écrit là dedans !!!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !