Python 重复陈述的优雅方式

Python 重复陈述的优雅方式,python,if-statement,Python,If Statement,有没有办法让每一句话都有效? 如果语句可以存储到数组或列表中,那么只需使用iterration就更容易了。 我希望是这样 def foo(): global interupsi distance = 50 while distance>0: pyautogui.drag(distance, 0, duration=0.5) # move right if interups

有没有办法让每一句话都有效? 如果语句可以存储到数组或列表中,那么只需使用iterration就更容易了。 我希望是这样

def foo():
        global interupsi
        distance = 50  
        while distance>0:
                pyautogui.drag(distance, 0, duration=0.5)   # move right
                if interupsi:
                        break
                distance -= 5
                pyautogui.drag(0, distance, duration=0.5)   # move down
                if interupsi:
                        break
                pyautogui.drag(-distance, 0, duration=0.5)  # move left
                if interupsi:
                        break
                distance -= 5
                pyautogui.drag(0, -distance, duration=0.5)  # move up
                if interupsi:
                        break
因此,保存到名为
statement\u list
的列表中的语句将被反复调用,因此它将是高效的,如果中断:重复,我不需要复制粘贴


注意:可以随时更改
interupsi
变量。

您可以将方向存储在向量列表中

statement_list=[statement1,statement2,statement3,statement4]

def foo():
        global interupsi
        distance = 50  
        while distance>0:
                for statements in statement_list
                        statements()
                        if interupsi:
                                break

可以将方向存储在向量列表中

statement_list=[statement1,statement2,statement3,statement4]

def foo():
        global interupsi
        distance = 50  
        while distance>0:
                for statements in statement_list
                        statements()
                        if interupsi:
                                break

我假设您仍然希望
中断
退出
while
循环,因此您需要正确处理该问题,或者使用内部循环以外的其他方法。在这里,我将循环遍历先前存储的一些语句以供执行,并使用
interupsi
检查距离。然而,我不确定我是否会将其描述为优雅

来自itertools导入周期的

行动=[
''pyautogui.drag(距离[0],0,持续时间=0.5)
''',
''距离[0]-=5
拖动(0,距离[0],持续时间=0.5)
''',
''pyautogui.drag(-distance[0],0,duration=0.5)
''',
''距离[0]-=5
拖动(0,-距离[0],持续时间=0.5)
''',
''时间。睡眠(0.1)
''' ]
def foo():
全球interupsi
距离=[50]
对于周期中的操作(操作):
行政主任(行动)

如果interupsi或distance[0],我将假设您仍然希望
中断
退出
while
循环,因此您需要正确处理该问题或使用内部循环以外的其他方法。在这里,我将循环遍历先前存储的一些语句以供执行,并使用
interupsi
检查距离。然而,我不确定我是否会将其描述为优雅

来自itertools导入周期的

行动=[
''pyautogui.drag(距离[0],0,持续时间=0.5)
''',
''距离[0]-=5
拖动(0,距离[0],持续时间=0.5)
''',
''pyautogui.drag(-distance[0],0,duration=0.5)
''',
''距离[0]-=5
拖动(0,-距离[0],持续时间=0.5)
''',
''时间。睡眠(0.1)
''' ]
def foo():
全球interupsi
距离=[50]
对于周期中的操作(操作):
行政主任(行动)

如果interupsi或距离[0]
pyautogui。拖动
可以更改
interupsi
值吗?在第二个代码中,它应该是
statements()
,以实际调用method@azrointerupsi值由
键盘
模块更改,因此这是另一个主题。如果我按“q”,则会更改,然后interupsi将设置为
True
函数是可以存储在列表中的对象,而不是语句。但这并不能解决您的问题,因为距离是一个局部变量,除非返回
pyautogui,否则无法在函数中修改。拖动
可以更改
interupsi
值吗?在第二个代码中,它应该是
statements()
,以实际调用method@azrointerupsi值由
键盘
模块更改,因此这是另一个主题。如果我按“q”,则会更改,然后interupsi将设置为
True
函数是可以存储在列表中的对象,而不是语句。但这并不能解决您的问题,因为距离是一个局部变量,除非返回,否则无法在函数中修改它。我正在考虑将方向保存到列表而不是语句,事实上,我甚至在问这个问题之前就想这么做,但我觉得我很幸运,我可以操纵方向,而不是只在这种情况下使用语句
。所以这个答案不是一般答案。@MuhammadIkhwanPerwira如果这不是一般答案,那是因为你没有问一般问题。抱怨一个答案成功地回答了你实际提出的问题似乎很奇怪,因为它没有回答你没有问的问题。我不确定我是否理解。这减少了您要求的重复代码我正在考虑将方向保存到列表而不是语句,实际上我甚至在提出此问题之前就想这样做,但我认为我很幸运,我可以操纵方向而不是语句
,仅在这种情况下
。所以这个答案不是一般答案。@MuhammadIkhwanPerwira如果这不是一般答案,那是因为你没有问一般问题。抱怨一个答案成功地回答了你实际提出的问题似乎很奇怪,因为它没有回答你没有问的问题。我不确定我是否理解。这将减少您要求的重复代码