【问题标题】:Add new number from a list every time a function is repeated (Python 3)每次重复函数时从列表中添加新数字(Python 3)
【发布时间】:2021-04-12 13:37:08
【问题描述】:

我有这个清单:

list_vin = ['D03960','D03987','D04014']

这个使用列表的函数:

def lol():
    pyautogui.click(699,60)
    pyautogui.hotkey('command','f')
    pyautogui.typewrite(list_vin[2])
    pyautogui.press('enter')
    time.sleep(0.5)
    pyautogui.hotkey('command','p')
    pyautogui.press('enter')
lol()

还有这个函数来重复列表:

def refresh():
    schedule.every(int(1)).seconds.do(lol)
    while 1:
        schedule.run_pending()
        time.sleep(1)
refresh()

我怎样才能使每次函数重复时从列表中使用一个新项目?例如。第一次函数运行它使用这个D03960,第二次函数运行它在函数pyautogui.typewrite(list_vin[2])的这一行中使用这个D03987@

我是初学者,如果我的问题措辞不正确,请不要生气,希望你能理解。顺便说一句,您可以随意更改代码。

提前致谢。

【问题讨论】:

    标签: python-3.x list loops pyautogui


    【解决方案1】:

    使用 .pop()

    pop() 方法返回给定索引处存在的项目。此项也会从列表中删除。

    def lol():
        pyautogui.click(699,60)
        pyautogui.hotkey('command','f')
        pyautogui.typewrite(list_vin[2])
        pyautogui.press('enter')
        time.sleep(0.5)
        pyautogui.hotkey('command','p')
        pyautogui.press('enter')
        list_vin.pop()
    lol()
    

    所以每次你运行 lol() 你的迭代 list_vin 都会变得“更短”

    【讨论】:

    • 谢谢你,伙计,完全有效,但正如@Josh 所说,我需要以某种方式考虑列表结尾。
    【解决方案2】:

    使用计数器

    @chickenshifu 的回复很棒,但请记住,如果您使用 pop,list_vin 最终将为空。请务必在您的代码中考虑到这一点。

    如果您不希望删除列表中的项目,您可以执行以下操作:

    iteration = 0 
    
    def lol(index):
        pyautogui.click(699,60)
        pyautogui.hotkey('command','f')
        pyautogui.typewrite(list_vin[index])
        pyautogui.press('enter')
        time.sleep(0.5)
        pyautogui.hotkey('command','p')
        pyautogui.press('enter')
        iteration += 1 
    lol(iteration)
    

    我的方法跟踪您正在使用的 list_vin 中的哪个项目,并通过索引抓取该项目。 'iteration' 将在 'lol' 函数结束时增加 1。

    iteration 等于len(list_vin) 时,您知道您将到达列表的末尾。

    如果您有任何问题或我需要澄清任何事情,请告诉我!

    【讨论】:

    • 谢谢,伙计。不幸的是,我遇到了一个问题:TypeError:lol()缺少1个必需的位置参数:'index'。你知道为什么会这样吗?
    • 对不起!每次运行 lol 时,都需要像这样运行它 lol(iteration)。我不确定您的程序结构如何,但我建议您在 global 级别使用iteration=0。如果您只是通过刷新运行lol,请执行以下操作: def refresh(): schedule.every(int(1)).seconds.do(lol(iteration)) while 1: schedule. run_pending() time.sleep(1) refresh() 注意lol 中的refresh() 现在是lol(iteration)。 LMK 如果出现任何其他错误或问题。
    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    相关资源
    最近更新 更多