我是Python新手,目前正在阅读 Python 3 for absolute beginner 并面临以下问题。
我想用程序计算阶乘。
代码就是这样:
N = input("Please input factorial you would like to calculate: ")
ans = 1
for i in range(1,N+1,1):
ans = ans*i
print(ans)
虽然我想添加一项功能来检查输入数字N是否为非负数。像:
if N != int(N) and N < 0:
如果用户不是非负数,我希望用户再次输入N.
感谢您的温和帮助。
答案 0 :(得分:4)
构造可能如下所示:
while True:
N = input("Please input factorial you would like to calculate: ")
try: # try to ...
N = int(N) # convert it to an integer.
except ValueError: # If that didn't succeed...
print("Invalid input: not an integer.")
continue # retry by restarting the while loop.
if N > 0: # valid input
break # then leave the while loop.
# If we are here, we are about to re-enter the while loop.
print("Invalid input: not positive.")
在Python 3中,input()
返回一个字符串。在所有情况下,您都必须将其转换为数字。因此,您的N != int(N)
没有任何意义,因为您无法将字符串与int进行比较。
相反,尝试直接将其转换为int,如果不起作用,请让用户再次输入。这会拒绝浮点数以及其他无效的整数。
答案 1 :(得分:1)
在Python的数学库中,有一个阶乘函数。您可以像这样使用它:
import math
...
ans = math.factorial(N)
由于您想使用循环计算,您是否考虑过以下内容?
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)
注意,第二个解决方案不适用于N = 0,其中ans = 1是正确的因子定义。
答案 2 :(得分:0)
您可以检查数学模块是否为python。
返回x阶乘。 如果x不是整数或是负数,则引发ValueError。
答案 3 :(得分:0)
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)
答案 4 :(得分:0)
def factorial(a):
if a == 1:
return 1
else:
return a * factorial(a - 1)
print('factorial of number', factorial(5))