AMOUNT = 1
x = 175
y = 175
def main():
screen = pygame.display.set_mode((600,600))
screen.fill( (251,251,251) )
BoxAmountCalc(humaninput)
DrawBoxCalc()
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
def BoxAmountCalc(x):
x = (2**humaninput) * (2**humaninput)
size = 600/x
return size
def DrawBoxCalc():
while True:
pygame.draw.rect(screen,(0,0,0), (x,y,size,size))
AMOUNT += 1
x = x + size
x = y + size
pygame.display.flip()
if AMOUNT > humaninput:
break
我遗漏了代码的一些部分,一些变量定义,但是当我尝试运行此代码时,它给出了一个错误,指出“屏幕”没有定义。
这是因为我需要将它定义为函数的参数然后将其传递给函数,还是我在这里完全遗漏了一些东西?
感谢您的关注,对不起,我很抱歉。
答案 0 :(得分:1)
这是因为我需要将它定义为的参数 函数然后将其传递给函数。
是。函数完成执行后,其中创建的变量将被销毁。这是一个例子:
def go():
x = 10
go()
print(x)
--output:--
Traceback (most recent call last):
File "1.py", line 5, in <module>
print(x)
NameError: name 'x' is not defined
同样的事情:
def go():
x = 10
def stay():
print(x)
go()
stay()
--output:--
File "1.py", line 9, in <module>
stay()
File "1.py", line 6, in stay
print(x)
NameError: name 'x' is not defined
可是:
x = 10
def go():
print(x)
go()
--output:--
10
更好:
def go(z):
print(z)
x = 10
go(x)
--output:--
10
尽量保持你的函数自包含,这意味着他们应该接受一些输入并产生一些输出,而不使用函数外的变量。
在您的代码中,您可以执行以下操作:
DrawBoxCalc(screen)
和def DrawBoxCalc(screen)
:
但你也有人为输入的问题。我会尝试将DrawBoxCalc定义为DrawBoxCalc(人工输入,屏幕),并使用两个args调用它。这意味着你必须将main定义为main(humaninput)。
此外,函数名称应以小写字母开头,python使用所谓的snake_case作为小写名称,因此draw_box_calc
和类名称应以大写字母开头,并且可以使用驼峰大小写: class MyBox
。