关键词搜索

源码搜索 ×
×

记账程序2.0

发布2021-09-02浏览463次

详情内容

需求背景:

为了更好的解放双手,提高记账效率,本人想要制作一个基于python的自动化记账程序,用于统计本人每星期、每月、每年,甚至是每日的盈亏记录,目前该程序是处于半自动化状态,后期会逐渐更新,争取全套流程纯自动化,不需要过多的人工参与,摆脱苦哈哈记账统计的耗时任务

需求总目标:

日账目:连接常用的支付通信软件,将自己每花费一笔,就自动归类在一个临时存储位置,然后这个临时存储位置可以用excel格式记录存储,并将其下载到指定的电脑桌面位置
星期账目:对一星期的花销和盈收做出统计,并用图的方式展示各种类花销情况和收入情况
月账目:对一个月(即四个星期)的花销和盈收做出统计,并用图的方式展示各种类花销情况和收入情况
年账目:对一年(即12个月)的花销和盈收做出统计,并用图的方式展示各种类花销情况和收入情况

唠嗑本次记账程序2.0出现背景:

上次写过一篇记账程序1.0,我对其中含有的漏洞进行填坑。这里有传送门:自动化记账程序1.0,简短回顾一下,上次的程序只是对一星期的的总收支和总收入搜集并统计,并实时计算出剩余的余额还有多少。可是这未免过于单调,因为这个只能是简单描述,并不能让人更加清晰知道自己的收入是在哪一块占据的多?自己的支出是在哪一块占据的多?并且纯数字的展示,会不会对数字不敏感的人不友好呀(比如说本人)

本次记账程序2.0的目标:

对上次的记账程序1.0做出改进,额外增加对收/支种类的展述和对收/支种类的数据统计,并叠加对一星期总收入、总支出和剩余额的柱状图呈现,和对收/支出种类的数据统计的饼图呈现。

具体内容

前期准备工作

这次实现记账程序2.0的准备工作,是基于上次的记账程序1.0,这里有传送门:自动化记账程序1.0;除此之外,还要额外下载一个新python库,名为xlsxwriter库,这个库秒杀之前我给你们介绍的xlwt库,它不仅能写入数据,还能绘图,也支持xlsx格式的文件。如何下载,这里我因为篇幅原因,就只抛出核心代码:pip install xlsxwriter,具体如何操作,可以回顾我上一篇文章,这里有传送门:自动化记账程序1.0

编码思路:

在实现自动化记账程序时,容我先捋清一下思路:
1.思想认识上,这个是基于上一篇文章的思路并进行改良,额外新增对一星期收/支类别统计,并以可视化图形呈现的,第一次看这篇文章的一定要回顾上一期我写过的记账程序1.0呀【重要事情说三遍~】
2.对新增部分首先要对原本excel模板做出改进
3.记录单表情况下,对收/支种类的名称获取,并将其中涉及到每个收/支的金额做统计
4.然后扩大范围,从记录单表到扩大到多表(即从2021年5月30号到2021年6月5号的记账表)
5.接下来就是对图形的绘制了,这里包括绘制收入、支出和剩余利润的柱形图和收/支的类别数据的饼图
6.并将统计到的数据结果使用xlsxwriter库写入到excel表中,当然,本次不会再使用xlwt库,将会对原本程序1.0的写入excel代码做出改变
7.打包成.exe脚本,这里就不会详细介绍实现过程,只抛出核心代码和结果,不懂的可翻阅我写过的记账程序1.0【重要事情说四遍~~】

开始编码:

编码思路认识清楚后,就愉快编码了:

excel模板改造

0.png


以上这副图是程序1.0的excel模板

1.png

以上这幅图是改良后,程序2.0的excel模板
这个在接下来程序定位获取数据的时候很重要,如果是小白,可以对照查看

导入第三方库

这里要导入三个python库,分别是xlrd库、calendar、xlsxwriter
导入库的源码如下【含注释,最好手动敲写】

  1. import xlrd# 从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件
  2. import calendar# 导入日历库
  3. import xlsxwriter # 用于将数据和格式化信息写入Excel文件的库

对收/支出种类描述做单表统计

