簡體   English   中英

Python while循環,打印數組中的一項,而不是連續打印兩次

[英]Python while loop, print one item from array without it being printed twice in a row

我希望 pyautogui 在一個月中輸入從 1 到 31 的天數。在每個數字下面我希望它從數組中輸入城市名稱。 問題是當循環結束時,在下一次運行中它有機會打印我不想要的同一個城市。 它可以而且應該再次打印它,而不是連續打印兩次。

我嘗試了幾種可以通過 Google 搜索的選項,但都沒有奏效。 這是我的代碼。 如果您對如何修復它或全新的代碼有任何建議,請告訴我。

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. 莫斯科 - 正確

把你的代碼改成這樣:

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 

您可以做的是將以前的城市存儲為變量。 然后,有一個 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

不完全確定我理解了這個問題。 也許解決方案只是記住上次印刷的城市並選擇一個不同的城市?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM