変数c
を使用できない理由がわかりません。
コード:
from turtle import *
speed(0)
hideturtle()
c = 450
def grid(x,y,a):
seth(0)
pu()
goto(x,y)
pd()
for i in range(4):
forward(a)
rt(90)
for i in range(c/10):
seth(0)
forward(10)
rt(90)
forward(c)
backward(c)
for i in range(c/10):
seth(0)
rt(90)
forward(10)
rt(90)
forward(c)
backward(c)
pu()
goto(a+10,0)
write("x")
goto(0,a+10)
write("y")
pd()
grid(0,0,c)
grid(-c,0,c)
grid(-c,c,c)
grid(0,c,c)
次のエラーメッセージが表示されます。
Traceback (most recent call last):
File "C:\Users\nick\Desktop\gridv2.py", line 35, in <module>
grid(0,0,c)
File "C:\Users\nick\Desktop\gridv2.py", line 15, in grid
for i in range(c/10):
TypeError: 'float' object cannot be interpreted as an integer
に:
for i in range(c/10):
結果としてフロートを作成しています-これを修正するには、int除算演算子を使用します。
for i in range(c // 10):
range()
は整数でのみ機能しますが、/
演算子は常にfloat値になります。
>>> 450 / 10
45.0
>>> range(450 / 10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer
値を再び整数にします。
for i in range(int(c / 10)):
または、//
フロア分割演算子:
for i in range(c // 10):
以下に示すように、range
は整数のみをサポートします。
>>> range(15.0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: range() integer end argument expected, got float.
>>> range(15)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>>
しかしながら、 c/10
は、/
は常にfloatを返します。
range
に入れる前に、c/10
整数。これは int
に配置することで実行できます。
range(int(c/10))
または //
。整数を返します。
range(c//10)