计算n!,捕获可能出现的异常 设计一个成绩录入系统,只需录入学生的考号(ID),姓名(name)和成绩(score) ,当输入的数据类型,数据范围出现错误时,使用系统内置的异常类和自定义的异常类来处理
时间: 2024-02-20 12:56:53 浏览: 66
学生成绩录入
好的,针对您的第一个问题,计算n!,以下是一个Python的示例代码:
```python
def factorial(n):
if n < 0:
raise ValueError("n must be non-negative")
if n == 0:
return 1
else:
return n * factorial(n-1)
try:
n = int(input("请输入一个非负整数n: "))
result = factorial(n)
print(f"{n}的阶乘为{result}")
except ValueError as e:
print("输入有误:", e)
except Exception as e:
print("其他错误:", e)
```
该代码会计算输入的非负整数n的阶乘,同时捕获可能出现的ValueError异常(即n为负数的情况),以及其他可能出现的异常。
针对您的第二个问题,设计一个成绩录入系统,以下是一个Python的示例代码:
```python
class InvalidDataException(Exception):
pass
class Student:
def __init__(self, id, name, score):
if not isinstance(id, int) or id <= 0:
raise InvalidDataException("学生ID必须是正整数")
if not isinstance(name, str) or len(name.strip()) == 0:
raise InvalidDataException("学生姓名不能为空")
if not isinstance(score, int) or score < 0 or score > 100:
raise InvalidDataException("学生成绩必须在0到100之间")
self.id = id
self.name = name
self.score = score
class ScoreRecorder:
def __init__(self):
self.students = []
def add_student(self, id, name, score):
try:
student = Student(id, name, score)
self.students.append(student)
print(f"学生{student.name}的成绩已成功录入")
except InvalidDataException as e:
print("录入失败:", e)
recorder = ScoreRecorder()
recorder.add_student(1, "张三", 85)
recorder.add_student("2", "", 90)
recorder.add_student(3, "李四", 110)
```
该代码定义了一个Student类来表示学生信息,以及一个ScoreRecorder类来管理学生信息的录入。录入时,会使用自定义的InvalidDataException类来捕获可能出现的数据类型、数据范围等错误,以保证录入数据的合法性。
阅读全文