使用参数运行的字符串

时间:2015-03-24 15:54:32

标签: python

我对Python比较陌生,但我在C ++和Java等语言方面有很多经验。我试图将一个字符串解析为带参数的函数。 这是我到目前为止所得到的:

def DimLights(percent = 1.0):
    print 'Dimming lights to ' + "{:.2f}".format(percent * 100) + ' percent'

def TurnOffLights():
    print 'Turning off lights'

function_mappings = {'DimLights': DimLights,
                     'TurnOffLights': TurnOffLights}

def select_function():
    while True:
        try:
            return function_mappings[raw_input('Please input the function you want to use')]
        except:
            print 'Invalid function, try again.'

while True:
    function = select_function()
    function()

只要我不使用任何参数,它就能工作,但我想不出一个可以使用参数的解决方案。 我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

使用str.split()及其maxsplit参数去除实际命令,使用argparse来解析参数。

答案 1 :(得分:0)

试试这个,不是一个完整的答案。但你可以使用它:

def DimLights(percent = 1.0):
    print 'Dimming lights to ' + "{:.2f}".format(percent * 100) + ' percent'

def TurnOffLights():
    print 'Turning off lights'

function_mappings = {'DimLights': DimLights,
                     'TurnOffLights': TurnOffLights}

def select_function():
    while True:
        try:
            inp = raw_input('Please input the function you want to use:')
            inp = inp.split()
            return function_mappings[inp[0]], inp[1]
        except:
            print 'Invalid function, try again.'
            break

function, arg = select_function()
function(float(arg))
# while True:
#     function = select_function
#     function()

>>>Please input the function you want to use:DimLights 2.0
Dimming lights to 200.00 percent

注意

在函数和参数之间放置空格。此外,还需要参数。否则将出现Index error