You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过两次输入指定区间而非预定义区间统计区间内偶数数量

动态输入区间统计偶数的解决方案

嘿,我来帮你搞定这个问题!你的核心需求是通过两次输入分别指定区间的起始和结束值,来动态统计区间内的偶数总数,我们先看看原代码里的问题,再给出修改后的方案。

原代码的问题

你原来的print(x(input(" "," ")))写法是错误的:input()函数只能接收一个提示文本参数,并且返回单个字符串,没办法直接拆分成start和end两个参数传给函数x(),这会导致参数数量不匹配的错误。

修改后的完整代码

我们分两次获取输入,转换为整数后再传递给函数,同时可以把函数名改得更语义化(当然你也可以保留原来的x):

def count_evens(start, end):
    count = 0
    # range是左闭右开区间,所以会遍历start到end-1的所有数
    for num in range(start, end):
        if num % 2 == 0:
            count += 1
    return count

# 分两次获取用户输入,转换为整数类型
start_num = int(input("请输入区间的起始值:"))
end_num = int(input("请输入区间的结束值:"))

# 调用函数并输出结果
result = count_evens(start_num, end_num)
print(f"区间[{start_num}, {end_num})内的偶数总数为:{result}")

# 验证你的示例:区间1-11(range(1,11)会包含1到10,符合示例的偶数范围)
print(f"示例验证:区间[1,11)内的偶数总数为:{count_evens(1, 11)}")

额外优化:用数学公式替代循环(更高效)

如果你的区间范围很大,循环会比较慢,我们可以用数学公式直接计算偶数总数,不用遍历每个数:

def count_evens(start, end):
    # 先确定区间内第一个偶数和最后一个偶数(因为range是左闭右开,实际统计到end-1)
    first_even = start if start % 2 == 0 else start + 1
    last_even = (end - 1) if (end - 1) % 2 == 0 else (end - 2)
    
    # 如果第一个偶数比最后一个大,说明区间内没有偶数
    if first_even > last_even:
        return 0
    
    # 计算偶数的个数:(最后一个偶数 - 第一个偶数)/2 + 1
    return ((last_even - first_even) // 2) + 1

这个方法的效率更高,不管区间多大都能瞬间得到结果,逻辑也很清晰。

内容的提问来源于stack exchange,提问作者Siaopei ching

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:07:57