SavvyUni X 一勾CS大课堂 V1.0 Page 1 of 3
A3基本术语解释
A3 我们就是要写个银行账户管理相关的函数,同时也要写写来测试我们代码的unit test
主要考点就是Dictionary, File Input, Unit Test
学校检查你的unit test质量的方式,就是故意有有问题的代码来看你的tests能不能找到错误
Balance
账户余额,所有的支票(checking)账户和储蓄(saving)账户的余额都一定是>=0的数字,我们不考 虑负数的,但是贷款(loan)账户的余额,就一定是负数了
Interest
利息,然后注意利息都是滚雪球的
Present Value (PV)
当前价值
Future Value (FV)
利滚利以后的未来价值
我们会有5个Constant在作业里面需要用到
BALANCES INTEREST_RATES WITHDRAW_CODE DEPOSIT_CODE LOAN_INTEREST_RATE
存放客户信息的文件格式
每个文件里面会放0个或多个客户(client) 每个client的信息都是以下格式 1行是名字
1行是SIN
每个账户都会有三行 一行是账户类型(就是个号码)第一个一定是支票账户,后面跟的都是saving 一行是余额(>=0)
一行是年利率
客户信息里面一定不会有贷款账户,只是单纯说我们从文件里面读取客户信息时候,没有贷款账
户信息在里面,但是我们后面还是有函数会需要添加一个贷款账户的
内部资料,请勿分享
思睿教育 SavvyUni
内部资料,请勿分享
SavvyUni X 一勾CS大课堂 V1.0 Page 2 of 3 Client to Accounts dictionary (CTA)
这个作业从头至尾我们几乎每一个函数都会用到一个dictionary来表达客户和客户的所有账户 我们会用一个tuple来表达一个客户的信息(名字, SIN) 然后用这个tuple为key,对应一个包含两个⻓度一样lists的list(平行lists) 这两个平行的lists分别存放账户的余额,和账户的利息
Client to total balance dictionary (CTT) 还有一部分题我们会使用这个客户和客户的总余额的dictionary,这个就比较简单了
就是代表客户的tuple为key,对应一个float,就是客户的净资产(所有账户余额的总和)
函数
解释
load_financial_data
就是把文件里面的东⻄读成 client to accounts dictionary 注意,这个文件可以是空的(一个客户都没有)
同时学校有些地方也没说清楚,我已经在piazza上怼了,还没回 复,暂时可以assume每两个client之间只有一个换行,第一个client 前,最后一个client后没有其他多余的换行
get_num_clients
返回CTA里面一共有多少客户,你要是写超过一行我瞧不起你
validate_identity
判断给你的client是不是CTA里面真是存在的客户,写超过一行我瞧 不起你
get_num_accounts
给你CTA,给你一个client,返回这个client有多少账户(不包括 loan)如果这个客户有loan,那一定是最后一个账户而且是负的 balance
get_account_balance
返回给你的指定账户号码的余额
open_savings_account
给你CTA,给你一个client,给你一个金额,给你一个利息,你给这 个客户开一个新的存款账户,用给你的金额和利息。注意,如果这 个客户没有loan的话,就放最后面就好了,但是如果有loan,就得 放loan前面(因为要保证loan永远是最后一个)
get_client_to_total_balanc
e
说白了就是把CTA转化为CTT
update_balance
给你CTA,给你一个client,还有账户号码,还有金额和类型(存款 或者提款),就给这个客户的指定账号存取款指定金额
内部资料,请勿分享
思睿教育 SavvyUni
内部资料,请勿分享
SavvyUni X 一勾CS大课堂 V1.0 Page 3 of 3
函数
解释
get_loan_status
这个作业最麻烦的一个函数了,你很有可能需要若干helper(为了 拿style分数)。给你CTA, CTT,客户信息,还有想贷款的金额, 决定是否要给这个客户这些贷款。如果贷款真的批准了,你还需要 给他添加loan的账户进去(金额就是这个客户需要的金额,利息就是 LOAN_INTEREST_RATE。批准贷款的方式如下
如果这个客户已经有贷款了还没还完就直接拒了 如果这个客户没有一个账户余额超过0也可以拒了
先算出来你这个银行的所有客户的平均余额,然后计算出来所有的 月的sd(标准差,老师给你写好helper了)这个标准差我们可以叫 sigma
接下来我们开始打分 这个客户的总余额,只要比平均余额多,+1分,如果客户账户总余
额超过贷款余额,+1分
接下来,看每一个这个客户的账户,如余额比平均余额-sigma 少,-2分,如果比平均余额+sigma多,就+2分,如果余额比贷款
还多,+5分
如果有半数以上的账户都平均+sigma多,再加5分 最终只要总得分>=5 分,贷款就通过了,你就可以添加loan账户了
get_financial_range_to_cli
ents
给你CTT,再给你一个列表里面放着一堆的范围,你就返回一个 dict,dict的key就是每一个范围,value就是这个范围对应的所有客 户,注意这个range可以overlap,所以同一个客户也可以出现几次
get_fv_from_accounts
给你一个list列表里面放着一堆账户余额,一个list列表里面放着每 一个账户对应的利息,你就计算某些年以后,总账户余额,在利滚 利以后
time_to_client_goal
给你CTA,给你客户名字,给你客户目标,计算这个客户要多少年 才能满足目标的余额(利滚利)
内部资料,请勿分享
思睿教育 SavvyUni
内部资料,请勿分享