- 帖子
- 29
- 精华
- 0
- 积分
- 133
- 阅读权限
- 20
- 注册时间
- 2016-3-9
- 最后登录
- 2017-4-3
|
本帖最后由 hymyg 于 2016-4-22 10:22 编辑
我是一个英文不好的Python新手学习者,断断续续学习了大概两个月时间,中间还有一个十来天的间隔。下面我以一个初学者的身份从非专业(很业余)的角度讲一下我的学习情况供跟我一样初学的人参考,同时附上我新写的一段程序的代码以及写这段代码的原因、经过。最重要的是代码中的一些问题还有很多疑惑,希望能得到老师们的解答。
学习的过程主要是看Crossin老师的微博公众号中发布的课程,同时还看了一本叫做《与孩子一起学编程》书。目前为止,Crossin的编程教室的课程还没有看完,《与孩子一起学编程》也没有看完。但仍旧忍不住动手写一些东西于是自己给自己设定题目,做出来以后再不停的给这个题目增加难度,比如对用户输入的数据进行校验,看看是不是合法,应该输入数字的地方是不是包含了非数字,比如能不能让界面再好看一些等等。总觉得把一个东西做出来时的成就感是支撑学习的一个很好的动力。但毕竟只是练习,写出来的东西没有什么实际用途,也没有人去用,很期待自己能写出一个能解决实际问题的程序并且有人去用。
前两天到财务部门去玩,财务有两个女会计休产假,剩下的两个财务人员忙的一头汗,我去的时候他们正在核对一笔的帐目。我听了一下大概明白了他们的意思,就想着能不能用程序来简化他们对帐的难度。
先说一下大概情况,我们包含的一项业务就是把一些地方租给别人经营,我们称之为商户。商户经营我们的地方,我们会收他们的租金、押金、水电费等。商户缴费是由财务开出发票或是收据(总之是票据,我只懂点财务皮毛)给商户,这个月应收你租金5000元、押金10000元、水电费500.50元…………商户直接到银行转帐给我们,拿着银行出据的转帐凭证给财务做帐。银行出具的转帐凭证通常是合计数:即15500.50元,或者商户分两次转帐又可能出现两10000元和5500.50两笔。
以上面的情况举例,财务就会形成下在这样一个帐目:
序号 日期 说明 科目 金额 备注
1 2015.4.20 XX商户租金、水电费、押金 银行存款 10000.00
2 2015.4.20 XX商户租金 、水电费、押金 银行存款 5500.50
3 2015.4.20 XX商户租金 其他收入-租金 -5000.00
4 2015.4.20 XX商户押金 其他应付款-押金 -10000.00
5 2015.4.20 XX商户水电费 其他应付款-水电费 -500.50
懂财务的人大概能明白这其实就是一笔帐:
借:银行存款 10000.00
银行存在 5500.50
贷:其他收入-租金 5000.00
其他应付款-押金 -10000.00
其他应付款-水电费 -500.50
在表格中把借方表达为正数,贷方表达为负方。
上面的表格因为数据量较小且只有一家商户,所以比较清楚,实际上有几十上百家商户,可是实际过程中经常发生帐目对不上的情况,比如将XXX商户的某笔水电费记到了YY商户头上等等情况。财务在对帐的时候通常是用银行过来的转帐凭证的总计对找对应科目的金额。比如上例中用15500.50去看下面对应科目哪些数字相加等于这个数。数据量一大,他们找起来的工作量就很大。
于是出于实战的心理,我主动提出帮他们写一段程序来处理这个问题。因为当是学了列表(list),感觉上这是列表能处理的问题。
我的处理过程是这样子的,先让他们在几务软件中将数据导出为一个excel文件,而文件的内容和版式就如上面的例子,然后再让他们将表格中只保留“序号”和“金额”一栏,其他的内容都删除掉,最后将只包含序号和金额的excel另存为.csv逗号分隔文件。
最后形成的列表就如同下面所示:- 1,-4700.00
- 2,4700.00
- 3,-105.00
- 4,-1780.00
- 5,1885.00
- 6,-10000.00
- 7,10000.00
- 8,-500.00
- 9,-4350.00
- 10,4545.00
- 11,-500.00
- 12,-1950.00
- 13,2040.00
- 14,-34537.00
- 15,34537.00
- 16,-11500.00
- 17,11500.00
- 18,-8060.00
- 19,8060.00
- 20,-18942.00
- 21,-18500.00
- 22,37442.00
- 23,-24460.00
- 24,24460.00
- 25,-7420.00
- 26,7420.00
- 27,-1116.00
- 28,-12792.00
- 29,13908.00
- 30,-9775.00
- 31,9775.00
- 32,-6308.00
- 33,6308.00
- 34,-513.00
- 35,-5880.00
- 36,6393.00
- 37,-1600.00
- 38,1600.00
- 39,-10059.00
- 40,10059.00
- 41,-740.00
- 42,-12692.00
- 43,13432.00
- 44,-13115.00
- 45,13115.00
- 46,-663.00
- 47,-7721.00
- 48,8384.00
- 49,-34670.00
- 50,34670.00
- 51,-600.00
- 52,-4800.00
- 53,5400.00
- 54,-867.00
- 55,-9925.00
- 56,10792.00
- 57,-3860.00
- 58,3860.00
- 59,-7800.00
- 60,7800.00
- 61,-2448.00
- 62,2448.00
- 63,-19160.00
- 64,19160.00
- 65,-2010.00
- 66,-23010.00
- 67,25020.00
- 68,-2274.00
- 69,-26040.00
- 70,28314.00
- 71,-2118.00
- 72,-18706.00
- 73,20824.00
- 74,-660.00
- 75,-12585.00
- 76,13245.00
- 77,-70737.00
- 78,-5000.00
- 79,-23579.00
- 80,99316.00
- 81,-6972.00
- 82,-26457.00
- 83,33429.00
- 84,-55908.00
- 85,-37000.00
- 86,92908.00
- 87,-30000.00
- 88,-5000.00
- 89,-10000.00
- 90,45000.00
- 91,-1236.00
- 92,1236.00
- 93,-23940.00
- 94,23940.00
- 95,-4503.00
- 96,-31535.00
- 97,36038.00
- 98,-1944.00
- 99,-24227.00
- 100,26171.00
- 101,-1083.00
- 102,-7591.00
- 103,8674.00
- 104,-37950.00
- 105,37950.00
- 106,-3081.00
- 107,-21582.00
- 108,24663.00
- 109,-35770.00
- 110,35770.00
- 111,-3111.00
- 112,-21787.00
- 113,24898.00
- 114,-300.00
- 115,-3600.00
- 116,3900.00
- 117,-852.00
- 118,-9774.00
- 119,10626.00
- 120,-15167.00
- 121,15167.00
- 122,-9000.00
- 123,-3000.00
- 124,12000.00
- 125,-20660.00
- 126,20660.00
- 127,-4000.00
- 128,4000.00
- 129,-2968.00
- 130,2968.00
- 131,-10000.00
- 132,10000.00
- 133,-2200.00
- 134,2200.00
复制代码 而我的程序代码如下(见下一楼,每楼字数有限制,所以……):
方法就是将用户的csv文件读到列表中,然后将其中的正数(借方)和负数(贷方)分为两个列表,同时为了减少运算量,将两个列表中绝对值大于用户输入的数的元素都删除。然后分别将两个列表中数字的组合列出,计算每组组合的和与用户输入数字相等的即写入到一个文件中,同时在屏幕上显示。考虑到运算量,目前设定的是两个数字组合到五个数字组合。
|
|