一、原始碼
# -*- coding:utf-8 -*/-
# @author : sunbin
# @time : 2020/4/14 9:10
# @email : [email protected]
# @file : lx12_money.py
# # 企業發放的獎金根據利潤提成
# 利潤(i)低於或等於10萬元時,獎金可提10%;
# 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提成7.5%;
# 20萬到40萬之間時,高於20萬元的部分,可提成5%;
# 40萬到60萬之間時高於40萬元的部分,可提成3%;
# 60萬到100萬之間時,高於60萬元的部分,可提成1.5%,
# 高於100萬元時,超過100萬元的部分按1%提成,
# 從鍵盤輸入當月利潤i,求應發放獎金總數?
#一x =
input
('請輸入當月利潤(單位:萬元):\n'
)if x.isdigit():
x =float
(x)if x <=10:
y =0.1* x
elif x <20:
#10000.0
y =(x -10)
*0.075+10
*0.1
elif x <40:
# 17500.0
y =(x -20)
*0.05+10
*0.075+10
*0.1
elif x <60:
# 27500.0
y =(x -40)
*0.03+20
*0.05+10
*0.075+10
*0.1
elif x <
100:
#30500.0
y =(x -60)
*0.015+20
*0.03+20
*0.05+10
*0.075+10
*0.1
else
:# 36500.0
y =(x -
100)
*0.01+40
*0.015+20
*0.03+20
*0.05+10
*0.075+10
*0.1
print
('應發放獎金總數:%.2f'
%y)else
:print
('請輸入正確的數值'
)# 二
profit_rate=
[0.01
,0.015
,0.03
,0.05
,0.075
,0.1
]profit_range =
[100,60
,40,20
,10,0
]y =
0for i in
range
(len
(profit_range)):
if x > profit_range[i]
: y = y +
(x - profit_range[i]
)* profit_rate[i]
x = profit_range[i]
print
('應發放獎金總數:%.2f'
%y)
二、**對比
一、二兩種方法對比,顯然,在範圍和利率變動時,方法二方便管理
三、 方法二思路
假如輸入金額為 110,>100
i = 0 時,(110-100)*0.01 + (100的獎金)
i = 1 時,(100-60)*0.015 + (60的獎金)
……i = 4 時,(20-10)*0.075 + (10的獎金)
i = 5 時,(10-0)*0.1 + (0的獎金)
即i = i 時,
第一次計算時,當前輸入金額 - 範圍值
當前範圍獎金 = (x - profit_range[i]) * profit_rate[i]
x = profit_range[i],該次的範圍值會在下一次計算時,充當被減數
第二次計算時,上一次範圍值 - 當前範圍值
當前範圍獎金 = (profit_range[i-1] x- profit_range[i]) * profit_rate[i]
總獎金即為累計求和
python分支限界剪枝思想小練習
題目 兩個桌球隊進行比賽,各出三人。甲隊為1,2,3三人,乙隊為4,5,6 三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。1說他不和4比,3說他不和4,6比,請程式設計序找出三隊賽手的名單。思路 類似於分支限界的剪枝法,窮舉回溯 a,b,c代表甲隊的1,2,3 d,e,f代表最後符合篩選條件的...
Python入門(六) 迭代
1 迭代的概念 在python中,如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們成為迭代 iteration 在python中,迭代是通過 for in 來完成的。迭代操作就是對於乙個集合,無論該集合是有序 還是無序,我們用 for 迴圈總是可以...
python迭代器入門
迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可以使用 hasattr 判斷物件是否是 可迭代的 hasattr str iter true使用內建函式 iter 定義迭代器物件。lst 1 2,3 4 iter ls...