我正在尝试制作一个自定义命令行来控制机械臂。
因此,我希望能够运行该程序并键入ServeMove(arg1,arg2),并将arg1和arg2转移到函数ServoMove中。

servoPos = [0,1,2,3,4]

def servoMove(servo,angle):
    servoPos[servo] = angle
    print(servoPos[servo])

def commands(cmd):
    if cmd == 'servoMove('+arg1+','+arg2+')':
        servoMove(arg1,arg2)
    else:
        print("[Error] - Unknown Command")

commands(input(""))


显然,下面的代码对此不起作用。

    if cmd == 'servoMove('+arg1+','+arg2+')':
        servoMove(arg1,arg2)


有人知道我该怎么做吗?

最佳答案

您可以使用正则表达式来解析命令。

import re
def commands(cmd):
    m = re.match(r'servoMove\((\d+),(\d+)\)', cmd)
    if m:
        servoMove(int(m.group(1)), int(m.group(2)))
        return
    # Put similar tests for other commands here
    # ...
    print("[Error] - Unknown Command")


这是一种非常粗糙的方法-如果用户未正确输入命令,它将抱怨该命令未知。如果您想要更强大的功能,则需要学习如何编写真实的解析器。或者使用更好的用户界面(例如Tkinter)来实现用户可以填写的表单。

关于python - 如何将用户输入转换为函数参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47934626/

10-11 19:19