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
错误分析(不直接给出答案)
前两次尝试超时原因:
- 当
current_number是偶数时,你只递增了count,但没有改变current_number的值,导致循环条件永远成立,程序陷入无限循环,最终触发超时。 - 循环条件用
n > current_number会直接漏掉n本身,比如n=0时循环根本不会执行,直接返回0,不符合要求。
- 当
第三次尝试结果偏差原因:
- 初始值设为
current_numbers = 1,直接跳过了0这个必须统计的偶数,导致所有结果少1个基础计数。 - 循环条件依然是
n > current_numbers,当n为偶数时(比如144),会漏掉n本身这个偶数,进一步拉低统计结果。
- 初始值设为
内容的提问来源于stack exchange,提问作者Brittney Hanna
相关产品推荐
相关产品推荐

