码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 用python纯手写一个日历


    一、代码

    1. # 月份名称数组
    2. months = [
    3. "January", "February", "March", "April", "May", "June",
    4. "July", "August", "September", "October", "November", "December"
    5. ]
    6. # 每月天数数组
    7. month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    8. # 判断是否是闰年
    9. def leap_year(y):
    10. if (y % 100 != 0 and y % 4 == 0) or (y % 400 == 0):
    11. month_days[1] += 1
    12. # 计算某年某月某日到该年第一月第一日的日数
    13. def year_days(y, m, d):
    14. all_days = 0
    15. # 判断是否是闰年,闰年二月有29天
    16. leap_year(y)
    17. # 计算总日数
    18. for i in range(m - 1):
    19. all_days += month_days[i]
    20. all_days += d
    21. return all_days
    22. # 得到某年某月某日是星期几
    23. def week(y, m, d):
    24. all_days = 0
    25. if y == 1940:
    26. all_days = year_days(y, m, d) - 1
    27. else:
    28. # 计算总天数,包括闰年的额外一天
    29. for i in range(1940, y):
    30. all_days += 365 + ((y % 100 != 0 and y % 4 == 0) or (y % 400 == 0))
    31. all_days += year_days(y, m, d) - 1
    32. get = (all_days + 1) % 7
    33. return get
    34. # 打印某月的日历
    35. def show_month(y, m):
    36. # 判断是否是闰年,闰年二月有29天
    37. leap_year(y)
    38. week1 = week(y, m, 1)
    39. print('{}\n---------------------------'.format(month_days[m - 1]))
    40. print("Sun Mon Tue Wed Thu Fri Sat")
    41. date = 1
    42. # 遍历星期和日期
    43. while date <= week1 + month_days[m - 1]:
    44. flag = [0] * 7
    45. # 遍历一周的每一天
    46. for a in range(7):
    47. if date <= (week1 + month_days[m - 1]):
    48. if date < week1:
    49. flag[a] = -1
    50. else:
    51. flag[a] = date - week1
    52. else:
    53. flag[a] = -1
    54. date += 1
    55. # 打印一周的日期
    56. print(" ".join(f"{-1 if x == 0 else x:<4}" for x in flag))
    57. print()
    58. # 主函数
    59. def main():
    60. print("输入要查找的年月份")
    61. year = input("年:")
    62. month = input("月:")
    63. if not (year.isdigit() and month.isdigit()):
    64. print('请输入一个合法的日期!!!')
    65. else:
    66. show_month(int(year), int(month))
    67. if __name__ == "__main__":
    68. main()

    二、运行结果

  • 相关阅读:
    SpringSecurity 5.7.3中使用withObjectPostProcessor遇到的配置无效问题
    专利优先权是什么 专利优先权有哪些特点?
    linux删除软件
    基本 nosql 和 mongodb等数据库对比基本 nosql 和 mongodb等数据库对比
    DIV布局网购网站设计——品优购(4页) HTML+CSS+JavaScript 大学生网购网页设计模板代码 学生简单购物网站设计成品
    网络原理之IP协议
    力扣501 补9.13
    【MyBatis】MyBtis入门程序
    啥牌子的无线蓝牙耳机好用?无线蓝牙耳机推荐2022
    最优二叉搜索树问题(Java)
  • 原文地址:https://blog.csdn.net/weixin_58573288/article/details/139694061
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号