Home > database >  Why are both of these giving me errors with the variable "testnum"?
Why are both of these giving me errors with the variable "testnum"?

Time:01-17

def even_numbers(n1, n2): # your code here lst_evennumbers=[] for x in rang(n1, n2): testnum=x/2 if type(testnum) == type(int()) lst_evennumbers.append(x)

return lst_evennumbers

def even_numbers(n1, n2): # your code here lst_evennumbers=[]

for x in rang(n1, n2):
     testnum=x/2
    if testnum % 2 == 0
        lst_evennumbers.append(x)


return lst_evennumbers

CodePudding user response:

Try making following changes in your def even_numbers function:

for x in range(n1, n2):
    testnum = x
    if testnum % 2 == 0:
        lst_evennumbers.append(x)


return lst_evennumbers

CodePudding user response:

Solution

Your first problem is that you if statement is done incorrectly. It seems you want to use a ternary if statement which requires an else even if you don't want to return anything to be returned otherwise, if you do want an empty else just use a backslash \:

like so:

testnum = x/2 if type(testnum) == int() else \

Secondly to check if something is an integer type do this:

if type(<var>) == int():`

Lastly to check if something is even you should check if a division by 2 has any remainders. It is worth noting that your devision by 2 before your check is giving you errors as they should both be ints and a division will give you a float.

like so:

testnum if x % 2 == 0 else \

Finally, here is all the corrected code code:

def even_numbers(n1, n2): # your code here
    lst_evennumbers=[] 
    for x in range(n1, n2): 
        testnum = x if x % 2 == 0 else \
        lst_evennumbers.append(x)

    return lst_evennumbers
def even_numbers(n1, n2): # your code here 
    lst_evennumbers=[]
    for x in range(n1, n2):
        if testnum % 2 == 0:
            lst_evennumbers.append(x)


    return lst_evennumbers

Or if you prefer normal if staements:



def even_numbers(n1, n2): # your code here
    lst_evennumbers=[] 
    for x in range(n1, n2): 
        if type(testnum) == int():
            testnum= x/2
        lst_evennumbers.append(x)

    return lst_evennumbers

def even_numbers(n1, n2): # your code here 
    lst_evennumbers=[]
    for x in range(n1, n2):
        testnum=x/2
        if testnum % 2 == 0:
            lst_evennumbers.append(x)


    return lst_evennumbers
      

CodePudding user response:

Your range will unnecessarily include odd numbers.

Try this:

def even_numbers(n1, n2):
    global lst_evennumbers
    if n1 % 2 != 0:
        n1  = 1
    lst_evennumbers  = [e for e in range(n1, n2, 2)]
  •  Tags:  
  • Related