我正在尝试制作一个简短的程序,它将返回一个数字的阶乘,这很好。我遇到的唯一问题是如果用户输入非整数值,程序将结束。
num = input("input your number to be factorialised here!: ")
try:
num1 = int(num)
except ValueError:
print("That's not a number!")
if num1 < 0:
print("You can't factorialise a negative number")
elif num1 == 0:
print("the factorial of 0 is 1")
else:
for i in range(1,num1+1):
ans = ans * i
print("the factorial of", num, "is", ans)
答案 0 :(得分:4)
有更好的方法可以做到这一点,但鉴于您的代码结构,您可以使用else
。请参阅the docs。
num = input("input your number to be factorialised here!: ")
try:
num1 = int(num)
except ValueError:
print("That's not a number!")
else:
if num1 < 0:
print("You can't factorialise a negative number")
elif num1 == 0:
print("the factorial of 0 is 1")
else:
ans = 1
for i in range(1,num1+1):
ans = ans * i
print("the factorial of", num, "is", ans)
else
子句仅在未抛出异常时才会执行。
为了不泄露你的家庭作业的答案,这里有一些建议,你应该看看清理你的代码:
step
设置为负整数来迭代减少的数字。num1 == 0
吗?答案 1 :(得分:3)
OP实际上是在询问如何过早终止当前脚本执行。实现您的想法的直接方法是使用sys.exit()
之类的
try:
num1 = int(num)
except ValueError:
sys.exit()
有关详细信息,请参阅此thread。