python实现输出日历

终于还有一个星期就放暑假了,可以抽出时间来学点新的东西,想想半年多没登CSDN差点把密码忘了我也是醉了。

废话不多说,正文开始

以下是使用几个简单的函数实现给定指定年月实现当月日历输出的程序,大部分内容引用自网易云课堂哈工大开设的Python程序设计入门函数一章的课后作业。

程序设计图如下:


自下往上看:

  • is_leap_year 判断是否为闰年
  • get_num_of_days_in_month 获得每月的天数
  • get_total_num_of_days 获得自1800年1月1日以来经过的天数
  • get_start_day 获得每月1日为星期几
  • print_month_body 打印日历的数字部分
  • get_month_name 获得每月的名称
  • print_month_title 打印日历标题与头部部分
具体实现如下:

# coding=utf-8
__author__ = 'Leonard'


def is_leap_year(year):
    # 判断是否为闰年
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    else:
        return False


def get_num_of_days_in_month(year, month):
    # 给定年月返回月份的天数
    if month in (1, 3, 5, 7, 8, 10, 12):
        return 31
    elif month in (4, 6, 9, 11):
        return 30
    elif is_leap_year(year):
        return 29
    else:
        return 28


def get_total_num_of_day(year, month):
    # 自1800年1月1日以来过了多少天
    days = 0
    for y in range(1800, year):
        if is_leap_year(y):
            days += 366
        else:
            days += 365

    for m in range(1, month):
        days += get_num_of_days_in_month(year, m)

    return days


def get_start_day(year, month):
    # 返回当月1日是星期几,由1800.01.01是星期三推算
    return 3 + get_total_num_of_day(year, month) % 7


# 月份与名称对应的字典
month_dict = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June',
              7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}


def get_month_name(month):
    # 返回当月的名称
    return month_dict[month]


def print_month_title(year, month):
    # 打印日历的首部
    print '         ', get_month_name(month), '   ', year, '          '
    print '-------------------------------------'
    print '  Sun  Mon  Tue  Wed  Thu  Fri  Sat  '


def print_month_body(year, month):
    '''
    打印日历正文
    格式说明:空两个空格,每天的长度为5
    需要注意的是print加逗号会多一个空格
    '''
    i = get_start_day(year, month)
    if i != 7:
        print ' ', # 打印行首的两个空格
        print '    ' * i,   # 从星期几开始则空5*几个空格
    for j in range(1, get_num_of_days_in_month(year, month)+1):
        print '%4d' %j, # 宽度控制,4+1=5
        i += 1
        if i % 7 == 0:  # i用于计数和换行
            print ' '   # 每换行一次行首继续空格


#   主函数部分
year = int(raw_input("Please input target year:"))
month = int(raw_input("Please input target month:"))
print_month_title(year, month)
print_month_body(year, month)


运行示例:

实现起来难度不大,只是在格式控制上需要花点心思,具体详见print_month_body函数的注释。

第一次用Python编了一个有八十行的程序,希望大家多多指教。

Python中,可以使用matplotlib库来绘制彩色的螺旋正方形。matplotlib是一个强大的绘图库,能够创建高质量的2D图表。以下是使用matplotlib绘制彩色螺旋正方形的基本步骤: 1. 首先需要导入matplotlib.pyplot模块,并将其简称为plt。 2. 接着确定正方形的大小和螺旋的宽度等参数。 3. 利用循环结构,通过逐渐增加半径来绘制螺旋状的线条,每增加一圈就改变颜色,以产生彩色效果。 4. 最后使用plt.show()显示绘制的图形。 这里提供一个简单的代码示例: ```python import matplotlib.pyplot as plt import numpy as np # 定义绘制彩色螺旋正方形的函数 def draw_spiral_square(): # 设置正方形的边长 side = 20 # 设置螺旋的步长 step = 1 # 定义四个颜色,对应四条边 colors = ['red', 'green', 'blue', 'yellow'] color_index = 0 # 初始位置为正方形左下角 x = -side / 2 y = -side / 2 # 初始方向向上 dx, dy = 0, 1 for _ in range(20): # 调整循环次数以改变螺旋的长度 # 绘制边 for _ in range(4): x += dx * step y += dy * step plt.plot([x - side / 2, x + side / 2], [y - side / 2, y + side / 2], color=colors[color_index % 4]) # 改变方向和颜色 color_index += 1 dx, dy = dy, -dx plt.xlim(-side, side) plt.ylim(-side, side) plt.gca().set_aspect('equal', adjustable='box') plt.show() # 调用函数绘制彩色螺旋正方形 draw_spiral_square() ``` 在这个代码示例中,我们定义了一个函数`draw_spiral_square`,它首先设置了正方形的边长和螺旋的步长。然后,定义了四个颜色用于循环绘制四条边,使得每条边在螺旋的每一圈都是不同的颜色。通过调整循环次数,可以控制螺旋的长度和密度。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值