gpt4 book ai didi

python lambda if/else 条件失败 : 'int' and 'function' conflicts

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:48 24 4
gpt4 key购买 nike

我正在尝试使用内联的 lambda 函数来执行一些 if/else 条件,其中我得到 "unsupported operand type(s) for +: 'int' and 'function'" 错误。在这里,我试图将 set_duration 设置为 1.5,除非它的第一个和最后一个数组迭代。你能看看并提供任何提示吗?期待。

for idx, string in enumerate(lines):


duration = 10
clips = []

clips.append(ImageClip(os.path.join(folder,"gradient.png"))
.set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
)

clips.append(ImageClip(os.path.join(folder,"image-{0}.png"))
.resize(width=800)
.set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
.margin(right=60, opacity=0)
.set_pos(("right","center"))
)

clips.append(ImageClip(os.path.join(folder, "big-append.png"))
.resize(width=900)
.margin(left=60,opacity=0)
.set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
.set_pos(("left", "center"))
)



// rest of the code...

完整追溯

Traceback (most recent call last):
File "C:\vhosts\phpsols\pymovie\FORMAT-4\three.py", line 90, in <module>
.set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
File "<decorator-gen-29>", line 2, in set_duration
File "C:\anaconda32\lib\site-packages\moviepy-0.2.2.11-py2.7.egg\moviepy\decorators.py", line 29, in apply_to_mask
newclip = f(clip, *a, **k)
File "<decorator-gen-28>", line 2, in set_duration
File "C:\anaconda32\lib\site-packages\moviepy-0.2.2.11-py2.7.egg\moviepy\decorators.py", line 41, in apply_to_audio
newclip = f(clip, *a, **k)
File "<decorator-gen-27>", line 2, in set_duration
File "C:\anaconda32\lib\site-packages\moviepy-0.2.2.11-py2.7.egg\moviepy\decorators.py", line 89, in wrapper
return f(*new_a, **new_kw)
File "<decorator-gen-26>", line 2, in set_duration
File "C:\anaconda32\lib\site-packages\moviepy-0.2.2.11-py2.7.egg\moviepy\decorators.py", line 14, in outplace
f(newclip, *a, **k)
File "C:\anaconda32\lib\site-packages\moviepy-0.2.2.11-py2.7.egg\moviepy\Clip.py", line 288, in set_duration
self.end = None if (t is None) else (self.start + t)
TypeError: unsupported operand type(s) for +: 'int' and 'function'
Process terminated with an exit code of 1

最佳答案

您不需要 lambda。直接设置持续时间即可。每次循环迭代都会重新计算该值。

             .set_duration(3.0 if idx == 0 and lines[-1] else 1.5)

关于python lambda if/else 条件失败 : 'int' and 'function' conflicts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com