当前位置: 首页 > news >正文

苏州网站制作好的公司很多网站开发没有框架如何制作的

苏州网站制作好的公司,很多网站开发没有框架如何制作的,免费制作贺卡的app,建设网站销售目录 一、引言 二、需求分析 三、实现思路 四、代码实现 五、代码分析 六、测试与验证 七、总结与展望 在日常的编程中,我们经常会遇到与日期相关的问题,比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细…

目录

一、引言

二、需求分析

三、实现思路

四、代码实现

五、代码分析

六、测试与验证

七、总结与展望


         在日常的编程中,我们经常会遇到与日期相关的问题,比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细介绍如何使用 Python 实现这些功能,并通过一个完整的示例代码进行演示。

一、引言

        日期在我们的生活中无处不在,无论是在项目管理、日程安排还是历史研究等领域,都需要对日期进行准确的计算和处理。Python 作为一种强大的编程语言,提供了丰富的工具和库来处理日期和时间相关的任务。在本文中,我们将使用 Python 的基本语法和逻辑来实现对日期的计算和日历的格式化输出。

二、需求分析

我们的目标是实现以下功能:

  1. 判断给定的年份是否为闰年。
  2. 根据给定的年份和月份,计算该月份的天数。
  3. 计算给定年份和月份距离 1900 年 1 月 1 日的总天数。
  4. 确定给定年份和月份的第一天是星期几。
  5. 格式化输出给定年份和月份的日历。

三、实现思路

  1. 判断闰年

    • 闰年的判断规则是能被 4 整除但不能被 100 整除的年份为闰年,或者能被 400 整除的年份也是闰年。
    • 使用 Python 的条件判断语句来实现这个规则。
  2. 计算月份天数

    • 对于 1、3、5、7、8、10、12 这几个月份,天数为 31 天。
    • 对于 4、6、9、11 这几个月份,天数为 30 天。
    • 对于 2 月份,需要根据是否为闰年来确定天数,闰年为 29 天,非闰年为 28 天。
  3. 计算总天数

    • 首先计算从 1900 年到给定年份之间的总天数,对于闰年的年份,总天数加 366 天,非闰年的年份加 365 天。
    • 然后计算从给定年份的 1 月份到给定月份之间的总天数,根据每个月的天数进行累加。
  4. 确定第一天是星期几

    • 使用总天数对 7 取余,得到的结果即为给定日期是星期几。
    • 根据余数的值进行相应的输出,确定第一天是星期几。
  5. 格式化输出日历

    • 首先输出星期几的表头,即 “星期日 \t 星期一 \t 星期二 \t 星期三 \t 星期四 \t 星期五 \t 星期六 \t”。
    • 根据给定月份的第一天是星期几,在输出日期之前先输出相应数量的制表符,以实现对齐。
    • 然后循环输出每个日期,每输出一个日期后输出两个制表符,以保持格式整齐。
    • 每输出 7 个日期后进行换行,以实现日历的格式化输出。

四、代码实现

以下是实现上述功能的 Python 代码:

# 判断是否为闰年的
def isLeapYear(year):if year % 4 == 0 and (year % 100!= 0 or year % 400 == 0):return Trueelse:return False# 给定月份,算出来该月份有几天
def getDayOfMonth(year, month):if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:return 31elif month == 4 or month == 6 or month == 9 or month == 11:return 30else:if isLeapYear(year):return 29else:return 28while True:yearStr = input("请输入年份(数字|年份大于 1900)输入 q 退出:")if yearStr == "q":print("你已退出,欢迎下次再来")breakelif yearStr.isdigit():year = int(yearStr)monthStr = input("请输入月份(1-12):")if monthStr.isdigit() and 1 <= int(monthStr) <= 12:month = int(monthStr)# 计算该年月距离 1900-01-01 的总天数totalDays = 0for y in range(1900, year):if isLeapYear(y):totalDays += 366else:totalDays += 365# 将剩余月份的天数相加for m in range(1, month):totalDays += getDayOfMonth(year, m)print(f"{yearStr}年{monthStr}距离 1900-01-01 相差{totalDays}天")# 该年该月的第一天是星期几firstDayOfMonth = (totalDays + 1) % 7match firstDayOfMonth:case 0:print(f"{yearStr}年{monthStr}月的第一天是星期日")case 1:print(f"{yearStr}年{monthStr}月的第一天是星期一")case 2:print(f"{yearStr}年{monthStr}月的第一天是星期二")case 3:print(f"{yearStr}年{monthStr}月的第一天是星期三")case 4:print(f"{yearStr}年{monthStr}月的第一天是星期四")case 5:print(f"{yearStr}年{monthStr}月的第一天是星期五")case 6:print(f"{yearStr}年{monthStr}月的第一天是星期六")# 接着进行格式化输出print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t")# 规律 星期几就打印几个空格# 一个 tab 两个汉字# print("\t"*2)counter = firstDayOfMonthprint("\t" * 2 * firstDayOfMonth, end="")# 打印几号dayOfMonth = getDayOfMonth(year, month)for day in range(1, dayOfMonth + 1):print(day, end="\t\t")counter += 1# 控制换行,没打印 7 个值包括空白都换行if counter % 7 == 0:print()print()else:print("输入的数据不合法,请输入 1~12 之间的数字")else:print("请输入数字")