要实现收/支出种类描述做单表统计,可以先从如何实现支出种类描述的单表统计开始,思路是:
打开文件-->选择要统计数据的表格-->获取数据-->用函数来进行封装
对单表的支出种类描述统计的源码如下【含注释,最好手动敲写】:

  1. # 获取最完整的支出分类字典,其中end_time为结束时间:
  2. def get_full_pay_series(end_time):
  3. # 存储完整的支出种类名称
  4. full_pay_series = {}
  5. # 确定文件路径
  6. excel_url = str(end_time)
  7. # 打开xlsx的文件
  8. data = xlrd.open_workbook(excel_url)
  9. #打开第一张表
  10. table = data.sheets()[0]
  11. # 获取第四行的种类数据【从0开始】
  12. pay_series = table.row_values(3)
  13. # 去除种类列表里的空值:
  14. while "" in pay_series:
  15. pay_series.remove("")
  16. # 将完整的种类遍历,并存储到full_series字典中,并设置其默认值是0
  17. for single_series in pay_series[1:]:
  18. full_pay_series.setdefault(single_series,0)
  19. return full_pay_series

同理,获取单表收入种类的方法也是类似的。
对单表的收入种类描述统计的源码如下【含注释,最好手动敲写】:

  1. # 获取最完整的收入分类字典,其中end_time为结束时间:
  2. def get_full_income_series(end_time):
  3. # 存储完整的收入种类名称
  4. full_income_series = {}
  5. # 确定文件路径
  6. excel_url = str(end_time)
  7. # 打开xlsx的文件
  8. data = xlrd.open_workbook(excel_url)
  9. #打开第一张表
  10. table = data.sheets()[0]
  11. # 获取第八行的种类数据【从0开始】
  12. income_series = table.row_values(7)
  13. # 去除种类列表里的空值:
  14. while "" in income_series:
  15. income_series.remove("")
  16. # 将完整的种类遍历,并存储到full_series字典中,并设置其默认值是0
  17. for single_series in income_series[1:]:
  18. full_income_series.setdefault(single_series,0)
  19. return full_income_series

对收/支出种类金额做单表统计

这个问题和刚才讲述如何对收/支出种类描述做单表统计的问题有异曲同工支出,处理的方式依旧是:
打开文件-->选择要统计数据的表格-->获取数据-->用函数来进行封装

对单表的支出种类金额统计的源码如下【含注释,最好手动敲写】:

  1. # 获取单张表的支出金额
  2. def get_single_pay_series(pay_url):# pay_url为支出表的路径
  3. # 确定文件路径
  4. excel_url = str(pay_url)
  5. # 打开xlsx的文件
  6. data = xlrd.open_workbook(excel_url)
  7. #打开第一张表
  8. table = data.sheets()[0]
  9. # 获取第四行的种类数据【从0开始】
  10. pay_series = table.row_values(3)
  11. # 去除种类列表里的空值:
  12. while "" in pay_series:
  13. pay_series.remove("")
  14. # 获取第六行的种类支出金额数据【从0开始】
  15. pay_series_val = table.row_values(5)
  16. # 去除种类列表里的空值:
  17. while "" in pay_series_val:
  18. pay_series_val.remove("")
  19. # 将支出种类和支出种类金额,用字典存储起来
  20. pay_series_dict = dict(zip(pay_series[1:],pay_series_val[1:]))
  21. return pay_series_dict

对单表的收入种类金额统计的源码如下【含注释,最好手动敲写】:

  1. # 获取单张表的收入金额
  2. def get_single_income_series(income_url):# income_url为收入表的路径
  3. # 确定文件路径
  4. excel_url = str(income_url)
  5. # 打开xlsx的文件
  6. data = xlrd.open_workbook(excel_url)
  7. #打开第一张表
  8. table = data.sheets()[0]
  9. # 获取第八行的种类数据【从0开始】
  10. income_series = table.row_values(7)
  11. # 去除种类列表里的空值:
  12. while "" in income_series:
  13. income_series.remove("")
  14. # 获取第十行的种类支出金额数据【从0开始】
  15. income_series_val = table.row_values(9)
  16. # 去除种类列表里的空值:
  17. while "" in income_series_val:
  18. income_series_val.remove("")
  19. # 将支出种类和支出种类金额,用字典存储起来
  20. income_series_dict = dict(zip(income_series[1:],income_series_val[1:]))
  21. return income_series_dict

获取一星期的表的收入和支出种类数据统计

从单表到对表,获取的思路大概类似,唯一不同是对多个文件进去的处理,因为我依旧是遵照用时间来定义每天的记账记录,因此要对时间做处理,不懂的可翻阅我写过的记账程序1.0【重要事情说五遍~】,并且要用字典或者列表装载结果,这里我两种都有使用。

