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

Python偶数计数while循环函数填空求助,求错误原因解析

问题:实现统计0到n(含n)偶数数量的Python函数

我需要完成Python的even_numbers(n)函数,该函数统计0到给定数字n(含n)的序列中偶数数量,0算作偶数。例如even_numbers(25)应返回13,even_numbers(6)应返回4。

函数模板如下:

def even_numbers(n):
   count = 0
   current_number = 0
   while ___ # 补全while循环条件
       if current_number % 2 == 0:
           ___ # 递增对应的变量
       ___ # 递增对应的变量
   return count
   
print(even_numbers(25))   # 应输出13
print(even_numbers(144))  # 应输出73
print(even_numbers(1000)) # 应输出501
print(even_numbers(0))    # 应输出1

我试了好几种写法,查了课程资料和Stack Overflow还是没解决,卡了一周。下面是我的几次尝试:


第一次尝试

def even_numbers(n):
    count = 0
    current_numbers = 0
    while n > current_numbers: # 补全的while循环条件
        if current_numbers % 2 == 0:
            count = count + 1 # 递增对应的变量
        else:
            current_numbers = current_numbers + 1 # 递增对应的变量
    return count
    
print(even_numbers(25))   # 应输出13
print(even_numbers(144))  # 应输出73
print(even_numbers(1000)) # 应输出501
print(even_numbers(0))    # 应输出1

运行结果:

Evaluation took more than 5 seconds to complete.
Please try again with a simpler expression.


第二次尝试

def even_numbers(n):
    count = 0
    current_number = 0
    while n > current_number: # 补全的while循环条件
        if current_number % 2 == 0:
           count = count + 1 # 递增对应的变量
        else:
            current_number = current_number + 1 # 递增对应的变量
    return count

print(even_numbers(25))   # 应输出13
print(even_numbers(144))  # 应输出73
print(even_numbers(1000)) # 应输出501
print(even_numbers(0))    # 应输出1

运行结果:

Evaluation took more than 5 seconds to complete.
Please try again with a simpler expression.


第三次尝试

def even_numbers(n):
    count = 0
    current_numbers = 1
    while n > current_numbers: # 补全的while循环条件
        if current_numbers % 2 == 0:
           count = count + 1 # 递增对应的变量
           current_numbers = current_numbers + 1
        else:
           current_numbers = current_numbers + 1 # 递增对应的变量
    return count
    
print(even_numbers(25))   # 应输出13
print(even_numbers(144))  # 应输出73
print(even_numbers(1000)) # 应输出501
print(even_numbers(0))    # 应输出1

运行结果:

12
71
499
0


错误分析(不直接给出答案)

  1. 前两次尝试超时原因:

    • 当current_number是偶数时,你只递增了count,但没有改变current_number的值,导致循环条件永远成立,程序陷入无限循环,最终触发超时。
    • 循环条件用n > current_number会直接漏掉n本身,比如n=0时循环根本不会执行,直接返回0,不符合要求。
  2. 第三次尝试结果偏差原因:

    • 初始值设为current_numbers = 1,直接跳过了0这个必须统计的偶数,导致所有结果少1个基础计数。
    • 循环条件依然是n > current_numbers,当n为偶数时(比如144),会漏掉n本身这个偶数,进一步拉低统计结果。

内容的提问来源于stack exchange,提问作者Brittney Hanna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:32:10