用 Python 撰寫下面這段代碼的更簡單、更簡潔的方法是什么?我知道必須有一種更簡單的方法來在 Python 中撰寫多個 Or 陳述句,但無法找出適合我的示例的方法。
def liquid_add_to_cart(liquid):
actions.sleep_for_secs(1.5)
if liquid.__contains__("Water"):
add_water_btn_x, add_water_btn_y = pyautogui.locateCenterOnScreen('pictures/shopping/add_to_cart_btn.png',
confidence=.8)
pyautogui.click(add_water_btn_x, add_water_btn_y)
pyautogui.click(button='left', clicks=water_cap, interval=2.0)
elif liquid.__contains__("Juice"):
add_juice_btn_x, add_juice_btn_y = pyautogui.locateCenterOnScreen('pictures/shopping/add_to_cart_btn.png',
confidence=.8)
pyautogui.click(add_juice_btn_x, add_juice_btn_y)
pyautogui.click(button='left', clicks=juice_cap, interval=2.0)
elif liquid.__contains__("Milk"):
add_milk_btn_x, add_milk_btn_y = pyautogui.locateCenterOnScreen('pictures/shopping/add_to_cart_btn.png',
confidence=.8)
pyautogui.click(add_milk_btn_x, add_milk_btn_y)
pyautogui.click(button='left', clicks=milk_cap, interval=2.0)
uj5u.com熱心網友回復:
我假設您在 if elif 陳述句中使用的中心坐標在執行陳述句后超出范圍。
如果沒有,只需將它們作為函式引數添加到下面的代碼中:
path = 'pictures/shopping/add_to_cart_btn.png'
def liq(liq_cap):
add_liq_btn_x, add_liq_btn_y = pyautogui.locateCenterOnScreen(path, confidence=.8)
pyautogui.click(add_liq_btn_x, add_liq_btn_y)
pyautogui.click(button='left', clicks=liq_cap, interval=2.0)
def liquid_add_to_cart(liquid):
actions.sleep_for_secs(1.5)
if liquid.__contains__("Water"):
liq(water_cap)
elif liquid.__contains__("Juice"):
liq(juice_cap)
elif liquid.__contains__("Milk"):
liq(milk_cap)
uj5u.com熱心網友回復:
大概是這樣的?
liqdict = {
"Water": [add_water_btn_x, add_water_btn_y, water_cap],
"Juice": [add_juice_btn_x, add_juice_btn_y, juice_cap],
"Milk": [add_milk_btn_x, add_milk_btn_y, milk_cap]
}
def liquid_add_to_cart(liquid, liqdict):
actions.sleep_for_secs(1.5)
for key in liqdict.keys:
if liquid.__contains__(key):
btn_x = liqdict[key][0]
btn_y = liqdict[key][1]
cap = liqdict[key][2]
btn_x, btn_y = pyautogui.locateCenterOnScreen(
'pictures/shopping/add_to_cart_btn.png',
confidence=.8)
pyautogui.click(btn_x, btn_y)
pyautogui.click(button='left', clicks=cap, interval=2.0)
break
您還沒有透露這些全域變數是如何定義的,所以這可能無法直接使用;但希望這能讓你朝著正確的方向前進。也許更一般地說,您應該將資料結構排列成字典而不是一長串全域變數。
uj5u.com熱心網友回復:
你需要一個控制結構。在這種情況下,一個元組串列就足夠了。
CONTROL = [('Water', water_cap), ('Juice', juice_cap), ('Milk', milk_cap)]
PNG = 'pictures/shopping/add_to_cart_btn.png'
def liquid_add_to_cart(liquid):
actions.sleep_for_secs(1.5)
for k, v in CONTROL:
if k in liquid:
btn_x, btn_y = pyautogui.locateCenterOnScreen(PNG, confidence=0.8)
pyautogui.click(btn_x, btn_y)
pyautogui.click(button='left', clicks=v, interval=2.0)
# break here if the keyword can only exist once in liquid
假設 water_cap、juice_cap 和 milk_cap(不管它們是什么?)在范圍內。
這意味著功能代碼不需要更改。您需要做的就是在 CONTROL 串列中添加適當的值
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506737.html
標籤:Python python-3.x if 语句
上一篇:當至少一個if陳述句為True時,我如何執行某個功能?
下一篇:將NA保留在if_else中
