Python(Softimage输入框)和函数参数

时间:2014-04-07 10:34:49

标签: python function inputbox

我是编程新手(大约一周)。我在Python中遇到了一个小问题,在搜索中找不到任何有用的东西(这里也是新的)。

如果我不使用softimage的输入框,我在下面制作的脚本正在工作

l1 = ['Taskmaster', 'Red Skull', 'Zemo']
l2 = ['Capt. America', 'Iron Man', 'Thor']

def findguy (where, inputguy):
    a = "not here"
    for i in (range(len(where))):
        if where[i] == inputguy:
            a = "yes here"
    print a

#findguy (l1, 'Taskmaster')

x = Application.XSIInputbox ("Who are you looking for?","find character")
y = Application.XSIInputbox ('Which list?','Search List')


findguy (y, x)

如果我只是使用findguy(直接输入这里的输入)代码可以工作,但如果我尝试通过Softimage中的输入框输入它,它就会一直返回"不在这里"

如果有人能够帮助这周的挣扎自学者,那将非常感激。

谢谢, 勾勾

1 个答案:

答案 0 :(得分:0)

你的方法运行正常。问题在于您从

获得的输入
y = Application.XSIInputbox ('Which list?','Search List')

将是一个字符串。所以y是一个字符串而不是列表。这同样适用于x,但这不会产生问题,因为您的列表只包含字符串。

您的函数调用实际上看起来像这样(示例)

findguy('l1', 'Zemo')

然后在这一行

if where[i] == inputguy:

它会将l1l1的字符与inputguy进行比较。当然,这仍然是假的,所以你得到"不在这里"作为输出。

你想要的是你的函数调用,而不是

findguy(l1, 'Zemo')

这可以通过这样做来实现:

y = Application.XSIInputbox ('Which list?','Search List')
if y == "l1":
    y = l1
elif y == "l2":
    y = l2

这个简单的选择'基于您的输入的列表,并将其传递给findguy。在你的情况下,这将是一个O.K.解决方案,但如果您的代码只是一个示例,而您的实际代码有更多列表,或者将来会有更好的解决方案。建议将你的家伙存放在字典中:

guys = {'l1': ['Taskmaster', 'Red Skull', 'Zemo'], 'l2': ['Capt. America', 'Iron Man', 'Thor']}

然后您可以使用

处理输入
x = Application.XSIInputbox ("Who are you looking for?","find character")
y = Application.XSIInputbox ('Which list?','Search List')

findguy (guys[y], x)

这很有效,因为字典的键是字符串。