bill=''' 账单:6月 1.伙食费,-2000 2.零花钱,-500 3.房租,-3000 4.衣服,-1000 5.工资,+10000 6.理财,+800 7.朋友聚餐,-500 8.买衣服,-500 9.水电费,-100 10.油费,-300 11.全勤奖,+1000 12.货币基金,+600 13.手机费,-100 14.水果,-300 15.地铁+公交,-400 '''
处理数据
虽然我们已经在内存里声明一个变量bill来记录我们的月账单,但是我们需要进行加工,对数据进行切割和加工,还要进行清洗!
家庭的开销,我们分收入和支出两部分,而原生的数据,里面有中文,序列数字,标点,还有开销的数字,所以我们需要清洗并提取数据。

先对账单进行头尾的处理,第一行是我们的账单的名字,剩下的都是具体的账单内容
切割数据

我们把数据用推导列表进行展开,通过'-'认为是每月开销,'+'认为是每月收入。然后再对每一段数据进行清洗,取掉序列标号。
接着把开销的字符串变成整数
里面有大量的字符串,比如'-100','+1000',这些都是字符串,我们必须转为整型或者浮点型才能计算

计算开销明细
经过上面的数据准备,我们可以动手进行计算,看看花了多少钱,还结余多少

>> 收入: 12400.0 支出: 8700.0 结余: 3700
炫酷的账本来了
如果说上面这些加加减减好想也没有什么特别的,只是进行数据的统计,谈不上很炫酷呀。那么下面几行代码可以才是我们的重头戏,几行代码立马让你眼前一亮:

支出的:

收入:

收入/支持比:


优化代码
如果让我们的代码功能更强大,增强容错功能!让用户输入的时候更方便,毕竟用户输入的数据不可能这么工整!
-
比如如果我们的用户输入的时候,开支用'-',而收入用可以省略'+',这样用户可以少输一个字符,更简洁;
-
比如输入‘15.地铁+公交,-400’ ,输入的时候会英文的逗号和中文的逗号不分,一不小心就写成‘15.地铁+公交,-400’

其实我们的代码只要改动几个字符,就能让我们的程序功能大增,让用户使用起来更爽。
我们在正则的地方,增加一行,
patt=re.compile(r'[\.\,\,]')
再清洗数据的,计算收入的时候改变一下判断
income=[re.split(patt, e)[1:] for e in body if '-' not in e]
浙公网安备 33010602011771号