精华内容
下载资源
问答
  • Python制作日历

    2021-07-29 13:12:28
    得出的结果可以推出: w = 1:星期一 w = 2:星期二 w = 3:星期三 w = 4:星期四 w = 5:星期五 w = 6:星期六 w = 7:星期日 制作日历,还要想到如何判断某一年是瑞年还是平年,那么就可以用到下面这个函数进行...

    首先要明白一个公式:d = 天, m = 月份, y = 年

    w = (d + 2 * m + 3*(m + 1)//5 + y + y // 4-y//100 + y//400) % 7+1

    这个公式是基姆拉尔森公式,计算的结果是对7求余再加1,从而可以推算出星期几,但当月份为一月份或者二月份是,这个时候需要将年份减一,月份为等于一时,月份变为13,月份为二时,月份为14。得出的结果可以推出:

    w = 1:星期一
    w = 2:星期二
    w = 3:星期三
    w = 4:星期四
    w = 5:星期五
    w = 6:星期六
    w = 7:星期日

    制作日历,还要想到如何判断某一年是瑞年还是平年,那么就可以用到下面这个函数进行判断

    def is_leap_year(y):
        if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
            return True
        return False

    最后就是进行判断一个月有多少天,函数如下:

    def get_days_in_month(y, m):
        if m in [1, 3, 5, 7, 8, 10, 12]:
            return 31
        elif m in [4, 6, 9, 11]:
            return 30
        else:
            return 29 if is_leap_year(y) else 28

    运行结果为:

    最后完整的代码如下:

    def get_week_with_date(y, m, d):
        y = y-1 if m == 1 or m == 2 else y
        m = 13 if m == 1 else (14 if m == 2 else m)
        w = (d + 2 * m + 3*(m + 1)//5 + y + y // 4-y//100 + y//400) % 7+1
        return w
    
    
    def is_leap_year(y):
        if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
            return True
        return False
    
    
    def get_days_in_month(y, m):
        if m in [1, 3, 5, 7, 8, 10, 12]:
            return 31
        elif m in [4, 6, 9, 11]:
            return 30
        else:
            return 29 if is_leap_year(y) else 28
    
    
    while True:
        year = int(input('请输入年份:'))
        month = int(input('请输入月份:'))
        if month > 12:
            print('月份输入不正确,请重新输入')
            month = int(input('请输入月份:'))
        print('一 二 三 四 五 六 日')
        print('-'*20)
        days = get_days_in_month(year, month)
        for i in range(1, days+1):
            w = get_week_with_date(year, month, i)
            if i == 1:
                print(f"{' ' * (w-1) *3}", end='')
            if w == 1:
                print("")
            print(f'{i:2d}', end=' ')
        print("")

     

    展开全文
  • 本文实例展示了Python生成日历的实现方法。该实例可实现一个月的日历生成5x7的列表,列表里的没个日期为datetime类型,采用python自带的 calendar 模块实现。程序运行结果如下:python test.py 2014 092014-08-31 ...

    本文实例展示了Python生成日历的实现方法。该实例可实现一个月的日历生成5x7的列表,列表里的没个日期为datetime类型,采用python自带的 calendar 模块实现。

    程序运行结果如下:

    python test.py 2014 09

    2014-08-31 2014-09-01 2014-09-02 2014-09-03 2014-09-04 2014-09-05 2014-09-06

    2014-09-07 2014-09-08 2014-09-09 2014-09-10 2014-09-11 2014-09-12 2014-09-13

    2014-09-14 2014-09-15 2014-09-16 2014-09-17 2014-09-18 2014-09-19 2014-09-20

    2014-09-21 2014-09-22 2014-09-23 2014-09-24 2014-09-25 2014-09-26 2014-09-27

    2014-09-28 2014-09-29 2014-09-30 2014-10-01 2014-10-02 2014-10-03 2014-10-04

    python代码如下:

    #coding:utf-8

    # Last modified: 2014-08-21 11:08:08

    import calendar

    import datetime

    import sys

    def getcal(y, m):

    # 从周日开始

    cal = calendar.Calendar(6)

    if not isinstance(y, int): y = int(y)

    if not isinstance(m, int): m = int(m)

    if m == 1: # 1月份

    py = y - 1; pm = 12;

    ny = y; nm = 2

    elif m == 12: # 12月份

    py = y; pm = 11

    ny = y + 1; nm = 1

    else:

    py = y; pm = m - 1

    ny = y; nm = m + 1

    pcal = cal.monthdayscalendar(py, pm) # 上一月

    ncal = cal.monthdayscalendar(ny, nm) # 下一月

    ccal = cal.monthdayscalendar(y, m) # 当前

    w1 = ccal.pop(0) # 取第一周

    w2 = ccal.pop() # 取最后一周

    wp = pcal.pop() # 上个月的最后一周

    wn = ncal.pop(0) # 下个月的第一周

    #r1 = [datetime.date(y, m ,w1[i]) or wp[i] for i in range(7)]

    r1 = [w1[i] and datetime.date(y, m, w1[i]) or datetime.date(py, pm, wp[i]) for i in range(7)]

    r2 = [w2[i] and datetime.date(y, m, w2[i]) or datetime.date(ny, nm, wn[i]) for i in range(7)]

    # 转datetime

    result = []

    result.append(r1) # 第一周

    for c in ccal: # 其他周

    result.append([datetime.date(y,m,i) for i in c])

    result.append(r2) # 最后一周

    return result

    if __name__ == '__main__':

    for w in getcal(sys.argv[1], sys.argv[2]):

    for d in w:

    print d,

    print

    希望本文所述实例对大家的Python程序设计有所帮助。

    本文标题: python生成日历实例解析

    本文地址: http://www.cppcns.com/jiaoben/python/112588.html

    展开全文
  • @Blooper,我编写了下面的代码,其中函数show_formatted_calendar()接受5个参数。在前2个是必需参数,后3个是可选参数,如果要更改表的外观,可以传递这些参数。在在代码中,我调用了show\u formatted\u calendar...

    @Blooper,我编写了下面的代码,其中函数show_formatted_calendar()接受5个参数。在

    前2个是必需参数,后3个是可选参数,如果要更改表的外观,可以传递这些参数。在

    在代码中,我调用了show\u formatted\u calendar()3次。在show_formatted_calendar() returns a formatted calendar string that you can print on console, save in file or store in variable for reuse.

    如果您运行它,它将要求您输入前2个必需参数的值,并使用最后3个参数的默认值(在第一次调用中)。在

    在第2次和第3次调用中,它对前2个参数进行静态调用,并重写最后3个函数参数的默认值,以更改在底部提供的输出中可以看到的表的外观。在Customizing tables using optional parameters

    spaces» Number of spaces before and after cell values. Default is 1.

    fill_char» Charater to be used to join the 2 joints/corners. Default is -.

    corner_char» A character used at joints or corners of calender table. default is +.

    请看下面的代码。在def show_formatted_calendar(no_of_days, sun_starts_from, spaces=1, fill_char='-', corner_char='+'):

    days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];

    blank_fields = 0; # Blank fields in first row(may vary in range [1, 6])

    if not(no_of_days >= 28 and no_of_days <= 31):

    print 'Input Error: Number of days should be in interval [28, 31].';

    return;

    if not(sun_starts_from >= 1 and sun_starts_from <= 7):

    print 'Input Error: Sunday should be inin interval [1, 7].'

    return;

    string = fill_char*spaces; # -

    decorator_line = string + 3 * fill_char + string; # -

    separator_line = (corner_char + decorator_line) * 7 + corner_char; # + -+ -+ -+ -+ -+ -+ -+

    # First line

    formatted_calendar = separator_line + '\n';

    # Second line

    line_spaces = ' ' * spaces;

    days_string = "|" + line_spaces + (line_spaces + '|' + line_spaces).join(days) + line_spaces + '|';

    formatted_calendar += days_string + '\n';

    # Third line

    formatted_calendar += separator_line + '\n';

    # Fourth line (No of possible blank fields at the begining)

    blank_fields = (8 - sun_starts_from) % 7; # 1=>0, 2=>6, 3=>5, 4=>4, 5=>5, 6=>2

    blank_string = (('|' + line_spaces) + (3 * ' ') + line_spaces) * blank_fields;

    date_string = '';

    i = blank_fields + 1;

    day = 1;

    while day <= no_of_days:

    date_string += '|' + line_spaces + '%-3s' % (day) + line_spaces;

    if i % 7 == 0:

    date_string += '|\n';

    i += 1;

    day += 1;

    # No of possible blank fields in last line

    last_blank_fields = 7 - ((no_of_days - (7 - blank_fields)) % 7);

    last_blank_string = ('|' + line_spaces + 3 * ' ' + line_spaces) * last_blank_fields + '|';

    formatted_calendar += (blank_string + date_string) + last_blank_string + '\n';

    formatted_calendar += separator_line + '\n';

    return formatted_calendar;

    # Starts here

    if __name__ == "__main__":

    try:

    no_of_days = int(raw_input('Enter number of days of month(>=28 & <=31) : ').strip());

    sun_starts_from = int(raw_input('Sunday starts from which date(>=1 & <=7) : ').strip());

    # First call

    formatted_calendar = show_formatted_calendar(no_of_days, sun_starts_from);

    print formatted_calendar;

    # Second call (static input)

    print "\nFor Days 31 days where sunday starts from 4:-\n"

    formatted_calendar = show_formatted_calendar(31, 4, 2, '*', '.');

    print formatted_calendar;

    # Third call (static input)

    print "\nFor Days 29 days where sunday starts from 2:-\n"

    formatted_calendar = show_formatted_calendar(29, 2, 3, '~');

    print formatted_calendar;

    except Exception as error:

    print 'Error occurred. ', error;

    输出»

    ^{pr2}$

    展开全文
  • 日历是以1900年1月1日 为基础的 那天的星期1是# 判断是否是闰年def rn(i): # 判断是不是闰年 if (i % 400 == 0) or (i % 4 == 0 and i % 100 != 0): return True else: return False# 计算总天数def days(y, m): # ...

    20181023131606026617.png

    日历是以1900年1月1日 为基础的 那天的星期1是

    # 判断是否是闰年def rn(i): # 判断是不是闰年 if (i % 400 == 0) or (i % 4 == 0 and i % 100 != 0): return True else: return False# 计算总天数def days(y, m): # 总年数 leap_year = [] common_year = [] for i in range(1900, y): if rn(i): leap_year.append(i) else: common_year.append(i) # 本年之前总天数 y_days = 366*len(leap_year) + 365*len(common_year) # 本年本月之前总天数 m_days = 0 if m == 1: m_days = 0 elif m == 2: m_days = 31 elif m == 3: if rn(y): m_days = 60 else: m_days = 59 elif m == 4: if rn(y): m_days = 91 else: m_days = 90 elif m == 5: if rn(y): m_days = 121 else: m_days = 120 elif m == 6: if rn(y): m_days = 151 else: m_days = 150 elif m == 7: if rn(y): m_days = 182 else: m_days = 181 elif m == 8: if rn(y): m_days = 213 else: m_days = 212 elif m == 9: if rn(y): m_days = 244 else: m_days = 243 elif m == 10: if rn(y): m_days = 274 else: m_days = 273 elif m == 11: if rn(y): m_days = 305 else: m_days = 304 elif m == 12: if rn(y): m_days = 335 else: m_days = 334 all_days = y_days + m_days return all_days# 判断本月第一天是星期数def f_day(all_days): week = 0 if all_days % 7 == 0: week = 1 elif all_days % 7 == 1: week = 2 elif all_days % 7 == 2: week = 3 elif all_days % 7 == 3: week = 4 elif all_days % 7 == 4: week = 5 elif all_days % 7 == 5: week = 6 elif all_days % 7 == 6: week = 7 return week# 判断需要显示月份当月天数def m_d(y, m): m_30 = [4, 6, 8, 9, 11] m_31 = [1, 3, 5, 7, 8, 10, 12] if rn(y) and m == 2: m_day = 29 else: if m in m_31: m_day = 31 elif m in m_30: m_day = 30 else: m_day = 28 return m_day# 打印日历def cal(m_day, week): # 第一行 # print(m_day) s1 = ‘星期日‘ + 3*‘ ‘ + ‘星期一‘ + 3*‘ ‘ + ‘星期二‘ + 3*‘ ‘ + ‘星期三‘ + 3*‘ ‘ + ‘星期四‘ + 3*‘ ‘ + ‘星期五‘ + 3*‘ ‘ + ‘星期六‘ print(s1) if week == 7: for i in range(1, m_day+1): if i < 10: s = 2 * ‘ ‘ + str(i) + 4 * ‘ ‘ else: s = 2 * ‘ ‘ + str(i) + 3 * ‘ ‘ print(s, end=‘‘) if (i + len(s)) % 7 == 0: print(‘‘) else: # week不是星期日的,需要往后移动week个位置 print(8*week*‘ ‘, end=‘‘) for i in range(1, m_day+1): if i < 10: s = 3 * ‘ ‘ + str(i) + 4 * ‘ ‘ else: s = 3 * ‘ ‘ + str(i) + 3 * ‘ ‘ print(s, end=‘‘) if (week + i) % 7 == 0: print(‘‘)if __name__ == ‘__main__‘: y = int(input(‘请输入年份‘)) m = int(input(‘请输入月份‘)) all_days = days(y, m) week = f_day(all_days) print(week) m_day = m_d(y, m) print(m_day) cal(m_day, week)

    展开全文
  • 我们可能在编程考试里遇到过这样的编程题,对于基础不太好的小伙伴,可能很头疼这个流程,之前也跟大家说过...制作一个日历import calendarfrom tkinter import *root = Tk()labels = [['Mon','Tue','Wed','Thu','...
  • https://www.xin3721.com/eschool/pythonxin3721/以下代码用于实现简单计算器实现,包括两个数基本的加减乘除运输:# Filename : test.py# author by : www.w3cschool.cn# 定义函数def add(x, y):"""相加"""return x...
  • 最近我在看《Python编程快速上手-让繁琐工作自动化》一书,看到书中「处理Excel电子表格」章节时触发了灵感,想着我也可以用 Python 做出一份专属日历。使用openpyxl模块,读取和修改Excel电子表格,再通过calendar...
  • 我想这差不多就可以了。# List of tuples for Months and date ranges# + 1 added to avoid confusion of max day rangecalender = [('January', range(1, 31 + 1)),('Feburary', range(1, 28 + 1)),('March', range...
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。数据处理从网站下载的数据为逐小时数据,每天一个文件。...
  • 原标题:利用Python自动化生成明星定制日历!源 /法纳斯特本次内容有感于《Python编程快速上手-让繁琐工作自动化》。根据书中的「处理Excel电子表格」章节内容,做出一份专属日历。使用的模块为openpyxl,一个能读取...
  • def is_leap_year(year): if year % 4 == 0 and year%100!=0 or year % 400 == 0: return True else: return False def get_day_of_month_num(year,month): if month in(1,3,5,7,8,10,12): ...
  • 本文讲述了Python创建日历的...此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,linux下大概以utf-8为准(未测试)#coding=gbk# -*- coding: cp936 -*-# 制作一个日历...
  • 此程序在windows下测试通过,由于python字符编码直接输出给操作系统,so win下以gbk ansi为准,linux下大概以utf-8为准(未测试)核心代码: 代码示例:#coding=gbk# -*- coding: cp936 -*-# 制作一个日历(只显示阳历...
  • 然而 Python 中由于 Global Interpreter Lock(全局解释锁 GIL )的存在,每个线程在在执行时需要获取到这个 GIL ,在同一时刻中只有一个线程得到解释锁的执行, Python 中的线程并没有真正意义上的并发执行,多线程...
  • Python创建日历实例

    2020-12-25 02:02:16
    本文讲述了Python创建日历的方法,与以往...# 制作一个日历(只显示阳历日期) '''实现方法:不使用python提供的calendar,根据给出的日期计算: 1.先根据输入年份得到这一年的第一天是星期几((year + (year - 1)/4 -
  • 我们可能在编程考试里遇到过这样的编程题,对于基础...python tkinter制作一个日历 import calendar from tkinter import * root = Tk() labels = [['Mon','Tue','Wed','Thu','Fri','Sat','Sun']] MonthCal = c
  • python农历日历源码

    2007-06-25 20:55:48
    python农历日历源码
  • python输出指定月份日历的方法本文实例讲述了python输出指定月份日历的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/pythonimport calendarcal = calendar.month(2008, 1)print "Here is the calendar...
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。2019年全国各城市空气质量观测数据来源于:...
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。数据处理从网站下载的数据为逐小时数据,每天一个文件。...
  • tkinter 下拉日历控件网上找的不完善的tk日历进行修改的,可以快捷的找到并返回日期。 效果如下图,上面的是控件,下面的是调用demo窗口? 如下所示:# -*- coding:utf-8 -*- import calendarimport tkinter as tk...
  • 以下文章来源于Python实用宝典 ,作者Python实用宝典给自己10分钟(滑稽),python回你一个智慧与美貌并存的备忘小神器 相信它会给你带来不少方便(滑稽)一、环境说明开始之前,当然要跟小伙伴们交代一下运行环境咯...
  • Python calendar日历模块的常用方法

    千次阅读 2019-08-03 00:00:09
    您的办公桌有制作精美的日历,手机里也有日历,电脑里也有日历,随手可得。 但是,如果我们要在代码中处理日历,我们不可能自己查好,然后手动写到代码中,那样代码将会被写死,不合理,也很难维护。 在Python中...
  • 两行Python日历 这次,我将介绍如何使用Python轻松创建桌面日历。您可以使用Python日历模块轻松地输出日历。而且,您只需要编写两行程序即可。这次,我将介绍如何在Python中显示各种日历。 让我们编写一个显示...
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。2019年全国各城市空气质量观测数据来源于:...
  • 文章目录【Python数据可视化日历热图AI教程】Calendar日历热图 3例阅读和使用方法Demo案例及视频数据选择日历热图自定义类别区间日历热图基础日历热图 【Python数据可视化日历热图AI教程】Calendar日历热图 3例 ...
  • Turtle模块绝对是吸引非专业代码开发者学习Python入门的好工具,通过turtle几行代码的执行软件就会画出漂亮的图形,美观而且有成就感。这些漂亮的图形如三角形、五角星、机器猫等。在写代码的时候改变几个参数,就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,659
精华内容 1,063
关键字:

python制作日历

python 订阅