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