num = int(input('请输入一个整数:'))
def tool__num(num):
try:
if num == int(num):
True
except ValueError:
print('请输入整数')
factorial = 1
if num < 0 :
print('负数没有阶乘')
elif num == 0 :
print('0 的阶乘等于1')
else:
for x in range(1,num + 1) :
factorial = factorial * x
print('{0} 的阶乘为:{1}'.format(num ,factorial))
输入整数和0没有问题
请输入一个整数:1
1 的阶乘为:1
请输入一个整数:-9
负数没有阶乘
请输入一个整数:0
0 的阶乘等于1
但是输入浮点数还是报错
请输入一个整数:1.0
Traceback (most recent call last):
File "E:/python_examples/factorial.py", line 2, in <module>
num = int(input('请输入一个整数:'))
ValueError: invalid literal for int() with base 10: '1.0'
哪位大佬指点一下
num = int(input('请输入一个整数:'))因为你这定义的是int整型啊,肯定不能输入浮点型数据了
num = input('请输入一个整数:')
def tool__num(num):
try:
if type(int(num))==int:
factorial = 1
num = int(num)
if num < 0:
print('负数没有阶乘')
elif num == 0:
print('0 的阶乘等于1')
else:
for x in range(1, num + 1):
factorial = factorial * x
print('{0} 的阶乘为:{1}'.format(num, factorial))
except ValueError:
print('请输入整数!')
tool__num(num)
while True:
try:
num = int(input("请输入一个整数: "))
break
except ValueError:
print("请输入一个整数")
输入浮点数报错可以用这个代码规避