【问题标题】:Python (Softimage input box) and function argumentsPython(Softimage 输入框)和函数参数
【发布时间】:2014-04-07 10:34:49
【问题描述】:

我是编程新手(大约一周大)。我在 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 中的输入框输入它,它只会不断返回“不在此处”

如果有人能善意地帮助这周大的自学者,将不胜感激。

谢谢, 咕咕

【问题讨论】:

  • 打印 x 和 y 以便您查看正在处理的内容。更容易找出问题所在
  • 谢谢 - 我已经试过了。打印 x 和 y 会准确地返回我的输入。该函数本身似乎忽略了输入的内容。 :(
  • 你能发布一个你正在测试的输入的样本吗?
  • 我不太擅长解释(尤其是作为一个不懂编程术语的自学初学者)——所以我会改为展示它:

标签: python function inputbox


【解决方案1】:

您的方法效果很好。问题在于您从中获得的输入

y = Application.XSIInputbox ('Which list?','Search List')

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

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

findguy('l1', 'Zemo')

然后在这一行

if where[i] == inputguy:

它将比较l1的字符,即l1inputguy。当然,这一直是错误的,所以你得到“不在这里”作为输出。

你想要的是你的函数调用看起来像这样

findguy(l1, 'Zemo')

这可以通过执行以下操作来实现:

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

这只是根据您的输入“挑选”一个列表并将其传递给findguy。在你的情况下,这将是一个好的。解决方案,但如果您的代码只是一个示例,并且您的实际代码有更多列表,或者将来会有,您应该寻找更好的解决方案。一个建议是将你的人存储在字典中:

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)

这是可行的,因为字典的键是字符串。

【讨论】:

  • 非常感谢!我明白了,为什么我一直在兜圈子是有道理的。会记下这一点。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
相关资源
最近更新 更多