복붙노트

[PYTHON] 내 간단한 파이썬 프로그램이 오류가 계속 : "TypeError : 'float'개체를 정수로 해석 할 수 없습니다"

PYTHON

내 간단한 파이썬 프로그램이 오류가 계속 : "TypeError : 'float'개체를 정수로 해석 할 수 없습니다"

나는 왜 내 변수를 사용할 수 없는지 이해하지 못한다. 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

해결법

  1. ==============================

    1.에서:

    에서:

    for i in range(c/10):
    

    결과적으로 float를 생성합니다.이를 사용하려면 int 나눗셈 연산자를 사용합니다.

    for i in range(c // 10):
    
  2. ==============================

    2.range ()는 정수만 사용할 수 있지만 / 연산자로 나누면 항상 float 값이됩니다.

    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):
    
  3. ==============================

    3.아래에 표시된 것처럼 범위는 정수만 지원합니다.

    아래에 표시된 것처럼 범위는 정수만 지원합니다.

    >>> 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]
    >>>
    

    그러나 /는 항상 float를 반환하기 때문에 c / 10은 float입니다.

    범위에 넣기 전에 c / 10을 정수로 만들어야합니다. 이것은 int에 넣음으로써 가능합니다 :

    range(int(c/10))
    

    //를 사용하여 정수를 반환합니다.

    range(c//10)
    
  4. from https://stackoverflow.com/questions/19824721/i-keep-getting-this-error-for-my-simple-python-program-typeerror-float-obje by cc-by-sa and MIT license