6
votes

Calcul factoriel à l'aide de Python

Je suis nouveau à Python et à la lecture actuellement Python 3 pour débutant absolu et faire face à la suite de problème.

Je voudrais calculer factorielle avec la procédure.

  1. Demandez l'utilisateur à saisir un nombre non négatif N
  2. Utilisez ensuite la boucle pour calculer la factorielle

    et le code est comme celui-là: xxx

    pendant que je voudrais ajouter une fonctionnalité pour vérifier si le numéro d'entrée n est non négatif numéro. Comme: xxx

    Je souhaite que l'utilisateur entrait à nouveau n s'il n'existe pas un nombre non négatif.

    Merci pour votre aide douce.


1 commentaires

Vous n'avez pas besoin de la dernière plage (1, N + 1,1) puisque l'incrémenteur par défaut est +1. Seule la plage (1, N + 1) suffit


5 Réponses :


4
votes

La construction pourrait ressembler à ceci: xxx

dans python 3, entrée () retourne une chaîne. Vous devez le convertir en un numéro dans tous les cas. Votre n! = Int (n) n'a aucun sens, comme vous ne pouvez pas comparer une chaîne avec un int.

à la place, essayez pour le convertir Pour un INT directement, et si cela ne fonctionne pas, laissez l'utilisateur entrer à nouveau. Qui rejette les nombres de points flottants ainsi que tout le reste qui n'est pas valide comme un entier.


7 commentaires

Continuer signifie démarrer la boucle de démarrage et Break Break to Boop


Peut-être que l'op signifie si float (n)! = Int (n) Pour vérifier qu'un entier a été réellement entré?


@aquavitae Oui, mais je couvre cela avec le essayer: ... pièce.


Salut. Merci pour votre aide.
La raison pour laquelle j'ajoute N! = INT (N) est que je voudrais sûr que N est un entier mais pas comme 3.3. AS 3.3! est indéfini.


@Yin ​​qui est totalement clair et couvert de ma solution.


@glglgl merci! Et une question mineure est que je trouve que la sortie est légèrement différente si j'entraîne 3.3 et -2. Il a montré une entrée non valide pour 3,3 tout en ne faisant pas de -2. Que dois-je faire si je veux imprimer ("entrée non valide") pour un nombre négatif? Merci encore.


Merci encore à nouveau @glglgl, je voudrais apprendre le concept de rupture continue dans un cas général. Par exemple, en plus de vérifier si N est entier et non négatif, je souhaite également assurer la valeur d'entrée N est un nombre pair. Quelle ligne je devrais ajouter? 'N% 2 == 0' merci



1
votes

Dans la bibliothèque de mathématiques de Python, il existe une fonction factorielle. Vous pouvez l'utiliser comme si: xxx pré>

puisque vous souhaitez calculer à l'aide d'une boucle, avez-vous envisagé ce qui suit? P>

ans = -1
while ans < 0:
    N = input("Please enter a positive integer: ")
    if N.isdigit() == True:
        n = int(N)
        if n >= 0:
            ans = n
            for x in range (n-1, 1, -1):
                ans *= x
            print (ans)


7 commentaires

+1 pour la première partie, -0.4 pour le dernier. Fait +0.6, qui est toujours +1 :-)


Haha, proche! L'esprit si je demande ce qui ne va pas avec la deuxième partie? :)


C'est incomplet. Il ne dit pas à l'utilisateur de rentrer dans le numéro et que vous appelez int (n) trois fois - ce qui est mieux fait avec nn = int (n) une fois.


Je voulais éviter plus de lignes pour avoir l'air bien, mais vous avez raison, votre mise en œuvre est meilleure. Je ressens la méthode de la boucle que j'ai modifiée n'est-elle pas la meilleure cependant, toutes idées? :)


@EDUCATEME Merci pour votre réponse. Comme je suis nouveau pour la programmation, je voudrais poser dans ce cas, je devrais utiliser en boucle ou en boucle? Et en général cas, lorsque je devrais utiliser en boucle et en boucle? S'il vous plaît Dun Sentez cette question est stupide TT. Merci encore.


Utilisez pendant si vous souhaitez répéter quelque chose pendant que certaines conditions sont vraies et utilisez pour pour passer sur les éléments de certaines séquences.


@Yin ​​Utilisez pendant pour une boucle jusqu'à ce que l'entrée soit OK et utilisez pour pour votre calcul.



0
votes

Vous pouvez vérifier le module mathématique pour Python.

Math.Factorial (X)

retour x factorielle. Augmente ValueError si x n'est pas intégré ni négatif.


1 commentaires

Merci! Peut-être que mon titre de question est trompeur. Je veux juste utiliser le calcul factoriel comme exemple. (Je ne sais pas qu'il y a quelque chose comme continuer ou casser).



0
votes
Number = int(input("Enter the number to calculate the factorial: "))
factorial = 1
for i in range(1,Number+1):
    factorial = i*factorial

print("Factorial of ",Number," is : ", factorial)

0 commentaires

0
votes
def factorial(a):
    if a == 1:
        return 1
    else:
        return a * factorial(a - 1)


    print('factorial of number', factorial(5))

2 commentaires

Factorial d'un nombre utilisant python


Veuillez éditer votre réponse pour inclure votre commentaire à votre réponse pour plus de clarté.