关于这个问题,我正在质疑整个语法,也许这不可能,但是我们开始吧:)
我正在运行pygame窗口。现在我在pygame while循环中有很多代码。因此,我想创建一些功能。
但是,我要创建为函数的代码包含continue和break语句。如果我想返回break或从静态函数继续,显然它会显示“ U愚蠢?Continue / Break在循环之外”
我的主要问题在这里:您将如何以更好的方式设计/解决这个问题?
这是我的代码的样子(或多或少):
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# A small example code snippet that I need as a function
(grabbed, frame0) = camera.read()
if not grabbed: # End of feed
break
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
continue
这是我想要实现的:
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# My dream function
result = myFunction(camera, master)
if result == break:
break
elif result == continue:
continue
def myFunction(camera, master):
(grabbed, frame0) = camera.read()
if not grabbed:
return break # Error: outside a loop
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
return continue, master # Error: outside a loop
return frame2
您可以在函数中引发异常。在循环中,您可以使用try-except构造。也许此链接很有帮助:https://realpython.com/python-exceptions/
只需创建一个global
布尔变量:
running = True
while running:
# your code goes here
如果要中断循环,请将running
设置为False
:
def myFunction():
global running
if you want to break the loop:
running = False