Python查找偶数

时间:2014-12-11 17:33:03

标签: python loops

  

编写一个名为“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

我有几个问题

  1. 如您所见,即使存在偶数,输出也为0
  2. 我不能写一个以上的数字作为我的输入。

4 个答案:

答案 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