Python while循环,从数组中打印一个项目,而不在中打印两次

2024-09-28 22:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让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。莫斯科-正确


Tags: 名称city键入选项数字random数组机会
3条回答

更改代码如下:

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 

我不太明白这个问题。也许解决办法就是记住上一个印刷城市,然后选择一个不同的?你知道吗

import pyautogui, random

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

您可以将前一个城市存储为变量。然后,有一个while循环,在这里你随机选择城市,而选择的城市等于之前选择的城市。你知道吗

import pyautogui, random

dayDate = 1
prevCity = ''
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)
    while prevCity == city:
        city = random.choice(cities)
    prevCity = city
    print(city)
    pyautogui.typewrite(str(city))
    dayDate += 1

相关问题 更多 >