基于python编写等差、等比工具

10.py
# 1、输入一个数列,自动判定是等差或者等比数列
# 2、有获取第n项值得功能。
# 3、有求前n项和的功能。
class Mylist:
    def __init__(self, name,list,d):
        self.name = name
        self.list = list
        self.d = d

# 等差数列
class Dengc(Mylist):

    # 获取第n项的值
    def get_n_value(self, n):
        an = self.list[0]+(n-1)*self.d
        print("第", n, "项的值是", an)
        print("=====================================")

    # 获取前n项和
    def get_n_total(self, n):
        an = self.list[0]*n+(n-1)*n*self.d/2
        print("前", n, "项和是", an)
        print("=====================================")


# 等比数列
class Dengb(Mylist):

    # 获取第n项的值
    def get_n_value(self, n):
        an = self.list[0]*(self.d**(n-1))
        print("第", n, "项的值是", an)

    # 获取前n项和
    def get_n_total(self, n):
        an = self.list[0]*(1-self.d**n)/(1-self.d)
        print("前", n, "项和是", an)


# 输入数列
def inputlist():
    in_str = input("请输入你的数列(用逗号隔开)\n")
    in_list = in_str.split(",")
    my_list = []
    for a in in_list:
        try:
            b = int(a)
            my_list.append(b)
        except ValueError:
            print("你输入的数据有误,请重新输入!!")
            inputlist()
    return my_list

def is_list_type(a):
    a1 = a[0]
    a2 = a[1]
    a3 = a[2]
    a4 = a[3]
    if a2-a1 == a4-a3:
        d = a2-a1
        p = Dengc("等差数列",a,d)
        return p
    elif a4/a3 == a3/a2:
        q = a4/a3
        p = Dengb("等差数比", a, q)
        return p
    else:
        print("对不起,你输入的不是等差数列,也不是等比数列,请重新输入!!!!")
        return False


if __name__ == '__main__':
    flag = True
    while flag:
        mlist = inputlist()
        p = is_list_type(mlist)
        if p:
            print(p.list)
            print("是一个", p.name)
            sflag = True
            while sflag:
                a = input("请输入你要操作功能\n1:求数列的第n项的值\n2:求数列的前n项和\n3:更换数列\n4:退出程序\n")
                if a == '1':
                    b = int(input("请输入第几项:"))
                    p.get_n_value(b)
                elif a == '2':
                    b = int(input("请输入第几项:"))
                    p.get_n_total(b)
                elif a == '3':
                    sflag = False
                elif a == '4':
                    sflag = False
                    flag = False
                else:
                    print("输入有误,请重新选择")

        else:
            pass



 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鼎上西瓜刀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值