为什么我的函数抛出“ StopIteration”异常?

疯狂的鼓膜

我有一个使用生成器来计算勾股三元组的函数。但是,当我打电话给next(myfunc()),抛出此错误:

Traceback (most recent call last):
  File "path omitted", line 124, in <module>
    next(x)
StopIteration

在哪里 x = myfunc()

这是我的功能:

import math

def myfunc():
    i = 1
    for z in range(0, i):
        for y in range(0, z):
            for x in range(0, y):
                if (math.pow(x, 2) + math.pow(y, 2)) == math.pow(z, 2):
                    yield (x*y*z)
                    i += 1
霍尔特

问题在于您的函数无法产生任何结果,因为您的范围可能被弄乱了:

  1. z0i - 10)-所以你只有一个循环z = 0
  2. y0z - 1-1)-看到问题了吗?

因此,基本上,您正在调用next“空”生成器,因此会出现StopIteration异常。

还要注意range(0, i),仅在之后执行一次,i = 1因此它只被求值一次,因此i内部循环的递增不会影响外部循环的边界,因此它是无用的语句。

顺便说一句,大多数时候您不必next手动调用,而应该使用for循环:

for a in myfunc(): # The for loop handle the StopIteration exception for you
    print(a)

编辑:你不应该使用math.pow来计算一个整数的平方值,因为它是不准确的(浮点精度),这是比做更慢x * x,所以只需选中x * x + y * y == z * z(或使用Python幂符号**x ** 2 + y ** 2 == z ** 2)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的程序抛出StringIndexOutOfBounds异常?

来自分类常见问题

如何在yield调用函数中防止或捕获StopIteration异常?

来自分类Dev

为什么我无法处理从析构函数外部抛出的异常?

来自分类Dev

为什么UWP函数AddProfileFromObjectAsync()会抛出异常?

来自分类Dev

为什么 JavaScript eval 函数会为 number 属性抛出异常?

来自分类Dev

我如何找到为什么RestSharp PUT抛出异常?

来自分类Dev

为什么Eclipse要求我抛出异常?

来自分类Dev

为什么start()抛出异常?

来自分类Dev

什么是异常,为什么要“抛出”它们?

来自分类Dev

为什么抛出异常而不是让代码抛出异常?

来自分类Dev

为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

来自分类Dev

如果我从构造函数抛出异常,构造函数中的已分配内存会发生什么?

来自分类Dev

为什么我抛出了“System.StackOverflowException”类型的异常。在我自己的 htmlhelper 中?

来自分类Dev

为什么节点mkdirSync()抛出异常?

来自分类Dev

为什么Exception(str())抛出异常?

来自分类Dev

为什么ObjectInputStream readObject()抛出EOF异常

来自分类Dev

为什么在这里抛出异常?

来自分类Dev

为什么 tkinter 不抛出/引发异常?

来自分类Dev

为什么用format()函数抛出异常而不是编译时错误?

来自分类Dev

为什么用format()函数抛出异常而不是编译时错误?

来自分类Dev

为什么我的构造函数中出现StackOverflowError异常

来自分类Dev

为什么我的`main()`不能捕获junit测试中`timer`抛出的异常?

来自分类Dev

(为什么)我不能从生成器中抛出异常吗?

来自分类Dev

当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

来自分类Dev

为什么我的for-each只抛出一个异常?

来自分类Dev

为什么我的VB程序抛出异常,抱怨应该完全打开OleDbDataReader呢?

来自分类Dev

为什么我的`main()`不能捕获junit测试中`timer`中抛出的异常?

来自分类Dev

为什么SIGSEGV的信号处理程序没有捕获我的C ++抛出异常?

来自分类Dev

为什么我看不到从 java 守护进程线程抛出的异常

Related 相关文章

  1. 1

    为什么我的程序抛出StringIndexOutOfBounds异常?

  2. 2

    如何在yield调用函数中防止或捕获StopIteration异常?

  3. 3

    为什么我无法处理从析构函数外部抛出的异常?

  4. 4

    为什么UWP函数AddProfileFromObjectAsync()会抛出异常?

  5. 5

    为什么 JavaScript eval 函数会为 number 属性抛出异常?

  6. 6

    我如何找到为什么RestSharp PUT抛出异常?

  7. 7

    为什么Eclipse要求我抛出异常?

  8. 8

    为什么start()抛出异常?

  9. 9

    什么是异常,为什么要“抛出”它们?

  10. 10

    为什么抛出异常而不是让代码抛出异常?

  11. 11

    为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

  12. 12

    如果我从构造函数抛出异常,构造函数中的已分配内存会发生什么?

  13. 13

    为什么我抛出了“System.StackOverflowException”类型的异常。在我自己的 htmlhelper 中?

  14. 14

    为什么节点mkdirSync()抛出异常?

  15. 15

    为什么Exception(str())抛出异常?

  16. 16

    为什么ObjectInputStream readObject()抛出EOF异常

  17. 17

    为什么在这里抛出异常?

  18. 18

    为什么 tkinter 不抛出/引发异常?

  19. 19

    为什么用format()函数抛出异常而不是编译时错误?

  20. 20

    为什么用format()函数抛出异常而不是编译时错误?

  21. 21

    为什么我的构造函数中出现StackOverflowError异常

  22. 22

    为什么我的`main()`不能捕获junit测试中`timer`抛出的异常?

  23. 23

    (为什么)我不能从生成器中抛出异常吗?

  24. 24

    当我的lua代码抛出错误时,为什么不能捕获luabind :: error异常?

  25. 25

    为什么我的for-each只抛出一个异常?

  26. 26

    为什么我的VB程序抛出异常,抱怨应该完全打开OleDbDataReader呢?

  27. 27

    为什么我的`main()`不能捕获junit测试中`timer`中抛出的异常?

  28. 28

    为什么SIGSEGV的信号处理程序没有捕获我的C ++抛出异常?

  29. 29

    为什么我看不到从 java 守护进程线程抛出的异常

热门标签

归档