Python練習(xí)-購物單
一、題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語句將所填結(jié)果輸出即可。
小明剛剛找到工作,老板人很好,只是老板夫人很愛購物。老板忙的時候經(jīng)常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。
這不,大促銷又來了!老板夫人開出了長長的購物單,都是有打折優(yōu)惠的。
小明也有個怪癖,不到萬不得已,從不刷卡,直接現(xiàn)金搞定。
現(xiàn)在小明很心煩,請你幫他計算一下,需要從取款機上取多少現(xiàn)金,才能搞定這次購物。
取款機只能提供 100 元面額的紙幣。小明想盡可能少取些現(xiàn)金,夠用就行了。 你的任務(wù)是計算出,小明最少需要取多少現(xiàn)金。
以下是讓人頭疼的購物單,為了保護隱私,物品名稱被隱藏了。
**** ? ? 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
最大運行內(nèi)存: 128M
二、解題思路
data = data.split()將data按空格進行拆分,把給出來的data放入列表中,進行循環(huán)遍歷取值- 價格price轉(zhuǎn)化為浮點數(shù)用于計算,折扣
discount先保持字符串類型不變,讓其去匹配對應(yīng)的值 - 當discount為兩位長度時,當其為‘半價’,
discount等于0.5,反之取其數(shù)字部分,將對應(yīng)數(shù)字部分字符串進行強制轉(zhuǎn)化浮點數(shù)乘以對應(yīng)的小數(shù)點,float(discount[0])*0.1 - 不是兩位長度時,就是三位長度,此時數(shù)字部分對應(yīng)的字符串部分為兩位。也就是說強制轉(zhuǎn)化為浮點數(shù)后的數(shù)字部分是一個兩位數(shù),也就是對應(yīng)的小數(shù)點應(yīng)該向前移動兩位。
float(discount[0:2])*0.01 - 最后要算其需要的紙幣100元是多少,也就是求出來的總和sum整除100之后再加一個1就是一共需要帶的100元的數(shù)量,然后通過浮點數(shù)進行輸出就可以啦!
三、源碼分享
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() 語法將字符串按照空格進行分割:
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模擬點擊網(wǎng)頁按鈕實現(xiàn)方法
在本篇文章里小編給大家整理的是一篇關(guān)于python模擬點擊網(wǎng)頁按鈕實現(xiàn)方法,需要的朋友們可以參考下。2020-02-02
Python Tkinter Entry和Text的添加與使用詳解
這篇文章主要介紹了Python Tkinter Entry和Text的添加與使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)
這篇文章主要介紹了攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的,需要的朋友可以參考下2018-10-10

