外卖费用
7-1 外卖费用
分数 10
作者 殷伟凤
单位 浙江传媒学院
现有一外卖,满20减8,满35减12,派送费10元,若所购外卖满30元,则派送费打5折,若外卖满50元,则免派送费。
输入外卖费用,输出所需总费用。
输入格式:
输入外卖费
输出格式:
输出需支付的总费用
输入样例1:
18
输出样例1:
28
输入样例2:
60
输出样例2:
53
解题思路
认真读题,并且结合题目给出的样例和输出可知,派送费的折扣和减免是分开算的。然后我们分别编写计算减免和计算折扣的部分。
def calculate(m):
# 初始化变量
price = count = 0
# 计算减免
if 20 <= m < 35:
price = m-8
elif 35 <= m:
price = m-12
else:
price = m
# 计算折扣
if 30 <= price < 50:
count = 0.5
elif 50 <= price:
count = 0
else:
count = 1
total = price+count*10
return int (total)
m = int (input())
print(calculate(m))
我们编写测试用例,测试边界值
import unittest
from instance import calculate
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual(calculate(18), 28)
self.assertEqual(calculate(20), 22)
self.assertEqual(calculate(35), 33)
self.assertEqual(calculate(50), 43)
self.assertEqual(calculate(60), 53)
self.assertEqual(calculate(62), 50)
if __name__ == '__main__':
unittest.main()
输出一下结果,发现测试OK
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK

浙公网安备 33010602011771号