我是编程新手(大约一周)。我在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中的输入框输入它,它就会一直返回"不在这里"
如果有人能够帮助这周的挣扎自学者,那将非常感激。
谢谢, 勾勾
答案 0 :(得分:0)
你的方法运行正常。问题在于您从
获得的输入y = Application.XSIInputbox ('Which list?','Search List')
将是一个字符串。所以y
是一个字符串而不是列表。这同样适用于x
,但这不会产生问题,因为您的列表只包含字符串。
您的函数调用实际上看起来像这样(示例)
findguy('l1', 'Zemo')
然后在这一行
if where[i] == inputguy:
它会将l1
,l
和1
的字符与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)
这很有效,因为字典的键是字符串。