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!
推薦閱讀:
- 利用Python實時獲取steam特惠遊戲數據
- Python基礎教程之名稱空間以及作用域
- python求解三角形第三邊長實例
- Python獲取網頁數據詳解流程
- python數據結構輸入輸出及控制和異常