数字求和小工具

复杂条件求和算法解析
本文深入探讨了一种复杂的求和算法,该算法能够处理多种边界条件,包括但不限于当两个整数相等、相差2、一奇一偶等情况。通过详细的代码解析,展示了如何在不同情况下计算两个整数之间的所有整数之和。
def sum_num(a,b): #求和函数
    falg=0
    sum=0
    try:
        # type(a) or type(b) !=int
        if a==b: #判断a等于b的情况
            sum=a or b
            print('----1----')
            print(sum)
        elif a-b==2 or b-a==2: #判断a-b或者b-a等于2的情况
            if a>b: #判断a>b
                if (b==0 or b==1) and a%2!=0: #判断b为0或者为1且判断a是否为奇数,奇数的中位数为(a+b)/2
                    a+=1
                    while falg<b:
                        falg+=1
                        sum+=a+b
                    c=int(a/2)+1
                    sum+=c
                    print('----2.1.0----')
                    print(sum)
                elif (b==0 or b==1)and a%2==0: #判断b为0或者为1且判断a是否为偶数,偶数则多循环一次
                    b=1
                    while falg<=int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                        print('----2.1.1----')
                    print(sum)
                elif a%2==0: #判断b为0或者为1且判断a是否为偶数,偶数则多循环一次
                    while falg<=int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                    print('----2.1.2----')
                    print(sum)
                elif ((a-b)/2)<1 : #判断a-b小于2
                    sum=(a+b)*(int((a/2))+1)
                    print('----2.1.3----')
                    print(sum)
                elif a%2!=0 and (((a-b)%2!=0) or ((a-b)%2==0)) : #判断b为0或者为1且判断a是否为奇数,奇数的中位数为(a+b)/2
                    while falg<int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                    # print(sum)
                    c=int(a/2)+1
                    sum+=c
                    print('----2.1.4----')
                    print(sum)
            elif b>a:
                if (a==0 or a==1)and b%2==0:
                    a=1
                    while falg<=int(((b-a)/2)):
                        falg+=1
                        sum+=a+b
                    print('----2.2.1----')
                    print(sum)
            elif (a==0 or a==1) and b%2!=0:
                a=1
                while falg<int(((b-a)/2)):
                    falg+=1
                    sum+=a+b
                c=int(b/2)+1
                sum+=c
                print('----2.2.2----')
                print(sum)

            elif b%2==0:
                while falg<int(((b-a)/2)):
                    falg+=1
                    sum+=a+b
                # print(sum)
                c=(b+a)/2
                print('----2.2.3----')
                sum+=c
                print(sum)
            elif ((b-a)/2)<1:
                sum=(a+b)*(int((b/2))+1)
                print('----2.2.4----')
                print(sum)
            elif b%2!=0 and (((a-b)%2!=0) or ((a-b)%2==0)):
                while falg<int(((b-a)/2)):
                    falg+=1
                    sum+=a+b
                c=int(b/2)+1
                sum+=c
                print('----2.2.5----')
                print(sum)

        elif a-b>2 or b-a>2:
            if a>b: #判断a大于b的情况
                if (b==0 or b==1) and a%2==0:
                    b=1
                    while falg<=int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                    print('----3.1.1----')
                    print(sum)
                elif (b==0 or b==1)and a%2!=0:
                    b=1
                    while falg<int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                        print(sum)
                    c=int(a/2)+1
                    sum+=c
                    print('----3.1.2----')
                    print(sum)

                elif a%2==0:
                    while falg<int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                    c=(a+b)/2
                    sum+=c
                    print('----3.1.3----')
                    print(sum)
                elif ((a-b)/2)<1 :
                    sum=(a+b)*(int((a/2))+1)
                    print('----3.1.4----')
                    print(sum)
                elif a%2!=0 and (((a-b)%2!=0) or ((a-b)%2==0)):
                    while falg<=int(((a-b)/2)):
                        falg+=1
                        sum+=a+b
                    # print(sum)
                    # c=int(a/2)+1
                    # print(c)
                    # sum+=c
                    print('----3.1.5----')
                    print(sum)
            elif b>a: #正常情况
                if (a==0 or a==1) and b%2==0:
                    a=1
                    while falg<=int(((b-a)/2)):
                        falg+=1
                        sum+=a+b
                    print('----3.2.1----')
                    print(sum)
                elif (a==0 or a==1) and b%2!=0:
                    a=1
                    while falg<int(((b-a)/2)):
                        falg+=1
                        sum+=a+b
                    c=int(b/2)+1
                    sum+=c
                    print('----3.2.2----')
                    print(sum)

                elif b%2==0 :
                    while falg<int(((b-a)/2)):
                        falg+=1
                        sum+=a+b
                    c=(a+b)/2
                    sum+=c    
                    print('----3.2.3----')
                    print(sum)
                elif ((b-a)/2)<1:
                    sum=(a+b)*(int((b/2))+1)
                    print('----3.2.4----')
                    print(sum)
                elif b%2!=0 and (((a-b)%2!=0) or ((a-b)%2==0)):
                    while falg<=int(((b-a)/2)):
                        falg+=1
                        sum+=a+b
                        # print(sum)
                    print('----3.2.5----')
                    print(sum)
        elif a-b<=1 or b-a<=1:
            print('----4.0.0----')
            sum=a+b
            print(sum)
    except Exception as e:
        print("您的输入错误:%s" %e)

sum_num(1,365)

 

转载于:https://www.cnblogs.com/qtclm/p/10332204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值