Исправление ошибки
Просто добавьте пробелы:
def squares(start, end):
"""
Given the starting and ending numbers,
return a list of the squares of the numbers from start to end.
>>> squares(1, 5)
[1, 4, 9, 16, 25]
>>> squares(2, 4)
[4, 9, 16]
>>> squares(0, 1)
[0, 1]
>>> squares(0, 2)
[0, 1, 4]
"""
return [i**2 for i in range(start, end+1)]
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True, optionflags=doctest.NORMALIZE_WHITESPACE)
Как читать трассировку стека Python
Чтение трассировки стека Python может быть сложным. Во-первых, обратите внимание, что он не генерирует «около 30 других ошибок». Python останавливается при первой же ошибке. В этом случае ошибка:
ValueError: line 5 of the docstring for __main__.squares lacks blank after >>>: '>>>squares(1, 5)'
Он говорит вам добавить пробел между >>>
и командой squares(1, 5)
.
Остальные запутанные строки указывают путь, по которому python пришел к этой ошибке. Давайте посмотрим на первые несколько строк:
Traceback (most recent call last):
File "sq.py", line 20, in <module>
doctest.testmod(verbose=True, optionflags=doctest.NORMALIZE_WHITESPACE)
File "/usr/lib/python2.7/doctest.py", line 1885, in testmod
for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
File "/usr/lib/python2.7/doctest.py", line 900, in find
self._find(tests, obj, name, module, source_lines, globs, {})
Эти строки не являются отдельными ошибками. Они рассказывают, как python достиг строки, выдавшей ошибку. Во-первых, он говорит, что python выполнял строку 20 вашего файла sq.py
, которая вызывала doctest.testmod
. Оттуда он перешел к строке 1885 из doctest.py
, которая вызвала строку 900 из doctest.py
и так далее.
person
John1024
schedule
12.08.2014