Search code examples
pythonlistfunctiontypeerror

Python function to count divisible numbers in a list?


I need to write a python function that takes a list as the input and calculates the number of numbers divisible by some other number, n. This is the code I have so far:

enter image description here

Could someone advice me on what approach to take, please?

I tried a for loop that finds the divisible numbers and adds them to a counter, but that is not working.


Solution

  • You're returning the length of an integer, count, when you probably want to return the count itself:

    def count_divisible(lst, n):
        count = 0
        for i in lst:
            if i % n == 0:
                count += 1
        return count
    

    You can shorten your function and make it safer by checking each item is actually an int or a float:

    def count_divisible_short_and_safe(lst: list, n: int) -> int:
        return len([x for x in lst if isinstance(x, (int, float)) and x % n == 0])
    
    assert count_divisible_short_and_safe([2,3,4,5, "foo"], 2) == 2