我怎样才能阻止我的python程序崩溃
我写了一个程序来计算一个数字的阶乘完美的工作,但当测试我输入一个浮点数时崩溃。 我的目标是接受一个浮点数,但没有计算。由于该程序将接受但返回“错误输入,只有整数被接受”。 我已经尝试了多个声明,但它只适用于我在声明中输入的数字。所以我想也许应该建立一些东西,也许可以通过命名一些花车并做某种减法。但我迷路了。 这里是程序我至今不包括浮动声明:我怎样才能阻止我的python程序崩溃
def main():
# take input from the user
num = int(input("Enter a number: "))
factorial = 1
if num > 100:
print("Bad entry. It should be an integer less than or equal to 100!")
print("Please try again: ")
elif num == 0:
print("The factorial of 0 is 1")
elif num < 0:
print("Bad entry. It should be an integer superior than or equal to 0!")
print("Please try again: ")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("The factorial of",num,"is",factorial)
main()
def main():
# take input from the user
num = float(input("Enter a number: "))
if (num%1 != 0):
print("Bad entry, only integers are accepted.")
return
num = int(num)
factorial = 1
if num > 100:
print("Bad entry. It should be an integer less than or equal to 100!")
print("Please try again: ")
elif num == 0:
print("The factorial of 0 is 1")
elif num < 0:
print("Bad entry. It should be an integer superior than or equal to 0!")
print("Please try again: ")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("The factorial of",num,"is",factorial)
main()
您可以添加一些解释吗?裸码块是不好的。 – 2015-02-06 16:51:53
模块操作符'%'将返回操作的其余部分。所以,9%1是0,而9.1%1是0.1。一旦我们确定了它的浮点数,你可以将它转换为int。 – 2015-02-06 17:14:34
似乎没有必要。你应该尝试转换为'int',并在失败时捕获'ValueError'。你在这里保存的唯一情况是,如果用户给你一个浮点数,如果他们给你一个非数字的话,它会触发一个不同的错误信息。 – 2015-02-06 17:16:43
你应该使用try/catch块,因为int('3.2')
(或任何其它浮动字符串)会产生一个错误。例如:
try: num = int(input('Enter a number...'))
except ValueError:
print 'We only accept integers.'
return
正如许多人所建议的,你应该使用try/except
块。但是,如果你想接受用户的输入像"6.12"
和整数部分才算,你应该做的:
user_in = "6.12" # or whatever the result from the input(...) call is
user_in = int(float(user_in)) # 6
int
不能在一个字符串,不是整数般的操作,但它可以在一个浮点数操作。在字符串上调用float
会给你一个浮点数,并且在该浮点数上调用int
将返回整数部分。
修复身份请 – ForceBru 2015-02-06 16:40:54
请参阅[这篇文章](http://*.com/questions/4541155/check-if-a-number-is-int-or-float)如何检查输入的数字是积分。 – RedX 2015-02-06 16:42:23
请包括你试图解决浮点问题,以及它如何“崩溃”。你有没有捕获异常? – 2015-02-06 16:42:54