2017-09-29 40 views
0

我是一名Python初学者,对于学校而言,我有点不可思议。我的老师要我写一个函数,返回一个带有口音的句子,“print()”用口音向我展示好的字符,但是doctest没有。Python:doctest口音问题

这里是我的代码:

def test() : 
    """ 
    >>> test() 
    à - â - ä - é - è - ê - ë - ï - î - ô - ö - ù - û - ü - ÿ - ç 
    """ 
    print("à - â - ä - é - è - ê - ë - ï - î - ô - ö - ù - û - ü - ÿ - ç") 

import doctest 
doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS, verbose = True) 

正如我所说的,打印不告诉我正确的字符。

这里是文档测试,该问题:

Trying: 
test() 
Expecting: 
\xe0 - \xe2 - \xe4 - \xe9 - \xe8 - \xea - \xeb - \xef - \xee - \xf4 - \xf6 - \xf9 - \xfb - \xfc - \xff - \xe7 
ok 

测试通过,没有失败,但我真正想要的文档测试,以不显示Unicode的十六进制字符阅读这些字符。

我该如何解决这个问题?我的老师使用IDE Thonny,所以我自然而然地跟着他,我知道他不会责怪我(我们,因为我的队友没有进一步搜索,只是将'é'改为'e' “)。

+0

你在哪里运行它?我在Pycharm的Python2/3的控制台上尝试过,并且所有字符都正确显示,而不是Unicode代码。 – AndMar

+0

这里的测试或doctest跑步者的行为没有任何问题。你只需要在终端正确渲染这些字形的情况下运行它。我从来没有听说过“IDE Thonny”,但我认为这是事情的错。 – wim

+0

@ AndMar 我在老师使用的IDE中运行它:Thonny,在控制台中似乎工作,但我没有尝试更多。如果我有时间,我会在今天尝试。 (Sry,我在下面的“答案”中回答了你们两个人,即使我实际上告诉我更多关于我的问题^^) – Sidimoth

回答

0

因此,Thonny的确是问题的一部分。如果我尝试在Thonny中打印带有口音的句子,那么doctest会尝试,即使他通过了测试,他仍然会打印一个错误,但是python仍然会打印出好句子。

所以我测试了很多东西,在我的Ubuntu笔记本电脑上,用Python 3.6,我注意到如果我的print()打印的不止是一个句子,那就出现了问题。

这是测试代码:

def test(): 
    """ 
    >>> test() 
    é é é 
    """ 
    print('é é é') 

他打印:

Trying: 
test() 
Expecting: 
é é é 
ok 
1 items had no tests: 
__main__ 
1 items passed all tests: 
1 tests in __main__.test 
1 tests in 2 items. 
1 passed and 0 failed. 
Test passed. 

如果我在打印添加变量,这是我所:

def test(var): 
""" 
>>> test(5) 
é é é 5 
""" 
print('é é é', var) 

doctest:

Trying: 
test(5) 
Expecting: 
é é é 5 
********************************************************************** 
File "test.py", line 5, in __main__.test 
Failed example: 
test(5) 
Expected: 
é é é 5 
Got: 
('\xc3\xa9 \xc3\xa9 \xc3\xa9', 5) 
1 items had no tests: 
__main__ 
********************************************************************** 
1 items had failures: 
1 of 1 in __main__.test 
1 tests in 2 items. 
0 passed and 1 failed. 
***Test Failed*** 1 failures. 

我有这种感觉,我在Python中滥用打印,我真的不知道为什么,我在互联网上搜索并找到一些解决方案,如“print(”%s“,name)”来打印一个变量在打印中,但是当我尝试它时显​​示“%s”而不是用字符串替换它。我想我找到了关于Python 2.x而不是3.x的文档。因此,如果我向您提供了有关我的问题的更多信息,或者如果您有解决方案,我很乐意了解为什么doctest会这样做。无论如何,正如我所说的,我的老师不会把这算作一个错误,所以这不是一个重要的问题,我必须在截止日期前解决,这只是我关注的一个问题。

+0

仅供参考这个问题在https://bitbucket.org/plas/thonny /问题/ 352 /问题与 - 非ASCII的字符,和文档测试 – bugmenot123