打印偶数的"count",而循环使用 if



我应该能够在Python中完成以下内容…

填空完成even_numbers(n)函数。这个函数应该计算从0到给定的"n"数的序列中存在多少个偶数,其中0作为偶数。例如,even_numbers(25)应该返回13,而even_numbers(6)应该返回4。

def even_numbers(n):
count = 0
current_number = 0
while ___ # Complete the while loop condition
if current_number % 2 == 0::
___ # Increment the appropriate variable
___ # Increment the appropriate variable
return count

print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 1

我已经尝试了我能想到的每一种变化来改变我能想到的每一个变量。我参考了课程作业(我已经被困在这个问题上整整一周了),我搜索了Stack Overflow,发现了多种变体,不完全是我需要做的事情(从我现在学习的地方来看,最先进的是……即使他们解决了问题,他们也没有……我试了试,希望灯泡能亮,但没有)。

我一直试图让打印(even_numbers(#))部分匹配…让脚本工作

有谁可以解释这个给我没有直接给出答案?我真的很想知道我哪里出错了,为什么出错了。我是一个完全的新手,主要是自学书籍。

尝试数


def even_numbers(n):
count = 0
current_numbers = 0
while n > current_numbers: # Complete the while loop condition
if current_numbers % 2 == 0:
count = count + 1 # Increment the appropriate variable
else:
current_numbers = current_numbers + 1 # Increment the appropriate variable
return count

print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 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: # Complete the while loop condition
if current_number % 2 == 0:
count = count + 1 # Increment the appropriate variable
else:
current_number = current_number + 1 # Increment the appropriate variable
return count
print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 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: # Complete the while loop condition
if current_numbers % 2 == 0:
count = count + 1 # Increment the appropriate variable
current_numbers = current_numbers + 1
else:
current_numbers = current_numbers + 1 # Increment the appropriate variable
return count

print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 1
12
71
499
0

赋值代码中没有else:。每次迭代都需要增加current_number,而不仅仅是当数字为奇数时。否则,当它是偶数时,你会被困在同一个数字上。所以你不应该添加else:块。

同时,如果结果为偶数,则应计算n,因此条件应为current_number <= n

def even_numbers(n):
count = 0
current_number = 0
while current_number <= n: # Complete the while loop condition
if current_number % 2 == 0::
count += 1 # Increment the appropriate variable
current_number += 1 # Increment the appropriate variable
return count

您从current_number == 0current_number == n计算偶数,因此您应该将current_number初始化为0,并且循环条件应该是current_number <= n

修改第三次尝试,代码应该是:
def even_numbers(n):
count = 0
current_number = 0
while n >= current_number: # Complete the while loop condition
if current_number % 2 == 0:
count = count + 1 # Increment the appropriate variable
current_number = current_number + 1
else:
current_number = current_number + 1 # Increment the appropriate variable
return count

print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 1

最后,current_number = current_number + 1行同时位于ifelse分支中,因此您可以将其提取出来并消除else:

def even_numbers(n):
count = 0
current_number = 0
while current_number <= n: # Complete the while loop condition
if current_number % 2 == 0:
count += 1 # Increment the appropriate variable
current_number += 1 # Increment the appropriate variable
return count

我喜欢你的最后一次尝试。您需要从0开始current_number,并确保使用大于或等于符号:

def even_numbers(n):
count = 0
current_numbers = 0
while n >= current_numbers: # Complete the while loop condition
if current_numbers % 2 == 0:
count = count + 1 # Increment the appropriate variable
current_numbers = current_numbers + 1
else:
current_numbers = current_numbers + 1 # Increment the appropriate variable
return count

print(even_numbers(25))   # Should print 13
print(even_numbers(144))  # Should print 73
print(even_numbers(1000)) # Should print 501
print(even_numbers(0))    # Should print 1

这让我得到了正确的答案

def even_numbers(n):
count = 0
current_number = 0
while current_number <= n:
if current_number % 2 == 0:
count += 1
current_number += 1
return count

print(even_numbers(25))
print(even_numbers(144))
print(even_numbers(1000))
print(even_numbers(0))

这个也可以,我绝对会推荐这个。

def even_numbers(n):
count = 0
current_number = 0
while not current_number: # Complete the while loop condition
if current_number % 2 == 0:
count += n // 2 + 1 # Increment the appropriate variable
current_number = 1 # Increment the appropriate variable
return count

最新更新