python学习笔记-等差数列(条件未知)

概念

        等差数列首项和公差都不知道

实现代码

        导入数学库

                

import math

        try-except语句控制异常报错

                

try:
...
except ValueError: #代码报错输出的情况
    print(f'空着给我填,想得美,哼!') #打印一段话,可自定义

        自定义函数

def Arithmetic_sequence_unknown():

        进行4次循环               

for i in range(4):

        判断是否为第四次循环

if i != 3:

                打印选项

print(f'1.求解公差 2.求解首项 3.退出')

                用户输入选项

n1 = int(input(f'请输入选项:'))

                选项1的情况

if n1  == 1:
                        打印选项
print(f'1.已知x1,x2为等差数列的两项且是一元二次函数的两个实数解\n2.已知前n-1项的和,前n项的和与前n+1的和\n3.退出')
                        用户输入选项
n2 = int(input(f'请输入选项:'))
                        选项1的情况
if  n2 == 1: #选项1的情况
    a = int(input(f'请输入a的值:'))
    b = int(input(f'请输入b的值:'))
    c = int(input(f'请输入c的值:'))
    q = b**2-2*(a*c)
    if q == 0:
        x1 = x2 = -b/(2*a)
        d = 0
        print(f'公差为{d}')
    elif q > 0:
        x1 = -b+math.sqrt(q)/(2*a)
        x2 = -b-math.sqrt(q)/(2*a)
        print(f'1.公差为负\n2.公差为正')
        c1 = int(input(f'请输入选项:'))
        if c1 == 1: #选项1的情况
            d = x2 - x1
            print(f'公差为{round(d)}')
        elif c1 == 2: #选项2的情况
            d = x1 - x2
            print(f'公差为{round(d)}')
        else:
            print(f'不存在,终止程序')
            break
        elif q < 0:
            print(f'不存在,终止程序')
            break
                        选项2的情况
elif n2 == 2: #选项2的情况
    s1 =int(input(f'请输入前n项的和:'))
    s2 =int(input(f'请输入前n-1项的和:'))
    s3 =int(input(f'请输入前n+1项的和:'))
    q1 = s1-s2
    q2 = s3-s1
    d = q2-q1
    print(f'a(n)项的值为{q1},a(n+1)项的值为{q2},公差为{d}')

                        
                        选项3的情况以及其他情况
elif n2 == 3: #选项3的情况
    print(f'感谢使用,拜拜')
    break
else:
    print(f'不存在,终止程序')
    break

                选项2的情况

elif n1 == 2: #选项2的情况
    print(f'1.由上题已求得公差,又已知其中一项的项数\n2.由上题已求得公差,又已知前n项和的项数\n3.退出')
    n2 =  int(input(f'请输入选项:'))
                        选项1的情况
if n2 == 1: #选项1的情况
   if q == 0:
       x = x1 = x2
       p = f'{round(x)} + (n-1)*{round(d)}'
       print(f'等差数列首项:{round(x)},公差:{round(d)},通项公式:{p}')
   elif q > 0:
       n3 = int(input(f'x1的项:'))
       if d > 0:
           x = x1 - ((n3 - 1)*d)
           p = f'{round(x)} + (n-1)*{round(d)}'
           print(f'等差数列首项:{round(x)},公差:{round(d)},通项公式:{p}')
       elif d < 0:
           x = x1 - ((n3 - 1)*d)
           p = f'{round(x)} + (n-1)*{round(d)}'
           print(f'等差数列首项:{round(x)},公差:{round(d)},通项公式:{p}')
       else:
           print(f'不存在,终止程序')
   else:
       print(f'不存在,终止程序')
                        选项2的情况
elif n2 == 2: #选项2的情况
    n4 = int(input(f'请输入前n项的项数:'))
    x = (2*s1)/n4-q1
    p = f'{round(x)} + (n-1)*{round(d)}'
    print(f'等差数列首项:{round(x)},公差:{round(d)},通项公式:{p}')
                        选项3的情况以及其他情况
elif n2 == 3: #选项3的情况
    print(f'感谢使用,拜拜')
    break
else:
    print(f'不存在,终止程序')
    break

                选项3的情况

elif n1 == 3: #选项3的情况
    print(f'感谢使用,拜拜')
    break
else:
    print(f'不存在,终止程序')
    break

        第四次循环的情况以及其他情况

elif i == 3: #第四次循环的情况
    print(f'感谢使用,拜拜')
    break
else:
    print(f'不存在,终止程序')
    break

        主函数

asu = Arithmetic_sequence_unknown() #主函数

运行结果

1.求解公差 2.求解首项 3.退出
请输入选项:1
1.已知x1,x2为等差数列的两项且是一元二次函数的两个实数解
2.已知前n-1项的和,前n项的和与前n+1的和
3.退出
请输入选项:1
请输入a的值:2
请输入b的值:4
请输入c的值:1
1.公差为负
2.公差为正
请输入选项:2
公差为2
1.求解公差 2.求解首项 3.退出
请输入选项:2
1.由上题已求得公差,又已知其中一项的项数
2.由上题已求得公差,又已知前n项和的项数
3.退出
请输入选项:1
x1的项:3
等差数列首项:-7,公差:2,通项公式:-7 + (n-1)*2
1.求解公差 2.求解首项 3.退出
请输入选项:3
感谢使用,拜拜

 结语 

        本次讨论的情况都是很普遍的,如果有其他特殊情况请自行添加,注意代码缩进,否则运行时会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值