首页 > 其他分享 >2024/5/12

2024/5/12

时间:2024-06-16 21:53:59浏览次数:7  
标签:12 self month 2024 日期 year print day

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

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

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

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

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

程序中定义各种日期对象并测试。

class CException(Exception):
    def __init__(self, message):
        self.message = message

class Date:
    def __init__(self, year=2000, month=1, day=1):
        try:
            if month < 1 or month > 12:
                raise CException("月份应在1-12之间")
            if day < 1 or day > 31:
                raise CException("日期应在1-31之间")
            if month == 2:
                if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
                    max_days = 29
                else:
                    max_days = 28
            elif month in [4, 6, 9, 11]:
                max_days = 30
            else:
                max_days = 31
            if day > max_days:
                raise CException("日期超出该月最大天数")
        except CException as e:
            print(f"日期设置错误: {e.message}")
            self.year = 2000
            self.month = 1
            self.day = 1
        else:
            self.year = year
            self.month = month
            self.day = day

    def set_date(self, year, month, day):
        self.__init__(year, month, day)

    def display_date(self):
        print(f"日期已设置为:{self.month}/{self.day}/{self.year}")


# 测试日期类
print("日期设置为:2024/2/30")
date1 = Date(2024, 2, 30)  # 日期设置错误,2月没有30号
date1.display_date()  # 输出默认日期 1/1/2000
print( )

print("日期设置为:2024/5/17")
date2 = Date(2024,4, 15)  # 正确的日期设置
date2.display_date()  # 输出日期 5/17/2024
print( )

print("使用默认日期")
date3 = Date()  # 使用默认日期
date3.display_date()  # 输出默认日期 1/1/2000
print( )

print("日期设置为:2024/6/31")
date4 = Date(2024, 6, 31)  # 日期设置错误,6月只有30天
date4.display_date()  # 输出默认日期 1/1/2000

 

标签:12,self,month,2024,日期,year,print,day
From: https://www.cnblogs.com/drz1145141919810/p/18251336

相关文章

  • HNUCM-2024年春季学期《算法分析与设计》练习15
    问题A:简单递归求和题目描述使用递归编写一个程序求如下表达式前n项的计算结果: (n<=100)1- 3+5-7+9-11+......输入n,输出表达式的计算结果。输入多组输入,每组输入一个n,n<=100。输出输出表达式的计算结果。样例输入 Copy12样例输出 Copy......
  • 2024年Java后端开发学习路线(建议收藏!)
    第二部分:Java高级在Java高级中,我们应该要熟练掌握。Java多线程/高并发,数据结构和算法,设计模式和JVM。第三部分:JavaWEB学习JavaWeb也就算正式开始了Java项目的开发,在这个阶段需要掌握Tomcat服务器的搭建,数据的传输。第四部分:主流框架和项目管理在这个阶段,我们需要......
  • 17岁中专女生,闯进全球数学竞赛12强
    今年阿里的数学竞赛结果出来了,在榜单的前列包含一个17岁的中专女生。在2018年时,阿里巴巴达摩院发起了一个国际数学竞赛,基本每年举办一次,参赛不设报名条件,向全球所有数学爱好者开放,竞赛由阿里创始人马云发起。入口:https://damo.alibaba.com/alibaba-global-mathematics-comp......
  • SCCPC 2024 游记
    省流:都是uuz的问题比赛前晚5.2h幽默睡眠。9点开考,然后uuz签到失败,byd这都要吃一发罚时。然后开考前1hnit给出了3个假做法,看错了两个题/strongzhicheng稳定发挥,屠杀了剩下的签到和模拟题。期间跟uuz讨论G,发现怎么写都是\(\log^3\)的逆天复杂度,讨论了半个......
  • 2024/6/16 今日随笔
    一、实验目的通过使用JavaMVC模式设计简单的数据库管理系统,巩固使用JDBC技术访问数据库的方法,学习使用Java语言对服务器端进行编程,深入理解MVC网站设计模式的基本概念和框架结构。二、实验内容和基本要求从以下列举的四个数据库中,任选其一,或者自行定义其他数据库,每个数据库中......
  • emojiCTF2024
    看到一个新生赛,来打打,发现自己还是太菜了连最正常的hash扩展一开始都没看出来,丢大脸这次就巩固了一下hash扩展密码其他的都是常规题了其他方向基本不会,新生赛都打不了,(哭crypto签到0111001001111010011000100111011101110110010100000100011101010011011110110011000101100......
  • 2024数据库期末综合解析(部分题)
    目录第4关:数据记录修改           任务描述              补充                答案:第6关:数据查询二         任务描述            补充 ......
  • [转]32th@深入解析C++并发编程:从多线程到现代C++并发库@20240616
    深入解析C++并发编程:从多线程到现代C++并发库你有没有想过,为什么C++在多线程并发编程方面如此强大?C++11标准的发布,为并发编程带来了哪些革命性的变化?本文将深入探讨C++并发编程背后的技术原理,带你领略现代C++并发库的强大之处。文章将结合代码片段,为你揭示C++并发编程的精髓。1.......
  • SCCPC2024 游记
    打了一堆板子,一个都没用上。队友:zhicheng,nityacke开场发现H是签到,NIT签了。然后盯F(圆向某个方向运动,问存不存在一个时刻使得全在长方形之内),发现不外乎一堆二次方程,直接冲。但是zhcheng发现这是巨大蠢题,我的做法是什么极霸东西。这个时候NIT胡了个假B。我去看(给若干\(......
  • [转]32th@探索C++的模板元编程:揭秘零运行时开销的高性能编程技术@20240616
    C++的模板元编程是一种强大的编程技术,它能够在编译时进行计算,生成高效的代码,而且不需要任何运行时开销。这种技术被广泛应用于高性能计算、游戏开发、金融等领域,是C++程序员必须掌握的技能之一。本文将深入探讨C++模板元编程的原理和实现方式,并通过代码案例来展示其强大的功能。相......