我对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()
只要我不使用任何参数,它就能工作,但我想不出一个可以使用参数的解决方案。 我有什么方法可以做到这一点吗?
答案 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