Python 100例实战训练——day01

参考资料:Python 100例

Python 练习实例1

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

解法一:

# 基础解法,循环嵌套
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)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于Python的计算思维训练主要涉及到函数的概念。函数是Python中的基本编程结构,通过函数可以将一系列操作封装起来,提高代码的复用性和可维护性。 首先,函数的定义和调用是计算思维中重要的一部分。学习者需要理解如何使用def关键字定义函数,并且学会传入参数和返回数值。这能够帮助他们将复杂的问题拆分成更小的部分,然后再分别解决。 其次,函数的参数和返回值的运用是培养计算思维的有效途径。学习者需要理解函数的参数可以是任意类型的数据,也可以是默认值,还可以是可变数量的参数。同时,他们需要掌握函数可以返回单个数值、多个数值或者其他函数的能力。 此外,函数的嵌套和递归是培养计算思维的重要方法。学习者需要了解函数可以在其内部调用其他函数,从而实现更复杂的功能。而递归则可以帮助他们理解问题的分治和循环求解策略。 最后,函数的高阶用法和闭包也是培养计算思维的关键。学习者需要明白函数可以作为参数传递给其他函数,也可以作为返回值被另一个函数使用。此外,他们还需要掌握闭包的概念和运用,以便更好地理解函数的作用域和生命周期。 通过学习和实践以上内容,学习者不仅可以掌握Python中函数的用法,还可以培养出较强的计算思维能力,从而更好地应对复杂的问题和挑战。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诡途

你的鼓励是我 创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值