題目
【Python練習題 002】企業發放的獎金根據利潤提成。利潤(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,求應發放獎金總數?
分析
很常見的基礎題,代碼1是常規實現,代碼2利用了設定的邊界條件,逐段計算,確實更優,代碼3是C++實現。
實現
- 代碼1:Python常規實現
i=float(input("請輸入當月利潤,單位爲萬元:"))
if i<=10:
bns=i*0.1
elif 10<i<=20:
bns=10*0.1+(i-10)*0.075
elif 20<i<=40:
bns=10*0.1+10*0.075+(i-20)*0.05
elif 40<i<=60:
bns=10*0.1+10*0.075+20*0.05+(i-40)*0.03
elif 60<i<=100:
bns=10*0.1+10*0.075+20*0.05+20*0.03+(i-60)*0.015
else:
bns=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(i-100)*0.01
print(bns,"萬元")
- 代碼2:Python 使用列表類型
i=float(input("請輸入當月利潤,單位爲萬元:"))
reward=[100,60,40,20,10,0]
rate=[0.01,0.015,0.03,0.05,0.075,0.1,0.1]
bns=0
for j in range(len(reward)):
if i>reward[j]:
bns=bns+(i-reward[j])*rate[j] #超過的部分
i=reward[j] #更新邊界
print(bns,"萬元")
- 代碼3:C++
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
cout<<"請輸入金額(單位:萬元):";
float input,sum=0; cin>>input;
float rwd[]={100,60,40,20,10,0};
float rate[]={0.01,0.015,0.03,0.05,0.075,0.1};
for(int i=0;i<sizeof(rwd)/sizeof(rwd[0]);i++)
if(input>rwd[i]){
sum=sum+(input-rwd[i])*rate[i];
input=rwd[i];
}
cout<<sum<<" 萬元"endl;
return 0;
}