Python練習-購物單

一、題目描述

本題為填空題,隻需要算出結果後,在代碼中使用輸出語句將所填結果輸出即可。

小明剛剛找到工作,老板人很好,隻是老板夫人很愛購物。老板忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。

這不,大促銷又來瞭!老板夫人開出瞭長長的購物單,都是有打折優惠的。

小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。

現在小明很心煩,請你幫他計算一下,需要從取款機上取多少現金,才能搞定這次購物。

取款機隻能提供 100 元面額的紙幣。小明想盡可能少取些現金,夠用就行瞭。 你的任務是計算出,小明最少需要取多少現金。

以下是讓人頭疼的購物單,為瞭保護隱私,物品名稱被隱藏瞭。

****     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折

需要說明的是,8888 折指的是按標價的 88%88 計算,而 88 折是按 80%80 計算,餘者類推。 特別地,半價是按 50%50 計算。

請輸出小明要從取款機上提取的金額,單位是元。

運行限制:

最大運行時間:1s
最大運行內存: 128M

二、解題思路

  • data = data.split()將data按空格進行拆分,把給出來的data放入列表中,進行循環遍歷取值
  • 價格price轉化為浮點數用於計算,折扣discount先保持字符串類型不變,讓其去匹配對應的值
  • 當discount為兩位長度時,當其為‘半價’,discount等於0.5,反之取其數字部分,將對應數字部分字符串進行強制轉化浮點數乘以對應的小數點,float(discount[0])*0.1
  • 不是兩位長度時,就是三位長度,此時數字部分對應的字符串部分為兩位。也就是說強制轉化為浮點數後的數字部分是一個兩位數,也就是對應的小數點應該向前移動兩位。float(discount[0:2])*0.01
  • 最後要算其需要的紙幣100元是多少,也就是求出來的總和sum整除100之後再加一個1就是一共需要帶的100元的數量,然後通過浮點數進行輸出就可以啦!

三、源碼分享

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()
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[0])*0.1
    else:
        discount = float(discount[0:2])*0.01
    sum += price*discount
print('%.0f'%(((sum//100)+1)*100))

四、學習總結

data = data.split() 語法將字符串按照空格進行分割:

a = '1 213 31'
print(a.split())
# ['1', '213', '31']

列表切片:[1:3]左閉右開,[:-1]表示除瞭最後一個其餘的全都取:

a = [2,3,4,5,6]
print(a[0:1])
print(a[:-1])
# [2]
# [2, 3, 4, 5]

到此這篇關於Python練習-購物單的文章就介紹到這瞭,更多相關Python購物單內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: