使用Input()函数输入一行数据,其中包括用逗号分割得到5个整型数据,放入列表Alist,然后求每个数的阶乘并打印输出。 要求:如果输入的数据不为正数,要捕获ValueError异常,如果输入数据数据项不足5个,则抛出索引范围越界的异常。
时间: 2024-05-05 08:20:32 浏览: 157
好的,我可以回答你的问题。以下是代码实现:
```python
import math
def get_factorial(num):
"""获取数字的阶乘"""
factorial = 1
for i in range(1, num+1):
factorial *= i
return factorial
try:
input_str = input("请输入含有5个整数的字符串,用逗号分隔:")
Alist = input_str.split(",")
if len(Alist) < 5:
raise IndexError("列表Alist索引范围越界")
for num_str in Alist:
num = int(num_str)
if num <= 0:
raise ValueError("输入的数据必须为正数")
factorial = get_factorial(num)
print("{}的阶乘为{}".format(num, factorial))
except ValueError as ve:
print("ValueError异常:", ve)
except IndexError as ie:
print("IndexError异常:", ie)
```
输入含有5个整数的字符串时,程序首先会使用 `input()` 函数获取用户输入的数据,并将其转换成列表 `Alist`,然后判断 `Alist` 中是否包含足够的数据项。如果不够,则抛出 `IndexError` 异常,如果数据项中存在非正整数,则抛出 `ValueError` 异常。否则,程序会遍历列表 `Alist` 中的每个数字,分别计算其阶乘并输出。
阅读全文