减少python中的if语句
我正在做一个程序,它在一个列表上迭代,现在它是一个巨大的if语句列表:减少python中的if语句,python,Python,我正在做一个程序,它在一个列表上迭代,现在它是一个巨大的if语句列表: def next_button(): print('Finding next button...') continue_blue = pyautogui.locateOnScreen( 'continueblue.jpg', confidence=0.9) continue_red = pyautogui.locateOnScreen( 'continuered.jpg
def next_button():
print('Finding next button...')
continue_blue = pyautogui.locateOnScreen(
'continueblue.jpg', confidence=0.9)
continue_red = pyautogui.locateOnScreen(
'continuered.jpg', confidence=0.9)
next_button4 = pyautogui.locateOnScreen(
'continue4.jpg', confidence=0.9)
next_button5 = pyautogui.locateOnScreen(
'continue5.jpg', confidence=0.9)
next_button6 = pyautogui.locateOnScreen(
'continue6.jpg', confidence=0.9)
next_button7 = pyautogui.locateOnScreen(
'continue7.jpg', confidence=0.9)
next_button9 = pyautogui.locateOnScreen(
'continue9.jpg', confidence=0.9)
if continue_blue:
pause()
pyautogui.click(continue_blue)
if continue_red:
pause()
pyautogui.click(continue_red)
if next_button4:
pause()
pyautogui.click(next_button4)
if next_button5:
pause()
pyautogui.click(next_button5)
if next_button6:
pause()
pyautogui.click(next_button6)
if next_button7:
pause()
pyautogui.click(next_button7)
if next_button9:
pause()
pyautogui.click(next_button9)
print('Next clicked')
显然,这真的很难看,而且不符合枯燥的代码。如何减少函数中if语句的数量?关于如何改进这一点,还有其他建议吗?谢谢大家! 不要将按钮作为单独的变量,而是将它们排列成一个列表:
buttons = [
pyautogui.locateOnScreen('continueblue.jpg', confidence=0.9),
pyautogui.locateOnScreen('continuered.jpg', confidence=0.9),
...
]
然后您可以对它们进行迭代:
for button in buttons:
if button:
pause()
pyautogui.click(button)
把它转换成一个循环
buttons = ['continueblue.jpg', 'continuered.jpg', ...]
def next_button():
for button_img in buttons:
button_obj = pyautogui.locateOnScreen(
button_img, confidence=0.9)
if button_obj:
pause()
pyautogui.click(button_obj)
我不知道订单是否重要,但您可以尝试以下解决方案:
def next_button():
print('Finding next button...')
images = ['continueblue.jpg','continuered.jpg', 'continue4.jpg', 'continue5.jpg','continue6.jpg', 'continue7.jpg', 'continue9.jpg'
for im in images:
continue_var = pyautogui.locateOnScreen(im, confidence=0.9)
if continue_var:
pause()
pyautogui.click(continue_var)
循环浏览所有按钮图像并单击(如果找到)。请注意,如果找到多个按钮,它将单击多个按钮,就像在脚本中一样
def next_按钮():
打印('查找下一步按钮…')
按钮图片=[
“continueblue.jpg”,
“continuered.jpg”,
“continue4.jpg”,
“continue5.jpg”,
“continue6.jpg”,
“continue7.jpg”,
“continue9.jpg”
]
对于按钮图像中的按钮图像:
button=pyautogui.Locate屏幕(按钮图像,置信度=0.9)
如果按钮:
暂停()
pyautogui。单击(按钮)
打印('单击下一步')
导入pyautogui
arr['continueblue.jpg','continuered.jpg','continue4.jpg','continue5.jpg','continue6.jpg','continue7.jpg','continue9.jpg']
对于arr中的i:
如果pyautogui.locateOn屏幕(i,置信度=0.9):
pyautogui.click(pyautogui.locateOnScreen(i,置信度=0.9))
中断
打印(“单击下一步”)您可以使用部分功能来避免在许多地方重复。最后,将所有操作放在dictionary中,并使用其键和函数调用括号调用该dictionary。 下面是一段伪代码
from functools import partial
def next_button(jpg, conf):
next_b = pyautogui.locateOnScreen(jpg, confidence=conf)
pause()
pyautogui.click(next_b)
action = {
continue_blue : partial(next_button, 'continueblue.jpg', 0.9)
continue_red : partial(next_button, 'continuered.jpg', 0.9)
next_button4 : partial(next_button, 'continue4.jpg', 0.9)
next_button5 : partial(next_button, 'continue5.jpg', 0.9)
------
------
}
action['continue_red']()
使用
dict
可能会在某种程度上有所帮助。谢谢!这基本上就是我要找的。循环是一个完美的解决方案!你好,谢谢!我正在寻找一个循环,并使用了你的一些想法,以使程序更好@他们赢了,只有到那时你才能接受吗?干杯完成。再次感谢!