Python versus langage naturel
-
FFlo Flo dernière édition par
Bonjour everybody!
Pour un exercice, je dois écris en langage python une fonction qui était écrite en langage naturel (voir image).
Est-ce que mon script est correct?
j'ai pensé à ceci:Def mystere (x,y)
while x==0
if x=="pair":
x=x/2
y=2*y
else:
x= x-1
z = z+y
Print(z)
-
FFlo Flo dernière édition par
-
BBlack-Jack dernière édition par
Bonjour,
Il y a plusieurs choses qui ne vont pas.Il manque quelque chose dans le programme donné en énoncé.
La variable z n'est pas définie ... et donc cela va obligatoirement donner une erreur dans le programme Python si on n'y remédie pas.J'ai donc (arbitrairement) donné une valeur définie (nulle) à z dans le programme Python... Mais on ne peut évidemment pas faire cela, il FAUT que l'énoncé donné précise ce qu'est z.
Dans ton programme :
Il y a évidemment l'erreur mentionnée ci-dessus (z pas défini)
En plus, tu traduis "Tant que x est non nul" par "While x == 0 :", c'est le contraire de ce qui est indiqué
En plus, pour tester que x est pair on doit écrire : if x%2==0:
Ce que tu as écrit ne sera pas compris par Python.
Il faut aussi faire attention à l'indentation... sinon rien ne va.Le programme Python pourrait être par exemple :
def mystere(x,y): z=0 while x!= 0: if x%2==0: x=x/2 y=2*y else : x=x-1 z=z+y print(z) return() mystere(2,-8)
-
FFlo Flo dernière édition par
D'accord @Black-Jack, merci pour votre temps et votre patience !!
Mais est-ce OK de mettre z=0 si dans l'énoncé rien n'est précisé pour cette valeur?
Aussi, pourquoi mettre return () et mystere (2,-8) à la fin? Ne doit-on pas terminer par "print(z)"?
-
BBlack-Jack dernière édition par
@Flo-Flo a dit dans Python versus langage naturel :
D'accord @Black-Jack, merci pour votre temps et votre patience !!
Mais est-ce OK de mettre z=0 si dans l'énoncé rien n'est précisé pour cette valeur?
Aussi, pourquoi mettre return () et mystere (2,-8) à la fin? Ne doit-on pas terminer par "print(z)"?"Mais est-ce OK de mettre z=0 si dans l'énoncé rien n'est précisé pour cette valeur?"
Bien sûr que non, je l'ai mentionné.
Pour pouvoir utiliser la variable z dans la ligne z + z+y, il faut que z ait été défini.
On doit donc définir z, mais la valeur à lui donner doit être précisée dans l'énoncé ... et ce n'est pas le cas.
Il y a donc un problème d'énoncé ... que le prof doit corriger.
''''''''''''
Aussi, pourquoi mettre return ()Quand une procédure (ou fonction) est appelée à partir d'un programme principal (ou d'une autre procédure), à la fin de l'exécution de la procédure, il faut revenir dans le programme qui a appelé la procédure ... pour continuer le dit programme. Et cela se fait par l'instruction return() qui peut ou non renvoyer des valeurs au programme principal.
''''''''''''''
et mystere (2,-8) à la fin?Cela ne fait pas partie de la fonction mystere (x,y)
Je l'ai mis ici en guise de programme principal ... pour forcer l'appel de la fonction mystere (x,y)
Donc si on fait tourner le programme que j'ai écrit.
Le programme principal (qui ne comporte que l'instruction mystere (2,-8) )va se lancer et appeler la fonction mystere en lui passant les paramètres x=2 et y = -8Si on n'écrit pas la ligne mystere (2,-8), si on lance le programme (par un "run"), il ne se passera rien du tout.