【问题标题】:This loop isn't working and the code needs improvement do you have any suggestions?这个循环不起作用,代码需要改进你有什么建议吗?
【发布时间】: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


【解决方案1】:

@Connor Winterton,这是一个非常简单的示例,它使用参数来避免重复自己。考虑执行简单计算并打印硬编码消息的 func1()。考虑 func2() 除了消息不同之外几乎相同。通过将参数传递给 func3(),您可以只编写一个函数来执行两者的任务,以减少代码和混乱,并让您能够传递您将来可能需要的任何其他消息:

def func1():
    a = 1+2
    print(a,'hello')

def func2():
    a = 1+2
    print(a,'goodbye')

def func3(my_msg):
    a = 1+2
    print(a,my_msg)

# call the hardcoded functions
func1()
func2()

# call the new versatile function
func3('hello')
func3('goodbye')
func3('See you later!')

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2017-11-26
    • 2023-04-05
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多