首页 > 解决方案 > Python while循环,从数组中打印一项而不连续打印两次

问题描述

我希望 pyautogui 从 1 到 31 键入一个月中的天数。在每个数字下面我希望它从数组中键入城市名称。问题是当循环完成时,在下一次运行中它有机会打印我不想要的同一个城市。它可以而且应该再次打印它,而不是连续打印两次。

我尝试了几个我可以通过谷歌搜索的选项,但都没有奏效。这是我的代码。如果您对如何修复它或全新的代码有任何建议,请告诉我。

import pyautogui, random

dayDate = 1
while dayDate < 32:
    pyautogui.click(380, 325)
    pyautogui.typewrite(str(dayDate))
    pyautogui.click(380, 345)
    cities = ['London', 'Paris', 'Berlin', 'Barcelona', 'Moscow']
    city = random.choice(cities)
    print(city)
    pyautogui.typewrite(str(city))
    dayDate += 1

只是我很清楚,终端中的优选输出不应该连续两次有同一个城市。

例如:

  1. 伦敦 2. 柏林 3. 柏林 4. 莫斯科 - 错误

  2. 柏林 2. 伦敦 3. 柏林 4. 莫斯科 - 正确

标签: pythonrandompyautogui

解决方案


将您的代码更改为如下所示:

import pyautogui, random

cities = ('London', 'Paris', 'Berlin', 'Barcelona', 'Moscow')
last_city = city = random.choice(cities)

for day in range(1, 32):
    pyautogui.click(380, 325)
    pyautogui.typewrite(str(day))
    pyautogui.click(380, 345)
    pyautogui.typewrite(city)
    print(day, city)
    while city == last_city:
        city = random.choice(cities)
    last_city = city 

推荐阅读