外卖费用

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
posted @ 2022-10-20 21:11  蠢蛋快跑  阅读(310)  评论(0)    收藏  举报