I'm very much a Python newbie, but I've searched for a solution and I'm stumped.
I have defined a function which accepts several arguments:
def func(arg1, arg2, arg3):
The first argument will be a string but the next two are always going to be integers. I need to construct the following for loop.
for x in range(0, arg2 / 2):
The problem is that arg2 is defaulting to type float and as a result I get the following:
TypeError: 'float' object cannot be interpreted as an integer
I have tried:
for x in range(0, int(arg2) / 2):
But the same thing happens for some reason. How can I specify that arg2 should be taken as an integer, or how can I reinterpret it as an integer?
In Python 3.x:
When you
arg2 / 2you will get a float. If you want an int tryarg2 // 2For example
2 / 2 = 1.0but2 // 2 = 1But you will lose accuracy doing this, but since you want an int I'm assuming you want to round up or down anyways.
In python 2.x / is an int division by default; to get a float division, you had to make sure one of the number was a float.
Edited: As @martineau pointed out, in both Python 2.x and 3.x if the numerator or denominator is a float, / will do float division and // will result in a float result. To get around this cast it to int or make sure it's an int...
2.0 / 2 = 1.0and2.0 // 2 = 1.0and2 / 2.0 = 1.0and2 // 2.0 = 1.02.5 / 2 = 1.25and2.0 // 2 = 1.0and2 / 2.5 = 0.8and2 // 2.5 = 0.0