求「计算年内已过天数」Python程序对应的流程图构建方案
我是编程新手,已经完成了一款「输入日期计算当年已过天数」的Python程序(代码如下)。程序满足以下要求:使用monthDays列表存储各月天数、自定义函数、考虑闰年、不可调用Python日期库,目前程序可正常运行,但不知道如何构建对应的流程图,寻求指导。
class Date: def __init__(self, d, m, y): self.d = d self.m = m self.y = y # store number of days in all months from # January to Dec. monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # counts number of leap years # before the given date def countLeapYears(d): years = d.y # Check if the current year needs to be considered # for the count of leap years or not if (d.m <= 2): years -= 1 # An year is a leap year if it is a multiple of 4, # multiple of 400 and not a multiple of 100. return int(years / 4) - int(years / 100) + int(years / 400) # number of days between two # given dates def getDifference(dt1, dt2): # count using years and day n1 = dt1.y * 365 + dt1.d # Add days for months in given date for i in range(0, dt1.m - 1): n1 += monthDays[i] # leap year is of 366 days, # Add a day for every leap year n1 += countLeapYears(dt1) n2 = dt2.y * 365 + dt2.d for i in range(0, dt2.m - 1): n2 += monthDays[i] n2 += countLeapYears(dt2) return (n2 - n1) dt2 = Date(0, 0, 0) dt2.y = int(input("input first dates year\n: ")) dt2.m = int(input("input first dates month\n: ")) dt2.d = int(input("input first dates day\n: ")) dt1 = Date(1,1,dt2.y) print(getDifference(dt1, dt2)+1, "days")
流程图构建指导
一、主程序整体流程
- 开始
- 依次输入年份、月份、日期,创建
dt2对象 - 创建当年1月1日的
dt1对象(参数为1, 1, 输入的年份) - 调用
getDifference(dt1, dt2),将返回值加1后输出结果 - 结束
二、getDifference函数流程
- 函数入口(接收
dt1、dt2两个参数) - 计算
n1:- 初始值赋值:
n1 = dt1.y * 365 + dt1.d - 循环遍历索引
0到dt1.m-2,累加monthDays[i]到n1 - 调用
countLeapYears(dt1),将结果加到n1
- 初始值赋值:
- 计算
n2:- 初始值赋值:
n2 = dt2.y * 365 + dt2.d - 循环遍历索引
0到dt2.m-2,累加monthDays[i]到n2 - 调用
countLeapYears(dt2),将结果加到n2
- 初始值赋值:
- 返回
n2 - n1,函数结束
三、countLeapYears函数流程
- 函数入口(接收
d参数) - 赋值:
years = d.y - 判断
d.m <= 2是否成立:- 是:执行
years -= 1 - 否:跳过此步骤
- 是:执行
- 计算闰年数:
int(years/4) - int(years/100) + int(years/400) - 返回计算结果,函数结束
四、绘制注意事项
- 用矩形框表示执行步骤(如输入、赋值、循环累加)
- 用菱形框表示判断分支(如
d.m <=2的条件判断) - 用圆角矩形表示开始/结束节点
- 用箭头标注流程走向
- 子函数可单独绘制流程图,主流程中用带双边框的矩形框标注子函数调用,指向对应的子流程
内容的提问来源于stack exchange,提问作者Pufferfish
相关产品推荐
相关产品推荐

