Python Python Basics (2015) Letter Game App Even or Odd Loop

Ragy Abuamra
Ragy Abuamra
4,044 Points

After adding my code, it says that Task#1 is no longer passing!!

Need some thoughts here please.. Didn't change Task-1, just added the code below. And now it says that Task-1 is no longer passing! What am I doing wrong here? :(

even.py
import random

def even_odd(num):
    # If % 2 is 0, the number is even.
    # Since 0 is falsey, we have to invert it with not.
    return not num % 2

start = 5
while start:
        if num % 2 == 0:
        print('{} is even'.format(num))
        else:
            print('{} is odd'.formate(num))
start -= 1

2 Answers

Bryan Reed
Bryan Reed
11,013 Points

Ragy, in your While loop the variable num is not defined since it's only used in the even_odd function. You actually want to use the even_odd function in your if statement instead of if num % 2 == 0. You need to get a random number at the beginning of your whileloop for the even_odd function to test.

start = 5
while start:
    random_num = random.randint(1, 99)
    if even_odd(random_num):
       print('{} is even'.format(random_num))
    else:
        print('{} is odd'.format(random_num))
    start -= 1

Aaron you're not formatting the strings on your while loop returns

print("{} is even", some_amount) vs print("{} is even".format(some_amount))

Aaron Loften
Aaron Loften
8,025 Points

Thanks. I updated it. Same result though. It still says task 1 is no longer passing. Did you run your code through the challenge and get it to pass?

Bryan Reed
Bryan Reed
11,013 Points

Oops there's actually one last thing I was gonna mention the start-- you have that's decrementing the variable doesn't work in python, you have to do start -= 1. Because the way python treats integers you have to reassign the variable. Just tried the code challenge and it's working after that last change. :)

https://stackoverflow.com/questions/1485841/behaviour-of-increment-and-decrement-operators-in-python

Bryan Reed
Bryan Reed
11,013 Points

I've noticed that when you sometimes get errors in the code challenges it'll tell you that task 1 is no longer working, because of the general error. I usually don't pay mind to those and just run the code myself in a file on my local machine to find the real problem

Aaron Loften
Aaron Loften
8,025 Points

Wow. Youre right. Thanks. :D I appreciate the help. Bummer though on the increment/decrement thing. I love the simple life...haha. Thanks again.

Ragy Abuamra
Ragy Abuamra
4,044 Points

Thank you Bryan.. wasn't sure about it. Now it passed :)

Aaron Loften
Aaron Loften
8,025 Points

I just did this code challenge too and got the same error. I am not sure why.

It might be a bug. Maybe your friendly neighborhood moderator will come by and flag this for a fix. :D

--edit - My code works now because of Bryan's response -- heres my code

import random

start = 5

def even_odd(num):
    # If % 2 is 0, the number is even.
    # Since 0 is falsey, we have to invert it with not.
    return not num % 2

while start:
    some_amount = random.randint(1, 99)

    if even_odd(some_amount):
        print("{} is even".format(some_amount))
    else:
        print("{} is odd".format(some_amount))

    start-=1