Python练习题-002

题目-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,求应发放奖金总数?
  • 分析:分段计算,阶梯式
  • Python版本:Python 3.6.5

    代码1:基础代码,分段计算,比较繁琐,但容易想到

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def count():
    i = int(input("please input profit:"))
    p = 0
    if i < 100000:
        p = i*0.1
    elif i < 200000:
        p = (i-100000)*0.075 + 100000*0.1
    elif i < 400000:
        p = (i-200000)*0.05 + 100000*0.075 + 100000*0.1
    elif i < 600000:
        p = (i-400000)*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
    elif i < 1000000:
        p = (i-600000)*0.015 + 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
    else:
        p = (i-1000000)*0.01 + 400000*0.015 + 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
    print(p)

while True:
    count()
please input profit:110000
10750.0
please input profit:650000
34250.0
please input profit:11111111
140611.11

代码2:参考其他人的一种写法,利用数轴来分界,定位。注意定义时需把奖金定义成长整型

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def count():
    arr = [1000000,600000,400000,200000,100000,0]
    r = [0.01,0.015,0.03,0.05,0.075,0.1]
    p = 0
    i = int(input("please input profit:"))
    for v in range(0,6):
        if i > arr[v]:
            p+=(i-arr[v])*r[v]
            i = arr[v]
    print(p)

while True:
    count()

please input profit:110000
10750.0
please input profit:650000
34250.0
please input profit:11111111
140611.11



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值