获取一星期的表的收入和支出种类数据统计的源码如下【含注释,最好手动敲写】:

  1. # 获取一星期的表的收入和支出种类数据统计
  2. # start取记账的开始日期,如2021-5-23
  3. # end取记账的结束日期,如2021-5-29
  4. def get_pay_and_income_series(start,end):
  5. # 存储所有支出和收入的种类和值
  6. all_series_and_value = []
  7. # 分隔开始时间,分成年月日
  8. start_split = str(start).split("-")
  9. # 分隔结束时间,分成年月日
  10. end_split = str(end).split("-")
  11. # 确定结束文件的路径
  12. end_excel_url = "../1日账单/{}-{}-{}.xlsx".format(end_split[0],end_split[1],end_split[2])
  13. # 完整的支出种类名称【以最后的结束文件为主】
  14. full_pay_series = get_full_pay_series(end_excel_url)
  15. # 完整的收入种类名称【以最后的结束文件为主】
  16. full_income_series = get_full_income_series(end_excel_url)
  17. # 判断开始和结束的月份是否一致
  18. if int(start_split[1]) == int(end_split[1]):
  19. # 获取指定这个月的开始 到 结束的账单名
  20. for this_day in range(int(start_split[2]),int(end_split[2])+1):#【this_day指的是月的天数】
  21. # 确定文件路径
  22. this_excel_url = "../1日账单/{}-{}-{}.xlsx".format(start_split[0],start_split[1],this_day)
  23. # 获取单张表的支出种类和金额【索引从0开始】
  24. pay = get_single_pay_series(this_excel_url)
  25. # 遍历单张表的支出种类名称和金额
  26. for key,value in pay.items():
  27. # 如果支出种类名称在完整的支出种类名称中
  28. if key in full_pay_series:
  29. # 则取出他的值进行累计
  30. full_pay_series[key] += value
  31. else:
  32. # 否则保持不变
  33. full_pay_series[key]
  34. # 获取单张表的收入种类和金额【索引从0开始】
  35. income = get_single_income_series(this_excel_url)
  36. # 遍历单张表的支出种类名称和金额
  37. for key,value in income.items():
  38. # 如果支出种类名称在完整的支出种类名称中
  39. if key in full_income_series:
  40. # 则取出他的值进行累计
  41. full_income_series[key] += value
  42. else:
  43. # 否则保持不变
  44. full_income_series[key]
  45. else:
  46. # 获取这月的总天数
  47. this_month_day = calendar.monthlen(int(start_split[0]),int(start_split[1]))
  48. # 前部分:获取指定月的开始 到 这月结束的账单名
  49. for pre_day in range(int(start_split[2]),this_month_day+1):#【pre_day指的是这个月/年的天数】
  50. # 确定文件路径
  51. pre_excel_url = "../1日账单/{}-{}-{}.xlsx".format(start_split[0],start_split[1],pre_day)
  52. # 获取单张表的支出种类和金额【索引从0开始】
  53. pay = get_single_pay_series(pre_excel_url)
  54. # 遍历单张表的支出种类名称和金额
  55. for key,value in pay.items():
  56. # 如果支出种类名称在完整的支出种类名称中
  57. if key in full_pay_series:
  58. # 则取出他的值进行累计
  59. full_pay_series[key] += value
  60. else:
  61. # 否则保持不变
  62. full_pay_series[key]
  63. # 获取单张表的收入种类和金额【索引从0开始】
  64. income = get_single_income_series(pre_excel_url)
  65. # 遍历单张表的支出种类名称和金额
  66. for key,value in income.items():
  67. # 如果支出种类名称在完整的支出种类名称中
  68. if key in full_income_series:
  69. # 则取出他的值进行累计
  70. full_income_series[key] += value
  71. else:
  72. # 否则保持不变
  73. full_income_series[key]
  74. # 后部分:获取新月的开始 到 指定月结束的账单名
  75. for after_day in range(1,int(end_split[2])+1):#【after_day指的是新月/新年的天数】
  76. # 确定文件路径
  77. after_excel_url = "../1日账单/{}-{}-{}.xlsx".format(end_split[0],end_split[1],after_day)
  78. # 获取单张表的支出种类和金额【索引从0开始】
  79. pay = get_single_pay_series(after_excel_url)
  80. # 遍历单张表的支出种类名称和金额
  81. for key,value in pay.items():
  82. # 如果支出种类名称在完整的支出种类名称中
  83. if key in full_pay_series:
  84. # 则取出他的值进行累计
  85. full_pay_series[key] += value
  86. else:
  87. # 否则保持不变
  88. full_pay_series[key]
  89. # 获取单张表的收入种类和金额【索引从0开始】
  90. income = get_single_income_series(after_excel_url)
  91. # 遍历单张表的支出种类名称和金额
  92. for key,value in income.items():
  93. # 如果支出种类名称在完整的支出种类名称中
  94. if key in full_income_series:
  95. # 则取出他的值进行累计
  96. full_income_series[key] += value
  97. else:
  98. # 否则保持不变
  99. full_income_series[key]
  100. # 将一星期支出的种类和金额加入all_series_and_value列表中
  101. all_series_and_value.append(full_pay_series)
  102. # 将一星期收入的种类和金额加入all_series_and_value列表中
  103. all_series_and_value.append(full_income_series)
  104. return all_series_and_value

