【问题标题】:NoneType in MU5 on BBC MicrobitNoneType in MU5 on BBC Microbit
【发布时间】:2016-11-16 17:49:26
【问题描述】:

我有一些代码用于 Microbit 上的简单转速计数器。返回变量 rev_per_second 时,有时它是 NoneType(原因未知)。我试图在函数中捕获它,但它似乎不起作用。请问我哪里错了。

# part of the function revs()  

     if end_time < running_time():   
         try:
             rev_per_second = rev_per_second
         except TypeError:
             rev_per_second = 1    
         return rev_per_second  # make this value available to the main program

# main part of the program            
while True:
    rev_per_min = revs() # sometimes this is "None" Why??
    display.scroll(str(rev_per_min))

【问题讨论】:

  • 这里没有足够的上下文可以确定,但很可能是某些东西正在初始化或将revs_per_second 重新设置为“无”。
  • rev_per_second 在 while 语句之前的函数顶部设置为 1,那么可以将其设置为 None 吗?
  • 将您的代码缩减为可重现的最小示例,或链接到 github 上的完整代码。我们猜不出答案。
  • 抱歉,我不得不拒绝您对我的答案的编辑 - 您应该对我的答案发表评论,或者对其进行投票(假设,正如我所解释的,它有帮助)。您也可以自己回答问题,或编辑问题以使其更清楚。抱歉,如果看起来有点复杂,我们的想法是生成一个可搜索的有用问答资源。此外,作为参考,如果您希望其他用户看到您的评论,您可能需要 @ 提及他们。

标签: bbc-microbit


【解决方案1】:

解释几乎可以肯定,通过函数的路径不以return语句结束,因此Python默认返回None。

检查 revs() 函数的所有路径是否以 return 语句结尾,否则如果没有 return 语句,Python 将返回 None

【讨论】:

  • 找到了难以捉摸的答案。这是函数返回时的缩进错误。
  • 看来我惹恼了某人 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2022-09-22
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
相关资源
最近更新 更多