繁体   English   中英

除非已经在 Python 中循环完成 [关闭]

[英]Do unless already done in loop in Python [closed]

我正在尝试制作一个寻找红色、绿色和蓝色的机器人,然后根据显示的颜色执行不同的操作。 我的问题是代码试图一遍又一遍地执行相同的序列,我只希望它执行一次,然后 go 回到搜索像素直到它是不同的颜色

import PIL.ImageGrab
import mouse
import time
import pyautogui


while True:
    rgb = PIL.ImageGrab.grab().load()[1057, 334]
    rgb2 = PIL.ImageGrab.grab().load()[1211, 302]
    bad = (255, 119, 76)
    good = (5, 211, 221)
    newround = (37, 43, 89)
    done = 0
    if rgb == good:
        if done == 0:
            pyautogui.click(383, 296)
            pyautogui.click(383, 296)
            pyautogui.click(383, 296)
            pyautogui.write('.5')
            pyautogui.typewrite(["enter"])
            pyautogui.click(511, 448)
            done = 1
    if rgb == bad:
        if done == 0:
            pyautogui.click(595, 285)
            pyautogui.click(511, 448)
            done = 1
    if rgb2 == newround:
        done = 0

如何运行ai <j loop in python, and not repeat (j,i) if (i,j) has already been done?< div><div id="text_translate"><p> 我正在尝试实现一个“i 不等于 j”( i&lt;j )循环,它会跳过i = j的情况,但我还想提出一个额外的要求,即循环不重复(j,i) ,如果(i,j)已经完成(因为,由于对称性,这两种情况给出了相同的解决方案)。</p><h3> 第一次尝试</h3><p>在接下来的代码中,我通过迭代以下列表来创建i&lt;j循环,其中第二个列表只是前滚 1 的第一个列表:</p><pre> mylist = ['a', 'b', 'c'] np.roll(mylist,2).tolist() = ['b', 'c', 'a']</pre><p> 下面代码生成的序列结果不是我想要的:</p><pre> import numpy as np mylist = ['a', 'b', 'c'] for i in mylist: for j in np.roll(mylist,2).tolist(): print(i,j)</pre><p> 因为它返回一个重复的aa并重复排列ab和ba :</p><pre> aba c aabbb c ba c b c c c a</pre><p> 所需的序列应该是mylist中元素的成对组合,因为对于N=3元素,应该只有N*(N-1)/2 = 3对循环遍历:</p><pre> aba c b c</pre></div></j>

[英]How to run a i<j loop in Python, and not repeat (j,i) if (i,j) has already been done?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何运行ai <j loop in python, and not repeat (j,i) if (i,j) has already been done?< div><div id="text_translate"><p> 我正在尝试实现一个“i 不等于 j”( i&lt;j )循环,它会跳过i = j的情况,但我还想提出一个额外的要求,即循环不重复(j,i) ,如果(i,j)已经完成(因为,由于对称性,这两种情况给出了相同的解决方案)。</p><h3> 第一次尝试</h3><p>在接下来的代码中,我通过迭代以下列表来创建i&lt;j循环,其中第二个列表只是前滚 1 的第一个列表:</p><pre> mylist = ['a', 'b', 'c'] np.roll(mylist,2).tolist() = ['b', 'c', 'a']</pre><p> 下面代码生成的序列结果不是我想要的:</p><pre> import numpy as np mylist = ['a', 'b', 'c'] for i in mylist: for j in np.roll(mylist,2).tolist(): print(i,j)</pre><p> 因为它返回一个重复的aa并重复排列ab和ba :</p><pre> aba c aabbb c ba c b c c c a</pre><p> 所需的序列应该是mylist中元素的成对组合,因为对于N=3元素,应该只有N*(N-1)/2 = 3对循环遍历:</p><pre> aba c b c</pre></div></j> python而未完成循环问题 为什么我的“ for”循环执行两次? 如何创建一个以“ done” python 3.4结尾的循环 python中for循环的无限循环可以完成吗? 显示 python 中 for 循环迭代完成的百分比 如果提交已经完成,你如何推送 pycharm? 如何使用循环来检查 Python 中的文件中是否已存在输入并附加它是否是新的? Python:是否必须使用else语句(除非由代码强制执行)? 运行时错误:此事件循环已在 python 中运行
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM