2017-09-13 18 views
-1
i = input("Enter number",) 
for i in range(i): 
    i= i *(i+1) 
    print(i) 

Ich versuche, eine factorial für eine beliebige Anzahl der Benutzereingaben mit dem obigen Code zu generieren. Wie kann ich dies mit dem obigen Code erreichen, ohne die faktorielle Python-Funktion zu verwenden. Wie kann ich das auch mit der faktoriellen Funktion machen?Python 3.5 Fakultät

+0

Bitte erstellen Sie ein [mcve]. Zeigen Sie bei der Probeneingabe den tatsächlichen Code und die aktuellen/gewünschten Ergebnisse an. –

Antwort

1

Sie ändern i, während Sie darüber iterieren. Sie könnten versuchen:

i = int(input("Enter number",)) 
f = 1 
for j in range(i): 
    f = f * (j+1) 

print(f) 
+0

Es gibt die Fehlermeldung: TypeError: 'Str' -Objekt kann nicht als eine ganze Zahl interpretiert werden –

+0

Ich fügte eine Umwandlung der Eingabe in int in meinem Code – Harald

2

Sie können es auf diese Weise rekursiv auch tun

def recur_factorial(n): 
    """Function to return the factorial 
    of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1) 

print recur_factorial(5) 

Sie Eingabe vom Benutzer in Form der ganzen Zahl nehmen und dann in der Fakultäts-Funktion übergeben

0

während Rekursion verwenden, sollten Sie Schwanz rekursive Funktionen wie

def factorial2(x, fac): 
    if x == 1: 
    return fac 
    else: 
    return factorial2(x-1, x*fac) 

factorial2(value_here,1) 

verwenden Sie die verwenden können, integrierte Funktion mit einfachen:

import math 
math.factorial(value_here) 
+0

Keine Notwendigkeit für die Klammern. – miradulo

+0

ja, aber ich benutze immer, wenn ich kann, vielleicht aus Mathe, aber ich mag Dinge explizit – zero

+0

Sicher, aber es ist schlecht Python-Stil. – miradulo

2

verwenden diese Funktion math.factorial(value) von math Bibliothek in python importieren.