def do_timelapse(self, cmd):
self.final_fps = input("What will your final edit be at(FPS)?\n")
self.frame_interval = input("What is your Camera's Frame interval(Sec)")
self.original_frame_fps = 1/self.frame_interval
self.small_original = self.original_frame_fps/100
self.percentage = self.final_fps/self.small_original
print self.percentage
如何解决此错误:
self.percentage = self.final_fps/self.small_original
ZeroDivisionError: integer division or modulo by zero ?
答案 0 :(得分:3)
self.frame_interval = input("What is your Camera's Frame interval(Sec)")
它返回一个整数,意味着你正在使用python 2.所以下一行
self.original_frame_fps = 1/self.frame_interval
如果self.frame_interval
> 可能会发出0 1
self.small_original = self.original_frame_fps/100
所以self.small_original
为零
self.percentage = self.final_fps/self.small_original
所以它崩溃了。
修复:使用浮动:
self.original_frame_fps = 1.0/self.frame_interval
和
self.small_original = self.original_frame_fps/100.0
(当然检查self.frame_interval
不是0
)
替代方案:
使用python 3,只需要一个小修复(并且仍然检查为零):
self.final_fps = int(输入(“你的最终编辑是什么(FPS)?\ n”)) self.frame_interval = int(输入(“你的相机的帧间隔是多少(秒)”))
因为input
现在返回字符串(例如raw_input
在python 3中返回)
在python 2中使用python 3 division:在文件的开头添加:
from __future__ import division
答案 1 :(得分:1)
我最好的猜测是你使用的是Python 2.7,它在两个int
的除法上返回一个整数值。例如:
>>> 5 / 100
0
这就是self.small_original
的值被设置为0的原因。为了解决这个问题,你需要将float
的任何分子或分母输入为:{/ p} >
>>> float(5) / 100
0.05 # returns float value
因此,您需要使用以下代码更新代码中的行:
self.original_frame_fps = 1.0/self.frame_interval
# float here ^
和
self.small_original = self.original_frame_fps/100.0
# float value ^