Python 100例实战训练——day01

网友投稿 626 2022-05-29

参考资料:Python 100例

Python 练习实例1

Python 100例题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

解法一:

Python 100例实战训练——day01

# 基础解法,循环嵌套 l = [] for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i != k ) and (i != j) and (j != k): a = 100*i+10*j+k l.append(a) print(f"共有{len(l)}个",l)

解法二:

# 调用第三方库,排列组合 # # 组合 # from scipy.special import comb # # 阶乘 # from scipy.special import factoral # 排列 from scipy.special import perm print( perm(4,3)) # 从序列中取2个元素进行组合、元素不允许重复 import itertools as it for e in it.permutations('1234', 3): print(''.join(e), end=', ')

itertools的使用可参考:Python的排列组合函数

Python 练习实例2

Python 100例题目:企业发放的奖金根据利润提成。 利润(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判断 i = int(input('净利润(万元):')) if i <=10: account = i*10/100 elif i <=20: account = (i-10)*7.5/100+10*10/100 elif i <=40: account = (i-20)*5/100+10*7.5/100+10*10/100 elif i<=60: account = (i-40)*3/100+20*5/100+10*7.5/100+10*10/100 elif i <=100: account = (i-60)*1.5/100+20*3/100+20*5/100+20*7.5/100+10*10/100 else: account = (i-100)*1/100+40*1.5/100+20*3/100+20*5/100+10*7.5/100+10*10/100 print(f"利润提成{account}")

解法二:

# 数轴定位 i = int(input('净利润(万元):')) arr = [100,60,40,20,10,0] rat = [0.01,0.015,0.03,0.05,0.075,0.1] r = 0 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)

解法三:

# cut 区间切分===》逻辑有点儿复杂,主要是想给大家介绍下pandas的cut函数,数据切分,解决这个问题比较复杂,用在其他问题上还是比较方便的 import pandas as pd # 数轴定位 I= int(input('净利润(万元):')) bins = [0, 11, 21, 41, 61, 101,1000000000000] #1000000000000 bins要比labels多一个,选一个特别大的数 rats = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01] par = [10,10,20,20,40,"nan"] df = pd.DataFrame(list(zip(bins,rats,par)),columns=["区间下限","点数","参数"]) labels = df.index.to_list() idx = pd.cut([I],bins,labels=labels,right= True)[0] account = 0 for i in range(idx): rate0 = df.iloc[i,1] parm0 = df.iloc[i,2] account += rate0*parm0 # print(account) account = account + (I-df.iloc[idx,0]+1)*df.iloc[idx,1] print(account)

Python 机器学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:元宇宙离我们有多远?博鳌论坛上大咖这样说
下一篇:计组学习1:计算机组成原理入门(上)
相关文章