# Solve this problem using knowledge we have acquired so far

#1

If we are only supposed to solve this problem using knowledge we have acquired so far till this exercise than here is a way I have solved it.

```def is_int(x):
#store the number as string in variable 'numb'
numb = str(x)
#split the converted numbers at '.'
#store the results in the list
rounddownlist = numb.split('.')
#The first element in the list above would be our rounded down number
#However, we need to convert the rounded down number back to number using int()
rounddown = int(rounddownlist[0])

#Use of 'abs' below avoids errors with negative numbers
#sample error
#Oops, try again. Your function fails on is_int(-3.4). It returns True when it should return False.

if (abs(x) - abs(rounddown)) > 0:
return False
else:
return True

num1 = -1.0
num2 = 6.3
num3 = 5
num4 = 100.0
num5 = -4.4

print is_int(num1)
print is_int(num2)
print is_int(num3)
print is_int(num4)
print is_int(num5)```

Is_int
#2

Okay so this turned out to be a lot. It's not meant to say that you did a bad job, you did a great job figuring out a way to identify an integer. Still, there's much to improve here, I'm happy if you can make use of just a single thing I mention here:

If you've got a collection of numbers you might not want to use a variable for each one (`num1 num2 num..5`) - a list would be more manageable:

``````nums = [-1.0, 6.3, 5, 100.0, -4.4]
for num in nums:
print '{}: {}'.format(num, is_int(num))``````

The formatting there could also have been written as:

``'%s: %s' % (num, is_int(num))``

(`%s` means to use default string conversion which is fine unless you want something other than that)

but the former method is preferred

And then this:

``````if (abs(x) - abs(rounddown)) > 0:
return False
else:
return True``````

Could have been written as:

``return abs(x) - abs(rounddown) == 0``

or

``return abs(x - rounddown) == 0``

or

``return x - rounddown == 0``

or

``return x == rounddown``

And if you do `int(-1.5)` then that will not round down - it truncates towards zero, the result of that is `-1` which makes your `rounddown` name misleading! It works out correctly but it certainly doesn't help in reasoning about its correctness.

And since `int` already truncates, your whole function boils down to:

``````def is_int(x):
return int(x) == x``````

Which also happens to be really easy to look at and say: "Yeah, that's correct"

Or, if going by the string/split method, it could be tested that the right side is only zeros.

Yet another method is to divide by 1, or to do modulo 1 and look at the remainder.

#3

Thank you for your time and input! It make sense. I will try to make use of it in next exercises.