python学习例题

作业1题目
1. 编写函数 find_numbers(),没有输入参数。返回能够被自身各位数字之和整除的所有两位数(如50)列表,按递增顺序排列。

2. 编写函数root_of_equation(a, b, c),函数参数a、b和c为三个浮点数,求方程a*x**2 + b*x +c= 0的解,并返回所有的解的列表。若无解则返回None,若a=b=c=0则返回float('inf')。例如root_of_equation(1, 0, -4)返回[2, -2].

3. 编写函数 fifth_root(x),函数参数x为一个浮点数,使用牛顿迭代法求x的五次方根,并返回该值。要求绝对误差不超过1.0e-10. 如fifth_root(32.0)返回值为2.0。

4. 编写函数 break_point(x), 函数参数x为一个开区间(0,1)上的浮点数,在所有的整数中寻找一个整数(n>=0),其对应的n/(n+2)与x最接近,将该整数值返回。如 break_point(0.4)返回1, break_point(0.59)返回3。若存在两个n都满足条件,返回最小的那个n。

5. 编写函数 rose_numbers(),函数没有输入参数,返回由所有的四叶玫瑰花数(一个四位数,其每个数字的四次方之和恰好等于该四位数)组成的列表。

6. 编写函数income_tax(X)实现个人所得税额的计算。根据个人的年收入X,求其应当缴纳的个人所得税额T。首先,年应纳税所得额Y为年收入扣除6万元。其次,年应纳税所得额Y在:
1) 3.6万元以内的部分,税率适用第一级(3%);
2) 3.6万元至14.4万元部分适用税率第二级(10%);
3) 14.4万元至30万元部分适用税率第三级(20%);
4) 30万元至42万元部分适用税率第四级(25%);
5) 42万元至66万元部分适用税率第五级(30%);
6) 66万元至96万元部分适用税率第六级(35%);
7) 96万元以上部分适用税率第七级(45%);
将以上的税额累计即得到个人所得税额T,返回T。
# 第1道题
def find_numbers():  # 定义函数名
    result = []   # 创建一个新列表
    for i in range(10, 100):   # 遍历10~99的所有整数
        if i % (i % 10+i//10) == 0:
            result.append(i)   # 将可以被其各位数字之和整除的i存入列表result[]中
    return result


print(find_numbers())


# 第2道题
def root_of_equation(a, b, c):  # 定义函数名
    if a == b == c == 0:
        return float('inf')   # 方程为0的情况
    delta = b**2-4*a*c    # 判断方程解的情况
    if delta < 0:
        return None    # 无解
    else:
        x1 = (-b+(b**2-4*a*c)**0.5)/(2*a)
        x2 = (-b-(b**2-4*a*c)**0.5)/(2*a)
        return x1, x2     # 求出方程的两个解


print(root_of_equation(1, 0, -4))    # 输出方程的解


# 第3道题
def fifth_root(x):
    x0 = x
    epsilon = 1.0e-10
    while True:
        # 计算迭代值
        x1 = x0 - (x0 ** 5 - x) / (5 * x0 ** 4)
        # 检查绝对误差是否满足要求
        if abs(x1 - x0) < epsilon:
            return x1
        # 更新 x0 为 x1
        x0 = x1


print(fifth_root(32.0))


# 第4道题
def break_point(x):
    min_diff = float('inf')  # 初始化最小差值为正无穷大
    result = 0  # 初始化结果为0

    for n in range(0, int(1e6)):  # 遍历所有大于等于0的整数n
        diff = abs(n / (n + 2) - x)  # 计算n/(n+2)与x的差值
        if diff < min_diff:  # 如果当前差值小于min_diff
            min_diff = diff  # 更新min_diff
            result = n  # 更新result

    return result  # 返回结果


print(break_point(0.4))
print(break_point(0.59))


# 第5道题
def rose_numbers():
    result = []    # 创建一个新列表
    for i in range(1000, 10000):    # 遍历所有的四位数
        if (i // 1000)**4 + (i % 10)**4 + (i // 10 % 10)**4 + (i // 100 % 10)**4 == i:
            result.append(i)    # 将满足条件的四位数填入列表中
    return result


print(rose_numbers())


# 第6道题
def income_tax(x):    # 定义函数名
    x = x/10000    # 方便计算
    y = x - 6     # 计算y
    if y < 0:    # y<0的情况
        return None
    # 计算应交所得税
    elif y < 3.6:
        t = y * 0.03
    elif y < 14.4:
        t = (y-3.6)*0.1+3.6*0.03
    elif y < 30:
        t = (y-14.4)*0.2+10.8*0.1+3.6*0.03
    elif y < 42:
        t = (y-30)*0.25+15.6*0.2+10.8*0.1+3.6*0.03
    elif y < 66:
        t = (y-42)*0.3+12*0.25+15.6*0.2+10.8*0.1+3.6*0.03
    elif y < 96:
        t = (y-66)*0.35+24*0.3+12*0.25+15.6*0.2+10.8*0.1+3.6*0.03
    else:
        t = (y-96)*0.45+30*0.35+24*0.3+12*0.25+15.6*0.2+10.8*0.1+3.6*0.03
    t = t*10000
    return t    # 返回t的值


print(income_tax(60000))    # 例子,计算x=6万时所交的所得税

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值