Python練習題 002:獎金計算

題目

【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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章