五、代码分析

  1. 判断闰年函数

    • isLeapYear(year)函数接受一个年份作为参数,使用条件判断语句判断该年份是否为闰年。
    • 如果年份能被 4 整除但不能被 100 整除,或者能被 400 整除,则返回True,表示是闰年;否则返回False,表示不是闰年。
  2. 计算月份天数函数

    • getDayOfMonth(year, month)函数接受年份和月份作为参数,根据月份的不同返回相应的天数。
    • 对于 1、3、5、7、8、10、12 这几个月份,直接返回 31 天。
    • 对于 4、6、9、11 这几个月份,直接返回 30 天。
    • 对于 2 月份,根据是否为闰年调用isLeapYear(year)函数来确定天数,闰年返回 29 天,非闰年返回 28 天。
  3. 主循环部分

    • 使用while True循环,以便用户可以多次输入年份和月份进行计算。
    • 首先接收用户输入的年份,如果用户输入q,则退出循环,打印退出信息。
    • 如果用户输入的是数字,则将其转换为整数类型,并继续接收用户输入的月份。
    • 如果月份输入合法(1-12 之间的数字),则进行日期计算和日历格式化输出。
    • 如果月份输入不合法,则打印错误信息,提示用户重新输入。
  4. 计算总天数部分

    • 首先计算从 1900 年到给定年份之间的总天数,使用一个循环遍历从 1900 年到给定年份之间的每一年,如果是闰年,则总天数加 366 天,非闰年则加 365 天。
    • 然后计算从给定年份的 1 月份到给定月份之间的总天数,使用另一个循环遍历从 1 月份到给定月份之间的每一个月,根据每个月的天数调用getDayOfMonth(year, m)函数进行累加。
  5. 确定第一天是星期几部分

    • 使用总天数加 1 对 7 取余,得到的结果即为给定日期是星期几。
    • 使用match语句根据余数的值进行相应的输出,确定第一天是星期几。
  6. 格式化输出日历部分

    • 首先输出星期几的表头,即 “星期日 \t 星期一 \t 星期二 \t 星期三 \t 星期四 \t 星期五 \t 星期六 \t”。
    • 根据给定月份的第一天是星期几,在输出日期之前先输出相应数量的制表符,以实现对齐。使用counter变量记录已经输出的日期数量,初始值为第一天是星期几的值。
    • 然后循环输出每个日期,每输出一个日期后输出两个制表符,以保持格式整齐。
    • 每输出 7 个日期后进行换行,以实现日历的格式化输出。使用counter变量对 7 取余,当余数为 0 时进行换行。

六、测试与验证

为了验证我们的代码是否正确,我们可以进行以下测试:

  1. 输入合法的年份和月份,检查输出的总天数、第一天是星期几以及日历格式是否正确。
  2. 输入闰年和非闰年的年份,检查 2 月份的天数是否正确。
  3. 输入不合法的年份或月份,检查是否能正确提示用户重新输入。

以下是一些测试示例:

测试 1:输入 2024 年 10 月

输入:

2024
10

输出:

