python - 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
只是我很清楚,终端中的优选输出不应该连续两次有同一个城市。
例如:
伦敦 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
推荐阅读
- git - Git - 如何在特定 git 分支中更改文件
- pcap - 如何在不使用任何软件的情况下从 .pcap 文件中读取数据包
- php - PHP如何将对象转换为数组,例如:(array) $object with custom function
- c# - 在 C# 中计算两个字节数组之间的欧几里得距离的最快方法是什么
- javascript - 为二维数组创建一个带有嵌套循环的追逐盒游戏区域,仅输出 1 行正方形
- r - 使用 cut() 的离散箱
- php - 如何在 Laravel 中实现数组类型路由?
- node.js - userId 是全局唯一标识符吗?
- ios - 如何强制将值分配给常量?
- jquery - 如何从我的 ajax 将数据推送到系列折线图导致 highchart