【问题标题】:ZeroDivisionError: float division error in pythonZeroDivisionError:python 中的浮点除法错误
【发布时间】:2014-06-20 21:19:30
【问题描述】:

我正在为 xbmc 媒体应用程序编写我的 python 脚本,因此我可以使用百分比字符串更新文本标签。我已经将标签文本设置为“0%”作为开始,但我不知道如何用“1%”、“10%”、“20%”等更新标签文本。

当我尝试这个时:

progressStartTime = datetime.datetime.now()
delta = datetime.datetime.now() - progressStartTime
secondsLeft = int(delta.seconds) / float(percentageComplete) * (100.0 - 
percentageComplete)

if secondsLeft > 30:
  secondsLeft -= secondsLeft % 10
  self.setControlLabel(self.main_loading_time_left, "" % secondsLeft)

我在更新标签中的文本时遇到问题 错误。我得到的错误是: ZeroDivisionError: float division

错误在这一行跳转:

secondsLeft = int(delta.seconds) / float(percentageComplete) * (100.0 
- percentageComplete)

你能帮我如何用百分比字符串更新标签中的文本吗?

编辑:这是更新代码:

percentageComplete = 0

if percentageComplete < 1:
   self.getControl(4202).setLabel("1%")


progressStartTime = datetime.datetime.now()
delta = datetime.datetime.now() - progressStartTime
secondsLeft = int(delta.seconds) * (100.0 - percentageComplete)

if percentageComplete > 1:
   secondsLeft -= secondsLeft % 10
   self.getControl(4202).setLabel(secondsLeft + "%")
   #self.setControlLabel(self.main_loading_time_left, "%" % secondsLeft)

【问题讨论】:

  • 我假设 percentComplete 从 0 开始。
  • 当我使用percentageComplete = 0时它已经设置为0。有什么想法吗?
  • 你除以 0 因为 percentComplete 是 0...
  • 哦,我明白了,你能告诉我即使我不需要除法,我还需要做出什么改变吗?

标签: python python-2.7 xbmc


【解决方案1】:

当您处于 0% 时,您无法确定还剩多少时间。用 if 情况排除该情况。

【讨论】:

  • 你能告诉我当标签文本中的字符串为1%时如何更新标签中的文本吗?
  • 当你不在 0% 时,这件事是正确的。 “我该如何更新”是什么意思?你能告诉我们通话的背景吗?
  • 当我在标签中有文本“1%”时,应该将新文本从 1% 更新为 10%20% 之类的代码。在我的代码中,标签中的文本仍然显示1%。请在我的第一篇文章中查看更新代码。
  • 当我尝试使用self.getControl(4202).setLabel(secondsLeft + "%") 的代码时,我会收到一个错误:TypeError: unsupported operand type(s) for +: 'float' and 'str',知道如何解决这个问题吗?
  • str(secondsLeft) 应该可以解决这个问题。你在循环这个功能吗?因为现在,您的数据只会更新一次。另外,我不确定这会正确更新。你知道什么是结束时间,假设你有开始时间(即:你知道你的媒体持续多久?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
相关资源
最近更新 更多