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)