注:如果想要检测一下自己写的方法是否可行,可以做一个局部测试,就是调用自己写的函数来查看自己有没有成功获取自己想要的数据

  1. # 简单局部测试自己有无获取到数据
  2. result2 = get_pay_and_income_series("https://cdn.jxasp.com:9143/image/2021-5-30","https://cdn.jxasp.com:9143/image/2021-6-5")
  3. print(result2)

以上是本人自己测试的代码,仅作为参考,得到的效果图如下:

https://cdn.jxasp.com:9143/image/2.png

绘制柱状图,用作对“支出-收入-利润”的可视化呈现
这里是新增部分,绘图主要抓住获python教程取绘图的数据,绘图的系列数据(包含绘图的x/y位置)、图表的头部标题和x/y轴的标题、图表的风格和样式(这个看个人需要,都是修饰和美化的)。
这部分,本人建议小白最好尝试先用xlsxwriter库绘制一个柱状图,懂其中的使用方法,再根据业务需要写个函数封装起来,方便直接使用。

“支出-收入-利润”的柱形图绘制的源码如下【含注释,最好手动敲写】:

  1. # 绘制柱状图
  2. '''
  3. 参数讲解:
  4. sheet_name:为工作表名
  5. x_start_cell:为x轴的数据开始
  6. x_end_cell:为x轴的数据结束
  7. y_start_cell:为y轴的数据开始
  8. y_end_cell:为y轴的数据结束
  9. out_line_color:为柱状图的外框线【默认是yellow】
  10. bar_title:为设置柱状图的标题
  11. bar_x_axis:为设置X轴的名称
  12. bar_y_axis:为设置Y轴的名称
  13. tar_set_cell:为图表安放的位置
  14. x_offset:设置X轴的偏移量【默认是25】
  15. y_offset:设置Y轴的偏移量【默认是10】
  16. '''
  17. def char_bar(sheet_name,x_start_cell,x_end_cell,
  18. y_start_cell,y_end_cell,bar_title,bar_x_axis,
  19. bar_y_axis,tar_set_cell,out_line_color="yellow",x_offset=25,y_offset=10):
  20. # 将其所有输入的参数集合在同一个列表中,统统转换成字符型数据
  21. origin_data = [sheet_name,x_start_cell,x_end_cell,y_start_cell,y_end_cell,out_line_color,bar_title,bar_x_axis,bar_y_axis,tar_set_cell]
  22. ## 将列表里的数据统统转换成字符型数据
  23. str_data = list(map(str,origin_data))
  24. ## 创建一个柱状图(column chart)
  25. chart = workbook.add_chart({"type":"column"})
  26. ## 配置第一个系列数据
  27. chart.add_series({
  28. # "name":"={}!${}${}".format(str_data[0],str_data[1][0],str_data[1][1]),# 设置目标头部属性数据
  29. "categories":"={}!${}${}:${}${}".format(str_data[0],str_data[1][0],str_data[1][1],str_data[2][0],str_data[2][1]),# 设置x轴的数据
  30. "values":"={}!${}${}:${}${}".format(str_data[0],str_data[3][0],str_data[3][1],str_data[4][0],str_data[4][1]),# 设置y轴的数据
  31. "line":{"color":str_data[5]},# 设置柱状图的外框线
  32. })
  33. # 设置图表的标题、X轴、Y轴的信息
  34. chart.set_title({"name":str_data[6]})
  35. chart.set_x_axis({"name":str_data[7]})
  36. chart.set_y_axis({"name":str_data[8]})
  37. ## 设置图表风格
  38. chart.set_style(1)
  39. # 把图表插入到工作表,以及设置其偏移
  40. worksheet.insert_chart(str_data[9],chart,{"x_offset":x_offset,"y_offset":y_offset})

