Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: range() integer end argument expected, got float?

I know this has been asked before, but the answers did not help me :/

I created a function that runs a for loop over the squared max of the inputs, and by all accounts my code is correct...and yet it still asks for float inputs.

def spiral(X, Y):

x = y = 0
dx = 0
dy = 0
count = 0

for i in range(max(X, Y)**2):
    if (-X/2.0 < x <= X/20) and (-Y/2.0 < y <= Y/2.0):
        print (x, y)

    if x == y or (x < 0 and x == -y) or (x > 0 and x == 1-y):
        dx, dy = -dy, dx

    x, y = x+dx, y+dy

print spiral(3.0,3.0)

And I get this error: TypeError: range() integer end argument expected, got float.

But I put 3.0 when I try and print the function...so what am I missing?

Thanks :)

like image 427
Chef1075 Avatar asked Feb 06 '15 02:02

Chef1075


1 Answers

Like others said in the comment, the problem is mainly because of the float value in range function. Because range function won't accept float type as an argument.

for i in range(max(int(X), int(Y))**2):
like image 155
Avinash Raj Avatar answered Nov 15 '22 22:11

Avinash Raj