Bonjour je dois corriger ce programme.
On a codé une fonction fact dont le paramètre est 1.
On veut entrer un entier naturel n strictement positif et qui renvoie le produit des nombres entiers de 1 à n inclus
Déjà je corrigerais range (1,n+1)
Car n est inclus dans le produit
Ensuite en sortie il faut afficher fact(n) et non n.
Faut il ajouter n=int(input ("valeur de n ?")
Pour qu'on connaisse le dernier facteur ?
Merci
Bonsoir
la première correction est bonne
pour la deuxième, ça n'a pas de sens d'afficher fact(n), on est justement en train de définir ce qu'est la fonction fact
il y a une autre variable dans le programme qui joue ce rôle
pour la troisième, l'enregistrement de la valeur de n se fait par l'appel de la fonction fact avec un argument
le problème ici est que la fonction fact ne prend pas d'argument => erreur à corriger
le but de la factorielle est de multiplier tous les entiers de 1 à n
facteur va successivement prendre les valeurs de 1 à n, et à chaque itération, res est multipliée par facteur, donc au final, res sera multipliée par tous les entiers de 1 à n, donc par (n!)
c'est pour ça que res est initialisée à 1 d'ailleurs
pour la 3ème correction, il faut voir la façon dont on définit une fonction
ici, la ligne "def fact():" implique que la fonction ne prend pas d'argument
Pour qu'elle prenne un argument en entrée, il faut mettre quelque chose dans la parenthèse (ici, c'est n)
comme ça, on pourra taper fact(10) pour obtenir le résultat de (10!)
L'argument c'est l'entrée
Quand tu calcules une factorielle, tu calcules la factorielle d'un entier (n), c'est lui l'argument
super merci
dans un autre post mathafou me dit que res n'est pas destiné à afficher un résultat.
ici on pourrait croire le contraire...
A la place de Res on aurait pu écrire r=1
return r?
merci
vu qu'on parle de moi ...
return res définit la valeur retournée par la fonction
c'est la valeur prise par la fonction quand on l'appelle un point c'est tout
ce qu'on fera de cette valeur (l'utiliser , l'afficher etc)
dépend de comment et où on appelle (utilise) la fonction
si on tape fact(5) en ligne de commande dans la console, il va afficher la valeur
de la même façon que si on tape simplement 3+4 dans la console, il affichera 7
par contre si dans un programme j'appelle (j'utilise) fact()
il fera le calcul sans afficher ce résultat "intermédiaire"
par exemple si dans le programme
j'écris quelque part
S = fact(3)+fact(4)
il va calculer ces deux factorielles et en faire la somme sans rien dire du tout.
bien distinguer dans Python le programme (module) et la console dans laquelle on va utiliser ce programme
(exemple avec EduPython et sur l'autre exo )
J'ai installé Edupython, et je commence à taper mon programme.
J'ai :
def fact(n)
res=1
Et déjà un message d'erreur Syntax : expected an indented block
l'indentation est fondamentale dans Python (décalages en débuts de lignes)
les ":" sont obligatoire après un def
c'est
def fact(n):
res = 1
...
def fact(n):
res = 1
...
...
return ...
autre chose
...
Ok merci j'ai dû effacer l'indentation par erreur
def fact(n) :
res=1
for facteur in range (n+1)
res=res*facteur
return res
J'ai voulu tester immédiatement dans la console
fact(3):
Name Error : name 'fact' is not defined.
def fact(n) :
res=1
for facteur in range (1,n+1)
res=res*facteur
return res
Et quand je lance ma fonction
fact(3)
1
Au lieu de 6!
regarde attentivement comment est l'indentation (les espaces en debut de ligne) dans ce qui était donné à l'origine
l'indentation est bonne
(les trucs à corriger étaient autre chose)
def fact(n) :
res=1
for facteur in range (1,n+1):
res=res*facteur
return (res)
Le return (res) se place dans le programme automatiquement sous le res=res*facteur...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :