0

在这个程序中,我使用用户输入来选择用户想要对齐某些文本的对齐方式,目前我正在使用这样的 if 语句......

if alignment == "Left":
    line = left(new_string)
elif alignment == "Right":
     line = right(new_string)
elif alignment == "Centre":
    line = centre(new_string)
elif alignment == "Fully":
    line = fully(new_string)
else:
    print "Error."

但是,有没有一种方法可以让我摆脱这些语句,只使用用户输入来调用左、右、中心、完全功能。

谢谢 JT

4

3 回答 3

4

将字符串映射alignment到带有字典的函数:

alignments = {'Left': left, 'Right': right, 'Centre', centre, 'Fully': fully}

try:
    line = alignments[alignment](new_string)
except KeyError:
    print "Error."

Python 函数是一流的对象,因此您可以将它们作为值存储在字典中。

于 2013-04-03T13:57:59.580 回答
0
func = globals().get(alignment.lower())
if not func:
    func = locals().get(alignment.lower())
func(new_string)

您应该确保func在调用时不是None

于 2013-04-03T13:57:56.513 回答
0

评估它

try:
    eval(alignment.lower())(new_string)
except NameError:
    print 'Error'
于 2013-04-03T14:00:38.837 回答