[英]How to change the boolean value of C to the boolean value of python on mac
[英]Change parameter to a boolean value in python
我试图使用 python 在 pygame 中创建一个后退按钮,但我的参数(条件)没有设置为 false,我该怎么做? 这是我的代码:
def back(condition): #condition - any boolean variable in my script
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if 5 + 125 > mouse[0] > 5 and 5 + 125 > mouse[1] > 5:
gameDisplay.blit(backBtn, (5, 5))
if click[0] == 1:
if condition:
condition = False
else:
gameDisplay.blit(backBtn_hover, (5, 5))
如果您有任何答案,请回答。
谢谢::D
由于condition
是不可变类型,因此对其的任何更改仅在 function 内部可见。
在调用 function 时,您需要将其归还并重新分配。
def back(condition): #condition - any boolean variable in my script
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if 5 + 125 > mouse[0] > 5 and 5 + 125 > mouse[1] > 5:
gameDisplay.blit(backBtn, (5, 5))
if click[0] == 1:
if condition:
condition = False
else:
gameDisplay.blit(backBtn_hover, (5, 5))
return condition
...
condition = back(condition)
通常不建议将其设为全局变量,因此我不建议这样做。
你期望这会发生吗?
condition = True
back(condition)
print(condition) # False
这不是 Python 的工作方式。 您不能更改传递给函数的变量。 这样的事情会奏效。
container = { 'condition': True }
back(container)
print(container['condition']) # False
因为在这种情况下,您不会更改变量,而是更改其内容。 但无论如何,这是糟糕的代码。 通常你会做这样的事情:
condition = True
condition = back(condition)
print(condition) # False
当然你需要在你的 function 中添加一个 return 语句。
您的答案可能是由于您的变量范围,下面提供的三个示例有望引导您找到解决方案:
情况一
condition = True
def back(condition):
condition = False
print(f"{condition=}")
def main():
local_condition = back(condition)
global_condition = condition
print(f"{local_condition=}\n{global_condition=}")
if __name__ == '__main__':
main()
结果:
condition=False
local_condition=None
global_condition=True
情况 2 在返回函数中添加了返回
condition = True
def back(condition):
condition = False
print(f"{condition=}")
return condition
def main():
local_condition = back(condition)
global_condition = condition
print(f"{local_condition=}\n{global_condition=}")
if __name__ == '__main__':
main()
结果 2:
condition=False
local_condition=False
global_condition=True
情景三重新定义全球
condition = True
def back(condition):
condition = False
print(f"{condition=}")
return condition
def main():
global condition
condition = back(condition)
global_condition = condition
print(f"{condition=}\n{global_condition=}")
if __name__ == '__main__':
main()
结果 3:
condition=False
condition=False
global_condition=False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.