【发布时间】:2020-03-16 04:34:52
【问题描述】:
我对 Python 还是很陌生,一般都在编码,目前正在使用 Python 3.5。我想学习自动化那些需要填充文本框才能运行的东西。我在一个视频游戏中试验了下面的代码,作为一种学习方式。
我希望它将列表中的不同项目编号替换为 consolecommand 文本。
感谢您的宝贵时间。
代码:
from pynput.keyboard import Key, Controller
import time
from keyboard import press
keyboard = Controller()
def submit():
press('enter')
def Keyboardpress1():
keyboard.press('/')
keyboard.release('/')
def waitone():
time.sleep(1)
def consolecommand():
keyboard.type("giveitem 172 49000")
def deepsix():
time.sleep(6)
def main():
deepsix()
submit()
waitone()
Keyboardpress1()
waitone()
consolecommand()
waitone()
submit()
deepsix()
if __name__ == '__main__':
main()
如您所见,该代码旨在点击一个数字以激活游戏中的命令控制台,然后键入命令。打字/键盘之间的停顿是因为没有它们代码运行不顺畅。
谢谢,感谢任何帮助。
编辑:我实施了从建议的资源材料中学到的修复。现在我的问题少了很多。谢谢cmets部分的人。
Edit1:我实现了新代码来解决以前的问题。现在让控制台命令更改数字。
【问题讨论】:
-
康纳·温特,欢迎您!我知道您正在学习,所以请对您的代码做两件事:1) 缩进对 Python 至关重要,因此请检查代码并确保进行编辑以反映整个过程中的正确缩进。 2) 请使用用户定义的功能。您有一个重复无数次的代码块,并且至少可以从调用用户定义的函数中受益。您只需要在调用函数时提供不同的参数。始终争取 DRY(不要重复自己)代码。因此,请解决这些项目并重新提交。谢谢。
-
@Scott,感谢您的建议,您帮了大忙。
-
您可以考虑在此处的代码审查堆栈交换中发布此内容:codereview.stackexchange.com
-
@Connor Winter,嘿!不错的工作!我只想补充一点,您应该进一步利用参数化。函数
Keyboardpress0()和Keyboardpress1()几乎相同,可以用一个接受字符串的Keyboardpress()函数替换(在Python 中,即使单个字符也是字符串,与其他一些具有字符类型的语言不同)然后用作调用keyboard.press()和keyboard.release()函数的参数。同样,始终争取 DRY(不要重复自己)代码。当你的代码增长时,它会产生更大的变化...... -
@Scott 我不确定如何使用字符串。我没有其他编码语言的背景,所以我没有参考框架。我会寻找一些资源然后回来。然而,我解决了我的“输入”问题,所以我实际上不需要在代码中的任何地方使用 Keyboard.press('0')。
标签: python python-3.x loops keypress