Python:如何获取用户命令?

时间:2016-10-14 23:00:00

标签: python user-input

所以,我想要一个简单的小应用程序,用户可以输入命令及其参数,然后Python会将其转换为已定义的函数及其参数。例如:

define foo(x,y)
    bar = x ** y
    print bar

然后,在命令行界面中,如果用户输入foo 2 3,我希望程序识别并打印结果,8。

另外值得注意的是,它应该能够检测整数参数,字符串参数和浮点参数,而无需指定用户hav9ng。如果他们输入foo red 1 2.2,它可以将所有red12.2识别为字符串arg,整数arg和float arg of {责备地{1}}。

研究返回foo命令,但我无法绕过它。

基本上,我试图在语言中开发一种语言。帮助

2 个答案:

答案 0 :(得分:0)

执行功能部分的常用方法是使用查找表:

def double(a):
    return a * 2

def halve(b):
    return b / 2

functions = {
    'double': double,
    'halve': halve,
    ...
}

然后假设您在f中有用户输入函数名称:

if f in functions:
    func_to_call = functions[f]
else:
    print 'unknown function %s' % f

要确定arg是float,int还是string,请使用一系列try / excepts:

try:
    float_value = float(user_input)
except ValueError:
    # nope, it wasn't a float...
    float_value = None

try:
    int_value = int(user_input)
except ValueError:
    # nope, it wasn't an int...
    int_value = None

if float_value is None and int_value is None:
    # must be a string... 

答案 1 :(得分:0)

通过 string 名称访问函数的方法很少。

我推荐这种方式。文件commands.py - 命令模块:

def foo(x,y)
    bar = x ** y
    print bar

def fuu(x,y)
    bar = x << y
    print bar

文件main.py - 从这里开始:

import commands
def nocmd(*a):
    print('where is no such command')

cmd,a,b = input('>>').split()
a,b = float(a),float(b) #in this moment need to check user input
getattr(commands,cmd,nocmd)(a,b)

运行python3 main.py

对象也可以通过locals()[name]globals()[name]

的名称重试