Python while 循环,打印数组中的一项,而不是连续打印两次
Python while loop, print one item from array without it being printed twice in a row
我希望 pyautogui 在一个月中输入从 1 到 31 的天数。在每个数字下方我希望它从数组中输入城市名称。问题是当循环结束时,在接下来的 运行 中它有机会打印我不想要的同一个城市。它可以而且应该再次打印它,而不是连续打印两次。
我尝试了几个可以Google但none有效的选项。这是我的代码。如果您有关于如何修复它或全新代码的建议,请告诉我。
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.莫斯科 - 正确
您可以将之前的城市存储为变量。然后,有一个 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')
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
我希望 pyautogui 在一个月中输入从 1 到 31 的天数。在每个数字下方我希望它从数组中输入城市名称。问题是当循环结束时,在接下来的 运行 中它有机会打印我不想要的同一个城市。它可以而且应该再次打印它,而不是连续打印两次。
我尝试了几个可以Google但none有效的选项。这是我的代码。如果您有关于如何修复它或全新代码的建议,请告诉我。
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.莫斯科 - 正确
您可以将之前的城市存储为变量。然后,有一个 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')
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