您好
欢迎访问

怎样打折扣计算(小明很心烦,请你帮他计算一下,直接现金搞定 )

(一)问题描述

小明刚找到工作,老板人很好,但他老婆很爱逛街。 老板忙的时候,经常让小明帮他逛商场。 小明很无聊,但也不好拒绝。 这不,大甩卖又来了! 老板娘列了一张长长的购物单,每样都有折扣。 小明还有一个怪癖。 除非万不得已,他从不刷卡,直接现金支付。 现在小明很苦恼,请帮他算算完成这次购物需要从ATM取款多少现金。 ATM只能提供100元纸币。 小明想尽可能少的取现金,只要够用就行。 你的任务是计算小明最少需要提取的现金数额。 以下是令人头疼的购物清单,为保护隐私,物品名称被隐藏。

需要说明的是,88折是指按标价的88%计算商场打折,20折是指按80%计算怎样打折扣计算,其余依此类推。 特别是半价按50%计算。 请输入小明要从ATM取款的金额,单位为人民币。

****     180.90       88****      10.25       65****      56.14        9****     104.65        9****     100.30       88****     297.15        半价
****      26.75       65****     130.62        半价
****     240.28       58****     270.62        8****     115.87       88****     247.34       95****      73.21        9****     101.00        半价
****      79.54        半价
****     278.44        7****     199.26        半价
****      12.97        9****     166.30       78****     125.50       58****      84.98        9****     113.35       68****     166.57        半价
****      42.56        9****      81.90       95****     131.78        8****     255.89       78****     109.17        9****     146.69       68****     139.33       65****     141.16       78****     154.74        8****      59.42        8****      85.44       68****     293.70       88****     261.79       65****      11.30       88****     268.27       58****     128.29       88****     251.03        8****     208.39       75****     128.88       75****      62.06        9****     225.87       75****      12.89       75****      34.28       75****      62.16       58****     129.12        半价
****     218.37        半价
****     289.69        8

(2) 解决方案

# -*- coding: utf-8 -*-
import math
data = """
****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折

怎样打折扣计算(小明很心烦,请你帮他计算一下,直接现金搞定
)

**** 125.50 58折 **** 84.98 9折 **** 113.35 68折 **** 166.57 半价 **** 42.56 9折 **** 81.90 95折 **** 131.78 8折 **** 255.89 78折 **** 109.17 9折 **** 146.69 68折 **** 139.33 65折 **** 141.16 78折 **** 154.74 8折 **** 59.42 8折 **** 85.44 68折 **** 293.70 88折 **** 261.79 65折 **** 11.30 88折 **** 268.27 58折 **** 128.29 88折 **** 251.03 8折 **** 208.39 75折 **** 128.88 75折 **** 62.06 9折 **** 225.87 75折 **** 12.89 75折 **** 34.28 75折 **** 62.16 58折 **** 129.12 半价 **** 218.37 半价 **** 289.69 8折 """
data = data.split() # 分隔符默认为所有的空字符 --> 空格 n t print(data) sum = 0 for i in range(0, len(data), 3): price = float(data[i + 1]) # 取原价 discount = data[i + 2] # 取折扣 if len(discount) == 2: if discount == "半价": discount = 0.5 else: discount = float(discount[:-1]) * 0.1 else: discount = float(discount[:-1]) * 0.01 sum += price * discount print(math.ceil(sum/100)*100) # math.ceil() 函数 --> 向上取整到最接近的整数

(三)参考思路

1.将多行字符串分离成一维列表,将总价格值初始化为0

data = data.split()
sum = 0

2、在一维列表中,使用步长3定位****,****下标加1为原价,下标加2为原价享受的优惠

for i in range(0, len(data), 3):
    price = float(data[i + 1])  # 取原价
    discount = data[i + 2]  # 取折扣

3、折扣的长度为3怎样打折扣计算,比如52折,长度为2。长度为2的折扣有两种,一种像20折,一种是半价。 需要根据情况进行处理,处理后计算。 总消耗

    if len(discount) == 2:
        if discount == "半价":
            discount = 0.5
        else:
            discount = float(discount[:-1]) * 0.1
    else:
        discount = float(discount[:-1]) * 0.01
    sum += price * discount

4.因取款机只能取100的整数倍,所以最后取款金额要四舍五入

print(math.ceil(sum/100)*100)  # math.ceil() 函数 --> 向上取整到最接近的整数

赞(0)
转载请注明出处:0512打折网 » 怎样打折扣计算(小明很心烦,请你帮他计算一下,直接现金搞定 )
分享到: 更多 (0)