![](/img/trans.png)
[英]Getting a print statement printed twice with different outputs for one value, python
[英]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
只是我很清楚,終端中的優選輸出不應該連續兩次出現在同一個城市。
例如:
倫敦 2. 柏林 3. 柏林 4. 莫斯科 - 錯誤
柏林 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.