Python練習(xí)-購物單
一、題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語句將所填結(jié)果輸出即可。
小明剛剛找到工作,老板人很好,只是老板夫人很愛購物。老板忙的時候經(jīng)常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。
這不,大促銷又來了!老板夫人開出了長長的購物單,都是有打折優(yōu)惠的。
小明也有個怪癖,不到萬不得已,從不刷卡,直接現(xiàn)金搞定。
現(xiàn)在小明很心煩,請你幫他計算一下,需要從取款機(jī)上取多少現(xiàn)金,才能搞定這次購物。
取款機(jī)只能提供 100 元面額的紙幣。小明想盡可能少取些現(xiàn)金,夠用就行了。 你的任務(wù)是計算出,小明最少需要取多少現(xiàn)金。
以下是讓人頭疼的購物單,為了保護(hù)隱私,物品名稱被隱藏了。
**** ? ? 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 折指的是按標(biāo)價的 88%88 計算,而 88 折是按 80%80 計算,余者類推。 特別地,半價是按 50%50 計算。
請輸出小明要從取款機(jī)上提取的金額,單位是元。
運(yùn)行限制:
最大運(yùn)行時間:1s
最大運(yùn)行內(nèi)存: 128M
二、解題思路
data = data.split()
將data按空格進(jìn)行拆分,把給出來的data放入列表中,進(jìn)行循環(huán)遍歷取值- 價格price轉(zhuǎn)化為浮點(diǎn)數(shù)用于計算,折扣
discount
先保持字符串類型不變,讓其去匹配對應(yīng)的值 - 當(dāng)discount為兩位長度時,當(dāng)其為‘半價’,
discount
等于0.5,反之取其數(shù)字部分,將對應(yīng)數(shù)字部分字符串進(jìn)行強(qiáng)制轉(zhuǎn)化浮點(diǎn)數(shù)乘以對應(yīng)的小數(shù)點(diǎn),float(discount[0])*0.1
- 不是兩位長度時,就是三位長度,此時數(shù)字部分對應(yīng)的字符串部分為兩位。也就是說強(qiáng)制轉(zhuǎn)化為浮點(diǎn)數(shù)后的數(shù)字部分是一個兩位數(shù),也就是對應(yīng)的小數(shù)點(diǎn)應(yīng)該向前移動兩位。
float(discount[0:2])*0.01
- 最后要算其需要的紙幣100元是多少,也就是求出來的總和sum整除100之后再加一個1就是一共需要帶的100元的數(shù)量,然后通過浮點(diǎn)數(shù)進(jìn)行輸出就可以啦!
三、源碼分享
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))
四、學(xué)習(xí)總結(jié)
data = data.split() 語法將字符串按照空格進(jìn)行分割:
a = '1 213 31' print(a.split()) # ['1', '213', '31']
列表切片:[1:3]左閉右開,[:-1]表示除了最后一個其余的全都?。?/strong>
a = [2,3,4,5,6] print(a[0:1]) print(a[:-1]) # [2] # [2, 3, 4, 5]
到此這篇關(guān)于Python練習(xí)-購物單的文章就介紹到這了,更多相關(guān)Python購物單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python內(nèi)置函數(shù)anext的具體使用
本文主要介紹了python內(nèi)置函數(shù)anext的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Python創(chuàng)建普通菜單示例【基于win32ui模塊】
這篇文章主要介紹了Python創(chuàng)建普通菜單,結(jié)合實例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項的相關(guān)操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05Python連接MySQL數(shù)據(jù)庫的簡單便捷方法
在數(shù)據(jù)分析過程中往往要操作較大的數(shù)據(jù)集,這就需要連接數(shù)據(jù)庫進(jìn)行操作,下面這篇文章主要給大家介紹了關(guān)于Python連接MySQL數(shù)據(jù)庫的簡單便捷方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04