Converting List Comprehension with if all conditions to Loops in Python

Question:

I’m trying to convert a list comprehension I have as part of a course I’m doing to a for loop but keep bumping into errors/mistakes. I’m using an if all in the list comprehension which I can’t work out what ordering/how to incorporate this into a for loop.

My code is:

def count_primes(num):
    prime = [x for x in range(2,num) if all (x % y != 0 for y in range (2,x))]
    return len(prime)

I’ve currently tried (but not working)

def count_primes(num):
    primes = [2]
    for x in range(3,num):
        for y in range(2,x):
            if x % y == 0:
                break
            else:
                primes.append(x)
                break

    return len(primes)
Asked By: TreesAreGood

||

Answers:

This should do the trick

primes = [2]
for x in range(3, num):
    all_check = True
    for y in range(2, x):
        if x % y == 0:
           all_check = False
            break
    if all_check:
        primes.append(x)

You weren’t actually looping all the way through in your example to check the value.

Answered By: LTJ