1. ホーム
  2. python

[解決済み] TypeError: range() integer end argument expected, got float?

2022-02-13 04:08:41

質問

これは以前にも質問されたことがあると思いますが、その回答は私の助けにはなりませんでした :/。

入力の二乗最大値に対してforループを実行する関数を作りました。どう考えても私のコードは正しいのですが...それでもまだfloat入力を要求されます。

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と表示されるのですが、何が足りないのでしょうか?

ありがとうございます :)

解決方法は?

コメントで他の方がおっしゃっているように、この問題は主にrange関数にfloat値が含まれていることが原因です。なぜなら、range関数は引数としてfloat型を受け入れないからです。

for i in range(max(int(X), int(Y))**2):