编写一个名为“find_even_count”的函数,允许用户在键盘上输入任意正整数序列,然后打印用户输入的正整数偶数。用户可以输入负数以显示序列的结束。
这是我到目前为止的代码:
def find_even_count(n):
x = 0
even_count = 0
for n in xrange(x):
if n % 2 == 0:
even_count += 1
print even_count
>>> find_even_count(4)
0
我有几个问题
答案 0 :(得分:0)
你只看0到0之间的数字。
x = 0
even_count = 0
for n in xrange(x):
我认为你的意思是for num in xrange(n)
。
但是如果你想输入一个数字列表,我认为你这样做,因为你说用户应该输入任意数字序列,那么你只需要:
for num in n
答案 1 :(得分:0)
您不应该使用xrange
来生成数字,您应该检查给定列表中的数字(基于问题陈述)
def find_even_count(n):
even_count = 0
for num in n:
if num%2 == 0:
even_count += 1
return even_count
>>> find_even_count([1,2,4,6,9,8])
4
请注意,上述方法是尝试跟踪当前函数的流程。更简洁和pythonic的方法是使用列表推导来过滤掉偶数,然后使用len
来确定保留了多少个数
def find_even_count(n):
return len([i for i in n if i%2==0])
>>> find_even_count([1,2,4,6,9,8])
4
答案 2 :(得分:0)
让我们解决问题#1。
您看到0
已返回,因为您的for n in xrange(x)
调用不会导致任何迭代,并且该函数将打印even_count
,其设置为0
并返回!< / p>
你需要通过这样做来解决这个问题:
for x in range(n):
if x %2 == 0:
even_count += 1
对于问题#2,您必须将函数传递给列表而不是单个值。我不确定为什么你要在函数中调用xrange(),因为你想使用用户输入的序列而不是你生成的序列!
def find_even_count(seq):
even_count = 0
for num in seq:
if num%2 == 0:
even_count += 1
return even_count
也可以调用此函数来执行上一个函数的操作:
print find_even_count(xrange(4))
现在你有一个函数可以对序列中的偶数进行计数,你必须使用input
或等价物接受用户输入。
答案 3 :(得分:0)
这个问题有两个不同的部分。第一部分是收集信息。第二个是解释它。
我建议将其分为两个不同的阶段。
首先编写一个函数,从输入中取数字直到输入负数,然后返回输入的数字。
然后按照书面解决问题。
如果您需要更多帮助,我可以使用其他提示/代码编辑此答案。但是因为这是一个家庭作业问题,我认为如果你自己或多或少地完成它会有所帮助。
在一天结束时,遍历列表是多余的,因为无论如何你都可以在输入循环中执行此操作。因此,请不要专注于首先搞清楚这一部分。专注于问题的输入部分。
提示#1
从用户获取整数输入的方法是使用
variable = int(input("Enter your number: "))
请参阅:http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/io.html
提示#2
因为你需要无限期地执行此操作,所以需要一个可以无限运行的循环。最简单的方法是
while (1):
并在循环终止时使用break
。
解决方案
def find_even_count(): total = 0 while (1): num = int(input("Enter a number, use negative numbers to stop the program: ")) if (num < 0): break if (num % 2 == 0): total += 1 print total