You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求「计算年内已过天数」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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:40:22