2015-02-06 2 views
5

Я знаю, что это было задано раньше, но ответы мне не помогли:/TypeError: range() целочисленный аргумент end ожидается, получил float?

Я создал функцию, которая запускает цикл for по квадрату max входов, и по всем счетам мой код правильный. . и все же он все еще запрашивает входы с плавающей точкой.

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 

печати спираль (3.0,3.0)

И я получаю эту ошибку: TypeError: range() integer end argument expected, got float.

Но я ставлю 3.0, когда я пытаюсь напечатать функцию ... так что мне не хватает?

Спасибо :)

+0

Вы передаете поплавки для значений 'X' и' Y', передайте вместо них целые числа. – 101

+0

вот как я называю функцию: print spiral (3.0, 3.0) – Chef1075

+1

@ Chef1075 - Точно. '3.0' имеет тип' float', а не 'int'. :-). – mgilson

ответ

5

Как и другие сказали в комментарии, проблема состоит в основном из-за значения с плавающей точкой в ​​функции диапазона. Поскольку функция диапазона не принимает тип float в качестве аргумента.

for i in range(max(int(X), int(Y))**2): 
Смежные вопросы