Python100例第一天

1. 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

自己想:我数学上可以解决,代码上一片空白。

总结:其实是很简单的东西,但是我上来一看就懵逼了。首先是三位数,下意识在百位、十位、个位上面想办法,在百位,十位,个位的数字可以是1,2,3,4.组成所有的排列就需要用到for循环(一个位上有不同数字的情况率先想到for循环),然后去掉不满足条件的排列就需要用到if条件判断。  其实就是for循环外加一个if,注意不等号写法。

for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if (i != j) and (i != k) and (j != k):
                print(i, j, k)

2. 题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

自己想:数学上就是画一个数轴,然后代码上就想到if条件判断,因为有还几个条件限制,然后我想到了if+else,从小往大写,条件一步步累计。自己写的代码如下所示:

l = 120
if l <= 10:
  print(l*0.1)
else:
    if 20>l>10:
        print((l-10)*0.075 + 1)
    else:
        if 40>l>20:
            print((l-20)*0.05 + 1 + 0.75 )
        else:
            if 60>l>40:
                print((l-40)*0.03 + 1 + 0.75 + 1)
            else:
                if 100>l>60:
                    print((l-60)*0.015 + 1 + 0.75 + 1 + 0.6)
                else:
                    if l>100:
                        print((l-100)*0.01 + 1 + 0.75 + 1 + 0.6 + 0.6)

参考答案:利用数轴来分界,定位。参考答案代码如下所示:

# 注意input用法
i = int(input('净利润:'))
arr = [1000000, 600000, 400000, 200000, 100000, 0]
rat = [0.01, 0.015, 0.013, 0.05, 0.075, 0.1]
r = 0

# 根据区间来划分需要几个索引,而不是数字(100万什么的)
for idx in range(0, 6):
    if i > arr[idx]:
        r += (i - arr[idx])*rat[idx]
        print((i - arr[idx])*rat[idx])
        i = arr[idx]
print(r)

大佬指点:if - elif - ... - else

i = int(input('纯利润:'))
if i <= 10:
    print(i*0.1)
elif 10 < i < 20:
    print((i-10)*0.075 + 1)
elif 20 < i < 40:
    print((i-20)*0.05 + 1 + 0.75)
elif 40 < i < 60:
    print((i-40)*0.03 + 1 + 0.75 + 1)
elif 60 < i < 100:
    print((i-60)*0.015 + 1 + 0.75 + 1 + 0.6)
else:
    print((i-100)*0.01 + 1 + 0.75 + 1 + 0.6 + 0.6)

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值