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

44,524

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):
Share:
44,524
Chef1075
Author by

Chef1075

Wants Sushi 🍣

Updated on July 23, 2022

Comments

  • Chef1075
    Chef1075 almost 2 years

    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 :)