绘制饼图,用作对"支出的种类和金额"和"收入的种类和金额"的可视化呈现

饼图和柱形图绘制的思路是一致的,只不过选用的图类型不一样而已。

"支出的种类和金额"和"收入的种类和金额"的饼图绘制的源码如下【含注释,最好手动敲写】:

  1. # 绘制饼图
  2. '''
  3. 参数讲解:
  4. sheet_name:为工作表名
  5. series_start_cell:为种类的数据开始
  6. series_end_cell:为种类的数据结束
  7. value_start_cell:为种类的数据体开始
  8. value_end_cell:为种类的数据体结束
  9. bar_title:为设置饼图的标题
  10. tar_set_cell:为图表安放的位置
  11. x_offset:设置X轴的偏移量【默认是25】
  12. y_offset:设置Y轴的偏移量【默认是10】
  13. '''
  14. def chart_pie(sheet_name,series_start_cell,series_end_cell,
  15. value_start_cell,value_end_cell,bar_title,tar_set_cell,x_offset=25,y_offset=10):
  16. # 将其所有输入的参数集合在同一个列表中,统统转换成字符型数据
  17. origin_data = [sheet_name,series_start_cell,series_end_cell,value_start_cell,value_end_cell,bar_title,tar_set_cell]
  18. ## 将列表里的数据统统转换成字符型数据
  19. str_data = list(map(str,origin_data))
  20. ## 创建一个饼图(pie chart)
  21. chart = workbook.add_chart({"type":"pie"})
  22. ## 配置第一个系列数据
  23. chart.add_series({
  24. "categories":"={}!${}${}:${}${}".format(str_data[0],str_data[1][0],str_data[1][1],str_data[2][0],str_data[2][1]),# 获取目标头部属性
  25. "values":"={}!${}${}:${}${}".format(str_data[0],str_data[3][0],str_data[3][1],str_data[4][0],str_data[4][1]),# 获取里面的数据体
  26. })
  27. ## 设置图表的标题的信息
  28. chart.set_title({"name":str_data[5]})
  29. ## 设置图表的风格
  30. chart.set_style(10)
  31. ## 把图表插入到工作表,以及设置其偏移
  32. worksheet.insert_chart(str_data[6],chart,{"x_offset":x_offset,"y_offset":y_offset})

数据写入

恭喜你,直到这里,对前期的数据统计和数据绘图就结束了,现在是直接将整理好的数据写入并绘图了
但是要注意,这里的数据写入是用xlsxwriter库编写的,切记不可使用xlwt库哦~