请输入年份(数字|年份大于1900)输入q退出:2024
请输入月份(1-12):10
2024年10距离 1900-01-01相差45564天
2024年10月的第一天是星期二
星期日	星期一	星期二	星期三	星期四	星期五	星期六	1		2		3		4		5		
6		7		8		9		10		11		12		
13		14		15		16		17		18		19		
20		21		22		23		24		25		26		
27		28		29		30		31		

测试 2:输入 2023 年 2 月

输入:

2023
2

输出:

请输入年份(数字|年份大于1900)输入q退出:2023
请输入月份(1-12):2
2023年2距离 1900-01-01相差44956天
2023年2月的第一天是星期三
星期日	星期一	星期二	星期三	星期四	星期五	星期六	1		2		3		4		
5		6		7		8		9		10		11		
12		13		14		15		16		17		18		
19		20		21		22		23		24		25		
26		27		28		

测试 3:输入不合法的年份或月份

输入:

abc
10

输出:

请输入年份(数字|年份大于1900)输入q退出:abc
请输入数字

输入:

2024
13

输出:

请输入年份(数字|年份大于1900)输入q退出:2024
请输入月份(1-12):13
输入的数据不合法,请输入1~12之间的数字

测试 4:输入q退出

 输入:

q

输出:

请输入年份(数字|年份大于1900)输入q退出:q
你已退出,欢迎下次再来

通过以上测试,我们可以看到代码能够正确地处理各种输入情况,并输出正确的结果。

七、总结与展望

        本文介绍了如何使用 Python 实现日期计算和日历格式化输出的功能。通过判断闰年、计算月份天数、计算总天数、确定第一天是星期几以及格式化输出日历等步骤,我们成功地实现了一个简单而实用的日期处理程序。

        这个程序可以应用于各种场景,比如日程安排、项目管理、历史研究等。同时,我们也可以对程序进行进一步的扩展和优化,比如添加更多的功能,如计算两个日期之间的间隔天数、判断某个日期是否在特定的时间段内等。

        此外,我们还可以使用 Python 的第三方库来处理日期和时间相关的任务,比如datetime模块和pandas库等。这些库提供了更强大的功能和更方便的接口,可以大大提高我们的开发效率。

        Python 是一种非常强大的编程语言,它提供了丰富的工具和库来处理各种任务。通过本文的介绍,希望读者能够对 Python 的日期处理有更深入的了解,并能够在实际的项目中应用这些知识。

http://www.15wanjia.com/news/182876.html

相关文章:

  • 设计网站推荐什么主题wordpress用什么主题
  • 大朗镇做网站企业建立一个网站步骤
  • 电子元器件网站怎么做免费企业推广网站
  • 成都创新互联做的网站怎么样湖北大网站建设
  • 余杭区网站建设如何注册公司费用
  • 制作官网2022网站seo
  • 南宁网站定制开发网站里的聊天怎么做
  • 东莞市长安镇做网站网站建设工作思路
  • 网站推广可采用的方法有哪些淮北论坛官网app
  • wordpress < 3.6.1长沙seo步骤
  • 贵阳免费做网站微博图床wordpress
  • 长沙做旅游网站公司旧房翻新装修哪家公司好
  • .net网站架设牡丹江建设银行网站
  • 国内视频培训网站建设网站怎么制作成软件
  • 手表网站建站望城网站建设
  • 在哪个网站做淘宝水印海门公司网站制作费用
  • 中小企业网站建设价格嘉兴网嘉兴网站建设
  • 关于.net网站开发外文书籍浙江省永康市建设局网站进不去
  • 网站文章内容的选取建免费的网站吗
  • 游戏网站建设项目规划书案例seo诊断报告怎么写
  • 合肥seo整站优化阿里云做的网站
  • 重庆网站提示大型网架加工厂
  • 美容医院网站建设网站开发概要设计
  • wordpress 多个网站威海自适应网站建设
  • 南宁百度网站公司吗个人简历免费模板
  • 河北做网站的公司wordpress数据怎么备份
  • 哪些网站有二维码网站备案工信部时间
  • 道滘做网站一个域名可以建几个网站
  • 酒店官方网站的功能建设现在建设网站都用什么软件下载
  • wordpress+网站白屏做网站优化期间能收到网站吗