# -*- coding: utf-8 -*-
def fact(n):
'''
Calculate 1*2*...*n
>>> fact(1)
1
>>> fact(10)
3628800
>>> fact(-1)
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\doctest.py", line 1330, in __run
compileflags, 1), test.globs)
File "<doctest __main__.fact[2]>", line 1, in <module>
fact(-1)
File "C:\Users\ZAN\AppData\Local\Temp\learn_python_6q__n9_0_py\test_3.py", line 14, in fact
raise ValueError()
ValueError
'''
if n < 1:
raise ValueError()
if n == 1:
return 1
return n * fact(n - 1)
if __name__ == '__main__':
import doctest
doctest.testmod()
結果輸出結果有錯誤
File "C:\Users\ZAN\AppData\Local\Temp\learn_python_6q__n9_0_py\test_6.py", line 19
'''
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 338-339: truncated \UXXXXXXXX escape
最後發現問題出現再轉義符上,window 讀取文件可以用\,但是在字符串中\是被當作轉義字符來使用。因此只需要對文檔中的路徑進行修改。
File "C:\\Users\\ZAN\\AppData\\Local\\Temp\\learn_python_6q__n9_0_py\\test_3.py", line 14, in fact
問題即可解決。