一旦发现语句为真,如何退出for循环。蟒蛇

问题描述 投票:0回答:1

我正在为挖矿游戏制作脚本。我正在使用 pyautogui 来查找要开采的矿脉的各种屏幕截图。但问题是,如果我的库存在矿石 #1 处填满,我的 if 语句似乎不会运行,并且会被跳过,直到 for 循环完成范围。我希望在每个范围整数之后使用 if 语句检查库存,如果发现已满,则退出函数并开始“dropOff()”。我在下面添加了我的功能

def mine():
    inventoryFull = pyautogui.locateCenterOnScreen(
        "full inv.png", confidence = 0.7)
    print("Is inventory full?")
    if inventoryFull is not None:
        print("Yes, inventory is full. Drop off ore.")
        dropOff()
        
    else:
        print("No inventory is not full. Proceed")
        oreReset()
        
        # i is for the number of ore veins
        for i in range(1, 19):
            # Check inventory again
            if inventoryFull is not None:
                print("Yes, inventory is full. Drop off ore.")
                dropOff()
            
            else:    
                print("Searching for ore #" + str(i))
                oreCoords = pyautogui.locateCenterOnScreen(
                    "ore" + str(i) + ".png", confidence = 0.5)
            
                if oreCoords is not None:
                    # Get the X and Y of the vein
                    veinX = oreCoords[0] + random.randrange(-3, 3)
                    veinY = oreCoords[1] + random.randrange(-3, 3)
                
                    # Move mouse to vein and click
                    pyautogui.moveTo(veinX, veinY)
                    pyautogui.sleep(0.5)
                    pyautogui.rightClick(veinX, veinY)
                
                    # Mine ore vein action
                    mineOreCoords = pyautogui.locateCenterOnScreen(
                        "mine ore.png", confidence = 0.7)
                
                    pyautogui.sleep(0.65)
                
                    if mineOreCoords is not None:
                        mineX = mineOreCoords[0] + random.randrange(-3, 3)
                        mineY = mineOreCoords[1] + random.randrange(-3, 3)

                        print("Mining ore #" + str(i))
                        pyautogui.moveTo(mineX, mineY)
                        pyautogui.sleep(0.65)
                        pyautogui.click(mineX, mineY)
                    
                        pyautogui.sleep(25)
                    
                    else:
                        print("Mine ore action could not be located...")
            
                else:
                    print("No ore vein could be found.")

我尝试过使用break、return、重新排列if/else语句,并在块的挖掘部分完成后添加if语句,“pyautogui.sleep(25)”。

python for-loop if-statement pyautogui
1个回答
0
投票
i=0
while i<19:
    i=i+1
    print(i)
    if somefunction==True:
        i=20
© www.soinside.com 2019 - 2024. All rights reserved.