首页 > 其他分享 >软工日报4.15

软工日报4.15

时间:2024-06-19 22:38:10浏览次数:21  
标签:set 4.15 日报 软工 month year input self day

问题:

8-4 【Python0017】设计异常处理类Cexception,并基于异常处理类设计并实现日期类Date 分数 10 作者 doublebest 单位 石家庄铁道大学

【题目描述】定义一个异常类Cexception解决日期类实现中的自定义异常处理。设计的日期类应包含以下内容:

① 有三个成员数据:年、月、日;

② 有设置日期的成员函数;

③ 有用格式"月/日/年"输出日期的成员函数;

④ 要求在日期设置及有参构造函数中添加异常处理。

程序中定义各种日期对象并测试。
【注意事项】闰年的 2 月的天数为 29天,其它年份 2 月28 天;闰年是指:年份能被 4且不能被 100 整除,或者年份能被 400 整除。

注意日期间的关联。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

代码量:

class CException(Exception):
"""自定义日期相关的异常类"""
def __init__(self, message):
super().__init__(message)

class Date:
def __init__(self, year_input=None, month_input=None, day_input=None):
if year_input is None or month_input is None or day_input is None:
self.prompt_and_set_date()
else:
try:
self.set_year(year_input)
self.set_month(month_input)
self.set_day(day_input)
except CException as e:
print(f"错误:{e}")

def prompt_and_set_date(self):
while True:
try:
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))
day = int(input("请输入日期: "))
self.set_year(year)
self.set_month(month)
self.set_day(day)
break # 成功设置日期后退出循环
except ValueError:
print("输入无效,请确保输入的是整数。")
except CException as e:
print(f"错误:{e}")

def set_year(self, year):
if year < 1:
raise CException("年份不是正整数。")
self.year = year

def set_month(self, month):
if not (1 <= month <= 12):
raise CException("月份错误。")
self.month = month

def set_day(self, day):
if not (1 <= day <= self.get_max_day()):
raise CException("日期范围错误")
self.day = day

def get_max_day(self):
if self.month == 2:
if self.is_leap_year():
return 29
else:
return 28
elif self.month in [4, 6, 9, 11]:
return 30
else:
return 31

def is_leap_year(self):
return (self.year % 4 == 0 and self.year % 100 != 0) or (self.year % 400 == 0)

def display(self):
return f"{self.month}/{self.day}/{self.year}"

# 程序测试 - 通过控制台输入
print("请输入日期(或输入错误的日期以测试异常处理):")
date = Date()
print(f"设置的日期为: {date.display()}")

标签:set,4.15,日报,软工,month,year,input,self,day
From: https://www.cnblogs.com/guozi6/p/18257640

相关文章

  • 软工日报4.14
    问题:8-3【Python0016】设计并实现计算不同职称的教师工资分数10全屏浏览作者 doublebest单位 石家庄铁道大学【题目描述】设计教师接口,该接口包含教师工资计算方法。应用(一)中的高校人员信息包,设计不同职称的教师类:教授,副教授,讲师,教师的基本信息包......
  • 软工日报4.13
    8-2【Python0015】以圆类为基础设计三维图形体系分数10全屏浏览作者 doublebest单位 石家庄铁道大学【题目描述】设计三维图形类体系,要求如下:设计三维图形功能接口,接口包含周长、面积、体积计算方法;基于以上接口,首先定义点类,应包含x,y坐标数据成员,......
  • 软工日报4.16
    问题:8-5【Python0018】设计并实现平面点类Point分数10全屏浏览作者 doublebest单位 石家庄铁道大学【题目描述】定义一个平面点类Point,对其重载运算符关系运算符,关系运算以距离坐标原点的远近作为基准,远的为大。程序完成对其的测试。【练习要求】......
  • 软工日报4.17
    今日,我主要负责实现应用中的登录注册功能。然而,在开始编码之前,我发现了一个关键的问题——数据库中的用户表尚未建立。因此,我首先决定先创建这个用户表,以支持后续的登录注册操作。在创建用户表时,我考虑了用户所需的基本信息,如用户名、密码(通常我们会存储密码的哈希值而非明文密......
  • 软工日报3.26
    代码量:8-4【Python0036】中文级联菜单分数10全屏浏览作者 doublebest单位 石家庄铁道大学编写程序实现中文级联菜单,建议可以使用pypinyin或其它扩展库。代码:defdisplay_menu(menu,level=0):"""递归显示菜单"""forindex,(key,v......
  • 软工日报3.25
    代码量:8-3【Python0035】英文统计分数10全屏浏览作者 doublebest单位 石家庄铁道大学编写程序实现对特定英文文章(文本文件)的单词数和有效行数的统计,其中要求空行不计数;代码:importrefile="HarryPotterAndTheChamberOfSecrets.txt......
  • 软工日报3.22
    代码量:8-2【Python0032】谢宾斯基三角型字符分形图形输出分数10全屏浏览作者 doublebest单位 石家庄铁道大学要求编程输出如下图示的字符分形图形(谢宾斯基三角形),要求提交源代码文件,其中源代码要求逐行注释。 代码:importturtle......
  • 软工日报3.21
    代码量:8-1【Python0031】简易带参计算器分数10全屏浏览作者 doublebest单位 石家庄铁道大学设计一个简易的参数计算器。【输入格式】第一行输入待计算的带变量参数的计算式第二行输入各变量参数的赋值序列【输出格式】输出带变量参数的计算式的计......
  • 软工日报3.13
    代码量:7-1产生每位数字相同的n位数分数15全屏浏览切换布局作者 陈春晖单位 浙江大学读入2个正整数A和B,1<=A<=9,1<=B<=10,产生数字AA...A,一共B个A输入格式:在一行中输入A和B。输出格式:在一行中输出整数AA...A,一共B个A输入样例1:在这......
  • 软工日报3.20
    代码量:6-1使用函数输出指定范围内Fibonacci数的个数分数20全屏浏览切换布局作者 陈春晖单位 浙江大学本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。所谓Fib......