python 练习题- 图书租金计算

题目:

 1 每个用户初始金额300
 2 
 3 1、扣除规则
 4 1)图书价格大于等于 100元,累计借出去天数小于等于15天,每本每天租金5元,累计超过15天的,超过的天数每天每本租金3元
 5 2)图书价格大于等于 50元、小于100元,累计借出去天数小于等于15天,每本每天租金3元,累计超过15天的,超过的天数每天每本租金2元
 6 3)图书价格小于 50元,每本每天租金1元
 7 
 8 2、余额小于所借图书价格,不能借;可以继续借阅其他的书
 9 
10 3、租金最大不超过所借图书的价格
11 
12 4、超期还书,每超过一天,另外扣1元
13 
14 输出余额
15 
16 例子:
17 [[130,5,11],[60,16,16],[10,11,11]]
18 
19 输出:
20 182
21 
22 解释:
23 130,5,11   实际11天,超期6天,则租金为 11*5+6 = 61
24 60,16,16   实际11天,有一天超过15天,则租金为 15*3 + 2 = 47
25 10,11,11   实际11天,11*1 = 11,大于图书价格10元,则租金为10
26 总共为 61+47+10 = 118,余额 182

 

代码:

 1 # @Author  :whyCai
 2 # @Time    :2021/2/22 9:44
 3 
 4 
 5 from typing import List
 6 """
 7 计算剩余金额
 8 """
 9 class Solution:
10     def chargeBalance(self, histList: List[List[int]]) -> int:
11         initBalance = 300
12 
13         histListLen = len(histList)
14         for i in range(histListLen):
15             #图书价格小于余额
16             if histList[i][0] < initBalance:
17                 #判断图书价格再哪个区间
18                 if histList[i][0] >=100:
19                     #实际借书日期是否再15天内
20                     chargeBalance = histList[i][2] * 5 if histList[i][2] <= 15 else 15 * 5 + (histList[i][2] -15) * 3
21                 elif histList[i][0] >=50 and histList[i][0] <100:
22                     chargeBalance = histList[i][2] * 3 if histList[i][2] <= 15 else 15 * 3 + (histList[i][2] -15) * 2
23                 else:
24                     chargeBalance = histList[i][2] * 1
25                 # 判断是否超期还书
26                 if histList[i][2] > histList[i][1]:
27                     chargeBalance = chargeBalance + (histList[i][2] - histList[i][1]) * 1
28                 #判断最大租金不超过所借图书价格
29                 if chargeBalance > histList[i][0]:
30                     chargeBalance = histList[i][0]
31                 initBalance = initBalance - chargeBalance
32 
33         return initBalance
34 
35 print(Solution().chargeBalance([[130,5,11],[60,16,16],[10,11,11]]))

 

posted @ 2021-02-22 20:52  菜小鱼~  阅读(755)  评论(0编辑  收藏  举报