Python 函数错误:';str';对象不是迭代器

Python 函数错误:';str';对象不是迭代器,python,function,python-3.x,doctest,Python,Function,Python 3.x,Doctest,我对python中的以下函数有一个问题(swap是我以前创建的一个函数,可以正常工作): 当我运行此函数时,它工作正常,但如果我使用doctest查看是否有错误,它会告诉我: TypeError: 'str' object is not an iterator 我不知道这个错误是从哪里来的。 有人能帮我吗 doctest的完整输出: File "C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace_

我对python中的以下函数有一个问题(swap是我以前创建的一个函数,可以正常工作):

当我运行此函数时,它工作正常,但如果我使用doctest查看是否有错误,它会告诉我:

TypeError: 'str' object is not an iterator
我不知道这个错误是从哪里来的。 有人能帮我吗

doctest的完整输出:

File "C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace_python\homeworks\Week 5\looking_up.py", line 25, in __main__.swap2
Failed example:
    next('FBFFFBFFBF')
Exception raised:
    Traceback (most recent call last):
      File "C:\Users\manuel\Anaconda3\lib\doctest.py", line 1321, in __run
        compileflags, 1), test.globs)
      File "<doctest __main__.swap2[0]>", line 1, in <module>
        next('FBFFFBFFBF')
    TypeError: 'str' object is not an iterator
**********************************************************************
File "C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace_python\homeworks\Week 5\looking_up.py", line 27, in __main__.swap2
Failed example:
    next('BFFBFBFFFBFBBBFBBBBFF')
Exception raised:
    Traceback (most recent call last):
      File "C:\Users\manuel\Anaconda3\lib\doctest.py", line 1321, in __run
        compileflags, 1), test.globs)
      File "<doctest __main__.swap2[1]>", line 1, in <module>
        next('BFFBFBFFFBFBBBFBBBBFF')
    TypeError: 'str' object is not an iterator
**********************************************************************
File "C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace_python\homeworks\Week 5\looking_up.py", line 29, in __main__.swap2
Failed example:
    next('FFBFBFBFBFBFBFBBFBFBFBFBBFBFBBFBF')
Exception raised:
    Traceback (most recent call last):
      File "C:\Users\manuel\Anaconda3\lib\doctest.py", line 1321, in __run
        compileflags, 1), test.globs)
      File "<doctest __main__.swap2[2]>", line 1, in <module>
        next('FFBFBFBFBFBFBFBBFBFBFBFBBFBFBBFBF')
    TypeError: 'str' object is not an iterator
文件“C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace\u python\homeworks\Week 5\looking\u up.py”,第25行,在\uuuuu main\uuuuu.swap2中
失败示例:
下一步('FBFFFBFFBF')
提出的例外情况:
回溯(最近一次呼叫最后一次):
文件“C:\Users\manuel\Anaconda3\lib\doctest.py”,第1321行,正在运行
compileflags,1),test.globs)
文件“”,第1行,在
下一步('FBFFFBFFBF')
TypeError:“str”对象不是迭代器
**********************************************************************
文件“C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace\u python\homeworks\Week 5\looking\u up.py”,第27行,位于\uuuuu main\uuuuu.swap2中
失败示例:
下一步('BFFBFFFBBBBFF')
提出的例外情况:
回溯(最近一次呼叫最后一次):
文件“C:\Users\manuel\Anaconda3\lib\doctest.py”,第1321行,正在运行
compileflags,1),test.globs)
文件“”,第1行,在
下一步('BFFBFFFBBBBFF')
TypeError:“str”对象不是迭代器
**********************************************************************
文件“C:\Users\manuel\Documents\Gent MaStat\programming and algorithms\workspace\u python\homeworks\Week 5\looking\u up.py”,第29行,位于\uuuuuu main\uuuuu.swap2中
失败示例:
下一步('ffbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf')
提出的例外情况:
回溯(最近一次呼叫最后一次):
文件“C:\Users\manuel\Anaconda3\lib\doctest.py”,第1321行,正在运行
compileflags,1),test.globs)
文件“”,第1行,在
下一步('ffbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbf')
TypeError:“str”对象不是迭代器
函数名为
swap2
,但在doctests中,您使用的是
next
,它恰好是一个执行完全不同操作的函数。这就是为什么你会看到这个错误


在这种情况下,查看错误消息非常重要。它清楚地告诉了你所谓的:

File "<doctest __main__.swap2[0]>", line 1, in <module>
  next('FBFFFBFFBF')
文件“”,第1行,在
下一步('FBFFFBFFBF')

因此,如果您不知道应该从何而来,请查看错误消息。Doctest将告诉您它正在执行什么:
swap2[0]
swap2[1]
,等等。告诉您Doctest正在执行的docstring的函数名以及它是哪个测试用例(
0
是第一个,
1
第二个等等)。它甚至会给出出现错误的行号(在doctest案例中),当然还有导致错误的行号。因此,请使用这些信息转到有问题的代码,并找出问题所在。

您将向此函数传递什么参数?编辑您的问题,向我们展示如何运行doctest,包括完整的输出。此函数没有docstring,因此我怀疑错误来自其他地方。您无法调用
next()
在字符串上。你想干什么?可能不是你所期望的。你为什么认为你可以这样称呼它?你的其他代码与此有什么关系?你确定你不是想打电话,例如,
swap(…)
之类的吗?另外,为什么要运行doctest,因为该源中没有文档。
def swap2 (cards):    
    """
    >>> next('FBFFFBFFBF')
    'FFBBBFBBFF'
    >>> next('BFFBFBFFFBFBBBFBBBBFF')
    'FBBFBFBBBFBFFFBFFFFFF'
    >>> next('FFBFBFBFBFBFBFBBFBFBFBFBBFBFBBFBF')
    'FFFBFBFBFBFBFBFFBFBFBFBFFBFBFFBFF'
    """

    # …
File "<doctest __main__.swap2[0]>", line 1, in <module>
  next('FBFFFBFFBF')