使用两个函数Python 3.x的因子

时间:2017-02-22 02:16:13

标签: python python-3.x

大家好,我有一个我应该在python 3.x中做的家庭作业

我正在努力弄清楚如何做到这一点,所以我希望你能向我解释如何解决这个问题。

问题

正整数n(写入n!)的阶乘是乘积1 x 2 x 3 x ... x n。编写一个程序,要求用户输入一个正整数,然后计算并显示该数字的阶乘。该程序应包括两个函数:输入发送到的 getN ,并保证输入为正整数。函数 fact 应该计算析因值。然后程序(main)应显示阶乘值。

到目前为止,我有一个粗略的草图,我想如何去做这个

#This program will show the answer to a factorial after the user inputs a value.
def getN(n):
    try:
        n = int(input("Please enter a non-negative integer: "))
    except n < 1:
        print("You did not enter a value of 1 or greater.")

def fact(n):
    count = 1
    while n > 0:
        count *= n
        n -= 1
        if n == 0:
            break
def main(n):
    n = int(input("Please enter a non-negative integer: "))
    getN(n)

main(n)

我相信它应该看起来像这样。如果你能给我一些关于我应该做什么的反馈,那将是非常感激的。谢谢!

2 个答案:

答案 0 :(得分:1)

请参阅内联评论

def getN():
    try:
        n = int(input("Please enter a non-negative integer: "))
        if n < 1:
            raise ValueError  # it will be thrown also if input is not a valid int
    except ValueError:  # n < 1 is not an Exception type
        print("You did not enter a value of 1 or greater.")
    else:
        return n

def fact(n):
    count = 1
    for i in range(1, n+1):  # you see how simple it is with for loop?
        count *= i
    return count

def main():
    n = getN()  # before you were just asking n twice, never using fact()
    print(fact(n)) 

main()

答案 1 :(得分:0)

对我来说似乎很合理。看起来你永远不会返回或打印实际的因子计算。也许你的功能'事实'应该“返回计数”?此外,您不需要在事实函数中检查“if n == 0”,因为如果它为0,则由于while循环的条件,它将结束while循环。