Count Even Numbers用户已输入PYTHON 3

时间:2013-08-08 08:20:28

标签: python count

我必须创建两个函数。一个可以通过返回t / f来判断一个数字是奇数还是偶数,另一个可以调用第一个函数然后返回有多少个偶数。

到目前为止,这是我的代码:

    Even = [0,2,4,6,8]
    IsEvenInput = int(input("Please enter a number: "))

    def IsEvenDigit(a):
        if a in Even:
            return True
        else:
            return False

    y = IsEvenDigit(IsEvenInput)
    print(y)


    def CountEven(b):
        count = 0
        for a in b:
            if IsEvenDigit(a):
                count+=1
        return count
    d = input("Please enter more than one number: ")
    y = CountEven(d)
    print(y)

这会保持输出0并且实际上不会计数。我现在做错了什么?

5 个答案:

答案 0 :(得分:1)

d = input("Please enter more than one number: ")

这将返回一串数字,可能用空格分隔。您需要将split()字符串放入文本数字序列中,然后将其转换为整数。


有一种通用方法可以确定数字是奇数还是使用模数/余数运算符%:如果除以2之后的余数是0那么数字是甚至。

答案 1 :(得分:0)

你在计算整数 - [0,2,4,6,8]等 - 是字符串中的字符 - “0”,“2”,“4”,“6”,“8”等目前,IsEvenDigit(a)永远不会成为现实,因为字符串中的字符不会出现在偶数整数列表中,因此if语句下面的代码永远不会被执行。您需要在CountEven函数中使用IsEvenDigit(int(a))

关于另一个主题,你的帖子的评论者建议阅读PEP 8.你的代码实际上格式很好,它只是在Python中,CamelCase仅用于类,而words_seperated_by_underscores用于变量和函数名。

或者,如果您想要简洁和不可读,请使用一些代码:

main = lambda: sum(map(lambda x: int(x) % 2 == 0, (i for i in input("Enter a number: "))))
main()

确实定义了2个(匿名)函数!

答案 2 :(得分:0)

这是另一种方法:

def is_even(number):
    return number % 2 == 0

def even_count(numbers_list):
    count = 0

    for number in numbers_list:
        if is_even(number): count += 1

    return count

raw_numbers = input("Please enter more than one number: ")
numbers_list = [int(i) for i in raw_numbers.split()]

count = even_count(numbers_list)
print(count)

这也将照顾所有其他数字。

答案 3 :(得分:0)

因此,通过在函数CountEven范围之外调用CountEvent(d),您不使用递归,只需在定义函数后调用该函数即可。

尝试减少功能之外的代码量。

    #Start by declaring your functions:
    def isEven(n):
        return n % 2 == 0

    def countEven():
        count = 0
        string_of_numbers = input("Please enter numbers separated by spaces: ")
        list_of_number_characters = string_of_numbers.split(' ')
        for number in list_of_number_characters:
            number_as_int = int(number)
            if isEven(number_as_int) == True:
                count = count + 1
        print("There were " + str(count) + " even numbers found.")


    countEven() #Call the function that runs your program

答案 4 :(得分:0)

可能的解决方案:

def is_even(n):
    return not n % 2

def count_even(numbers)
    return sum(map(is_even, numbers))

nums = input("Enter numbers separated by spaces: ")
nums = map(int, nums.split())
print(count_even(nums))