数据写入的源码如下【含注释,最好手动敲写】:

  1. # 一星期内容汇总
  2. # start取记账的开始日期,如2021-5-23
  3. # end取记账的结束日期,如2021-5-29
  4. def write_pay_and_income(start,end):
  5. # 准备要写入的数据
  6. ## “支出-收入-利润”的表头
  7. headings1 = ["总支出","总收入","剩余利润"]
  8. ## 获取一星期表的收入和支出的数据
  9. accounts_value = get_pay_and_income(start,end)
  10. ## “支出-收入-利润”的表体
  11. data1 = [accounts_value[0],accounts_value[1],accounts_value[1]-accounts_value[0]]
  12. ## "支出的种类和金额"的表头
  13. headings2 = ["支出种类","支出金额"]
  14. ## "支出的种类和金额"的表体
  15. data2 = [
  16. list(get_pay_and_income_series(start,end)[0].keys()),
  17. list(get_pay_and_income_series(start,end)[0].values()),
  18. ]
  19. ## "收入的种类和金额"的表头
  20. headings3 = ["收入种类","收入金额"]
  21. ## "收入的种类和金额"的表体
  22. data3 = [
  23. list(get_pay_and_income_series(start,end)[1].keys()),
  24. list(get_pay_and_income_series(start,end)[1].values()),
  25. ]
  26. # 段落样式设计
  27. ## 表头
  28. header_style = {
  29. 'bold':True,
  30. 'font_name':"微软雅黑",
  31. 'border':True,
  32. 'align':'center',
  33. 'valign':'vcenter',
  34. 'bg_color':'yellow'
  35. }
  36. header_style_set = workbook.add_format(header_style)# 样式添加
  37. ## 表体
  38. text_style = {
  39. 'font_name':"微软雅黑",
  40. 'border':True,
  41. 'align':'center',
  42. 'valign':'vcenter'
  43. }
  44. text_style_set = workbook.add_format(text_style)# 样式添加
  45. # 设置H列的宽度为14
  46. worksheet.set_column("H:H",14)
  47. # 数据写入
  48. ## 单数据写入
  49. worksheet.write(0,0,"一星期的收支情况分析")
  50. worksheet.write(0,4,"一星期的收/支出种类分析")
  51. worksheet.write(2,4,"支出种类",header_style_set)
  52. worksheet.write(3,4,"支出金额",header_style_set)
  53. worksheet.write(5,4,"收入种类",header_style_set)
  54. worksheet.write(6,4,"收入金额",header_style_set)
  55. ## 多数据写入
  56. ### 写入“支出-收入-利润”的表头
  57. worksheet.write_row("A3",headings1,header_style_set)
  58. ### 写入“支出-收入-利润”的表体
  59. worksheet.write_row("A4",data1,text_style_set)
  60. ### 写入"支出的种类和金额"的表头
  61. worksheet.write_row("F3",data2[0],text_style_set)
  62. ### 写入"支出的种类和金额"的表体
  63. worksheet.write_row("F4",data2[1],text_style_set)
  64. ### 写入"收入的种类和金额"的表头
  65. worksheet.write_row("F6",data3[0],text_style_set)
  66. ### 写入"收入的种类和金额"的表体
  67. worksheet.write_row("F7",data3[1],text_style_set)
  68. # 绘图
  69. ## “支出-收入-利润”的柱状图
  70. char_bar(sheet_name = "七天汇总",x_start_cell = "A3",
  71. x_end_cell="C3",y_start_cell = "A4",y_end_cell = "C4",out_line_color = "red",
  72. bar_title = "收支情况图",bar_x_axis = "属性",bar_y_axis = "数值",tar_set_cell="A10")
  73. ## "支出的种类和金额"的饼图
  74. chart_pie(sheet_name = "七天汇总",series_start_cell = "F3 ",series_end_cell = "L3",
  75. value_start_cell = "F4",value_end_cell = "L4",bar_title = "支出种类分析",tar_set_cell="I10")
  76. ## "收入的种类和金额"的饼图
  77. chart_pie(sheet_name = "七天汇总",series_start_cell = "F6 ",series_end_cell = "L6",
  78. value_start_cell = "F7",value_end_cell = "I7",bar_title = "收入种类分析",tar_set_cell="Q10")
  79. # 关闭文件
  80. workbook.close()

自定义交互

当然以上这些都是用函数封装好了的,如果要使用,必须要调用其中的函数才可以哦~

自定义交互的源码如下【含注释,最好手动敲写】:

  1. start_time = input("开始时间:")# 设定账单统计开始时间,这里输入"https://cdn.jxasp.com:9143/image/2021-5-30"
  2. end_time = input("结束时间:")# 设定账单统计开始时间,这里输入"https://cdn.jxasp.com:9143/image/2021-6-5"
  3. # 确定保存文件的路径
  4. save_url = "./{}到{}的汇总表.xlsx".format(start_time,end_time)
  5. # 准备工作薄
  6. workbook = xlsxwriter.Workbook(save_url)
  7. # 创建sheet工作表【表名可写可不写,不写默认是sheet1
  8. worksheet = workbook.add_worksheet("七天汇总")
  9. write_pay_and_income(start_time,end_time)

生成.exe程序

到这里,你已经完成了核心的编码过程,现在正是将你写好的程序做成.exe程序吧。思路是:将.ipynb转换成.py文件将.py程序生成.exe文件,不懂的可翻阅我写过的记账程序1.0【重要事情不知说了几遍了~~】

这里抛出的是将.py程序生成.exe的核心代码,如下图

3.png


效果图如下:

完整效果展示.gif

结语

记账系统2.0就算完成了,就终结了……吗?嘻嘻,留个悬念,看自己能不能憋个大招,让各位看官耳目一新~

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载