Nate
Nate

Reputation: 105

How to specify argument types?

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?

Upvotes: 0

Views: 233

Answers (2)

MooingRawr
MooingRawr

Reputation: 4991

In Python 3.x:

When you arg2 / 2 you will get a float. If you want an int try arg2 // 2

For example 2 / 2 = 1.0 but 2 // 2 = 1

But 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.0 and 2.0 // 2 = 1.0 and 2 / 2.0 = 1.0 and 2 // 2.0 = 1.0 2.5 / 2 = 1.25 and 2.0 // 2 = 1.0 and 2 / 2.5 = 0.8 and 2 // 2.5 = 0.0

Upvotes: 3

galaxyan
galaxyan

Reputation: 6111

try to round for whole formula

for x in range(int(arg2/2)) 

Upvotes: 0

Related Questions