python - 使用 'if' 和 'else' 循环 - 替代 'break'
问题描述
如果(例如)leg1_horse1.value==1 为 TRUE,我想中断以下代码,代码将“中断”并在该代码的最底线之后继续。
if leg1_horse1.value==1:
one=pyautogui.locateOnScreen('1.png')
pyautogui.moveTo(one,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
if leg1_horse1.value==2:
two=pyautogui.locateOnScreen('2.png')
pyautogui.moveTo(two,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
if leg1_horse1.value==3:
three=pyautogui.locateOnScreen('3.png')
pyautogui.moveTo(three,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
if leg1_horse1.value==4:
four=pyautogui.locateOnScreen('4.png')
pyautogui.moveTo(four,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
if leg1_horse1.value==5:
five=pyautogui.locateOnScreen('5.png')
pyautogui.moveTo(five,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
换句话说,解决方案代码可能如下所示:
if leg1_horse1.value==1:
one=pyautogui.locateOnScreen('1.png')
pyautogui.moveTo(one,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
***break***
else:
pyautogui.press('down')
if leg1_horse1.value==2:
two=pyautogui.locateOnScreen('2.png')
pyautogui.moveTo(two,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
***break***
else:
pyautogui.press('down')
if leg1_horse1.value==3:
three=pyautogui.locateOnScreen('3.png')
pyautogui.moveTo(three,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
***break***
else:
pyautogui.press('down')
if leg1_horse1.value==4:
four=pyautogui.locateOnScreen('4.png')
pyautogui.moveTo(four,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
***break***
else:
pyautogui.press('down')
if leg1_horse1.value==5:
five=pyautogui.locateOnScreen('5.png')
pyautogui.moveTo(five,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
***break***
else:
pyautogui.press('down')
这当然行不通。我觉得这里有某种嵌套循环会有所帮助 - 但我不能完全理解它。
先感谢您。
解决方案
if leg1_horse1.value==1:
one=pyautogui.locateOnScreen('1.png')
pyautogui.moveTo(one,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
elif leg1_horse1.value==2:
two=pyautogui.locateOnScreen('2.png')
pyautogui.moveTo(two,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
elif ...==...:
.
.
.
else:
pyautogui.press('down')
如果第一个条件匹配另一个将不会执行。
编辑
看到您的代码,我认为还有一个更好的选择,因为除了一个命令参数之外,所有语句看起来都一样:
image_map = {1:'1.png', 2:'2.png', ...}
if leg1_horse1.value in image_map.keys():
one=pyautogui.locateOnScreen(image_map[leg1_horse1.value])
pyautogui.moveTo(one,duration=1)
pyautogui.move(670,0,duration=1)
pyautogui.click()
else:
pyautogui.press('down')
使用它,您将能够快速添加一个选项,而无需每次添加 5 行,并且更易于阅读
推荐阅读
- javascript - 在 routerLink 或浏览器后退按钮之后失去 Materialise javascript 和 jquery 功能
- google-chrome-extension - 如何运行 jQuery if($(this) 语句来发送 browser.runtime.sendMessage?
- dagger-2 - 通过 ParentComponent 绑定的 ChildComponent 不支持 Dagger 2 BindsInstance?
- flutter - 如何将图库或相机中的图像转换为二进制字符串?
- react-native - 路由组件必须是 React 组件
- asp.net-core - 验证不完整
- java - 这段代码有什么问题......?Java 套接字编程
- gallery - 如何更改 PrimeNG 的 p-galleria 中的图像大小?
- linux - 如何从我的 CSV 文件输出中删除 NONREF,以便在脚本运行时不会打印出该行?
- ios - UIScrollView 嵌套在 UIPageViewController 幻灯片中