gpt4 book ai didi

python - 类型错误 : unsupported operand type(s) for//: 'int' and 'graph'

转载 作者:行者123 更新时间:2023-12-04 00:50:54 24 4
gpt4 key购买 nike

我试图使用 pygame 编写一个可以绘制线条的应用程序。代码片段如下所示-

grapher.py

some code...

x = 500

class graph():
def drawgrid(step, t = 1):
for i in range(0, x//step):
pygame.draw.line(win, (0, 0, 255), (i*step, 0), (i*step, y), t)
pygame.draw.line(win, (0, 0, 255), (0, i*step), (x, i*step), t)
pygame.display.update()

graph.drawgrid()只是绘制一个网格,每条线均匀间隔一些像素(值存储在 step 变量中)。

当我运行graph.drawgrid()时在同一个 python 文件( grapher.py )中,它按预期工作。

但是现在,我想在不同的文件( main.py )中运行该函数。代码片段如下-

main.py

import grapher
import pygame

x = 500

draw = grapher.graph()

win = pygame.display.set_mode((x, y))

pygame.display.set_caption("Graph")

run = True
while(run):
pygame.time.delay(100)

for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False

draw.drawgrid(50)

pygame.quit()

我调用该函数,它被调用,但是也在该进程中,函数( graph.drawgrid() )在调用时抛出以下错误 -

   for i in range(0, 500//step):
TypeError: unsupported operand type(s) for //: 'int' and 'graph'

而且,当我改变for i in range(0, x//step):时至for i in range(0, x//int(step)):它现在抛出这个错误 -

        for i in range(0, 500//int(step)):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'graph'

我不确定为什么会发生这种情况,有人能告诉我哪里出了问题以及解决方案吗?

最佳答案

您的drawgrid函数中缺少self参数。

class graph:
def drawgrid(self, step, t = 1):
for i in range(0, x//step):
pygame.draw.line(win, (0, 0, 255), (i*step, 0), (i*step, y), t)
pygame.draw.line(win, (0, 0, 255), (0, i*step), (x, i*step), t)
pygame.display.update()

类中每个函数的第一个参数始终是调用该方法的实例。在您的情况下,您在函数定义中没有参数,因此它被分配给步骤。

编辑:这是一个 site更详细地解释一下。

关于python - 类型错误 : unsupported operand type(s) for//: 'int' and 'graph' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61888743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com