Je suis nouveau à Python et à la lecture actuellement Python 3 pour débutant absolu em> et faire face à la suite de problème. Je voudrais calculer factorielle avec la procédure. P> et le code est comme celui-là: p> 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: p> Je souhaite que l'utilisateur entrait à nouveau n s'il n'existe pas un nombre non négatif. P> Merci pour votre aide douce. P > p>
5 Réponses :
La construction pourrait ressembler à ceci: dans python 3, à la place, essayez em> 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. P> p> entrée () code> retourne une chaîne. Vous devez le convertir en un numéro dans tous les cas. Votre
n! = Int (n) code> n'a aucun sens, comme vous ne pouvez pas comparer une chaîne avec un int. P>
Continuer code> signifie démarrer la boucle de démarrage et
Break code> Break to Boop
Peut-être que l'op signifie si float (n)! = Int (n) code> Pour vérifier qu'un entier a été réellement entré?
@aquavitae Oui, mais je couvre cela avec le essayer: code> ... 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
Dans la bibliothèque de mathématiques de Python, il existe une fonction factorielle. Vous pouvez l'utiliser comme si: 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)
+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) code> trois fois - ce qui est mieux fait avec
nn = int (n) code> 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 code> si vous souhaitez répéter quelque chose pendant que certaines conditions sont vraies et utilisez
pour code> pour passer sur les éléments de certaines séquences.
@Yin Utilisez pendant code> pour une boucle jusqu'à ce que l'entrée soit OK et utilisez
pour code> pour votre calcul.
Vous pouvez vérifier le module mathématique pour Python. P>
retour x factorielle. Augmente ValueError si x n'est pas intégré ni négatif. P>
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).
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)
def factorial(a): if a == 1: return 1 else: return a * factorial(a - 1) print('factorial of number', factorial(5))
Factorial d'un nombre utilisant python
Veuillez éditer votre réponse pour inclure votre commentaire à votre réponse pour plus de clarté.
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