提前结束一个程序,而不是循环?

时间:2018-02-04 16:17:15

标签: python

我正在尝试制作一个简短的程序,它将返回一个数字的阶乘,这很好。我遇到的唯一问题是如果用户输入非整数值,程序将结束。

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)

2 个答案:

答案 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子句仅在未抛出异常时才会执行。

建议

为了不泄露你的家庭作业的答案,这里有一些建议,你应该看看清理你的代码:

  1. 您可以更有效地使用range吗?提示:您可以通过将step设置为负整数来迭代减少的数字。
  2. 你能找到办法摆脱支票num1 == 0吗?

答案 1 :(得分:3)

OP实际上是在询问如何过早终止当前脚本执行。实现您的想法的直接方法是使用sys.exit()之类的

try:
    num1 = int(num)
except ValueError:
    sys.exit()

有关详细信息,请参阅此thread