请教各位,第二种方法可以是啥

img


img


我用for in range写出了第一种,教师说还可以用公式,但是我写了好几次都出现了错误,想请问一下还有其他方法嘛🥺🥺最好写一下具体过程

法一

a=int(input())
b=int(input())
sum=0
while a<b:#如果包括b氛围的话就改成<=
    if a%2==0:
        sum+=a
    a+=1
print(sum)
    

也可以直接用等差数列求和公式
法二

a=int(input())
b=int(input())
sum=0
if a % 2 != 0:
    a = a+1
if b % 2 != 0:
    b=b-1
sum= (a + b)*((b - a) / 2 + 1) / 2#(b - a) / 2 + 1表示a到b,包括a,b,一共有(b - a) / 2 + 1print(sum)

先算范围内的第一个和最后一个偶数x1,x2
最后直接算等差数列和为(x1+x2)((x2-x1)/2+1)/2


def func1(num1, num2):
    plus = 0
    while num1 < num2:
        if num1 % 2 == 0:
            plus += num1
        if num2 % 2 == 0:
            plus += num2
        num1 += 1
        num2 -= 1
    return plus


def func2(num1, num2):
    data = 0
    for i in range(num1, num2, 1):
        if i % 2 == 0:
            data += i
    return data


def func3(num1, num2):
    x1, x2 = None, None
    if num1 % 2 == 0:
        x1 = num1
    else:
        x1 = num1 + 1
    if num2 % 2 == 0:
        x2 = num2
    else:
        x2 = num2 - 1
    data = (x1 + x2)*((x2 - x1) / 2 + 1) / 2
    return data


if __name__ == '__main__':
    a = 10
    b = 100
    print("func1:", func1(a, b))
    print("func2:", func2(a, b))
    print("func3:", func3(a, b))

img


包含a, b
方法一:两个数分别自增和自减,直到相交
方法二:for循环直接寻找偶数
方法三:等差数列求和

就是让你用数学公式解决,不是硬加

用等差数列公式求解呗,把尝试的过程发出来吧,看看有什么问题

while循环也可以吧

a=int(input())
b=int(input())
num = a
sum = 0 
while (num<b):
    if(num % 2 == 0): 
        sum += num
    num += 1
print (sum)

a = int(input("输入a:"))
b = int(input('输入b:'))
sum_num = sum([x if x % 2 == 0 else 0 for x in range(a, b+1)])
print(sum_num)

先把a和b转成a到b中最接近的偶数,再用等差公式就可以了。

a = int(input())
b = int(input())
a += a % 2
b -= b % 2
print((a+b)*((b-a)/2+1)/2)