2017-09-29 5 views
0

저는 학교를 위해 파이썬 초보자입니다. 나는 약간의 상처를 입었습니다. 내 선생님은 내가 억양으로 문장을 되 돌리는 함수를 쓰길 원한다. "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 

시험은 통과,하지만 난 정말 doctest가 유니 코드 진수 문자를 표시하지 않고 해당 문자를 읽으려면 여기

그리고

는 doctest가이 문제입니다.

어떻게 해결할 수 있습니까?

추 신 : 내 선생님은 IDE Thonny를 사용하므로 자연스럽게 그를 따라 갔고, 그가 나를 비난하지 않을 것임을 알고 있습니다. (내 동료는 더 이상 검색하지 않고 'é'를 'e' ').

+0

어디에서 실행합니까? 콘솔에서 Pycharm의 Python2/3을 시도했는데 모든 문자가 유니 코드 코드가 아닌 올바르게 표시됩니다. – AndMar

+0

테스트 나 doctest 러너의 동작에는 아무런 문제가 없습니다. 이 글리프를 올바르게 렌더링하는 터미널에서 실행하면됩니다. "IDE Thonny"에 대해 들어 본 적이 없지만 그게 잘못이라고 생각합니다. – wim

+0

@ AndMar 교사가 사용하는 IDE에서 실행 : Thonny, 콘솔에서 작동하는 것으로 보이지만 더 이상 시도하지 않았습니다. 나는 오늘 내가하려고 생각할 것이다, 내가 시간이 있으면. (Sry, 나는 아래 "답"에서 두 분 모두에게 회신합니다. 실제로 내 문제에 대해 더 많이 말하더라도 ^^) – Sidimoth

답변

0

사실, Thonny는 문제의 일부입니다. Thonny에서 악센트가있는 문장을 인쇄하려고하면 doctest가 시도하고 테스트를 통과하더라도 여전히 오류는 인쇄하지만 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. 

필자는 파이썬에서 인쇄물을 잘못 사용하고 있다는 느낌이 들었습니다. 인터넷에서 검색 한 결과 "print ("% s ", name)와 같은 변수를 인쇄하는 것과 같은 해결책을 발견했습니다. 인쇄물에서,하지만 시도했을 때 "% s"대신에 문자열로 바꿉니다. 나는 3.x 대신 Python 2.x에 관한 문서를 찾은 것 같다.

내 문제에 대해 더 많은 정보를 제공했거나 해결 방법이있는 경우 doctest가이 작업을 수행하는 이유를 알게되어 기쁩니다. 어쨌든, 제가 말했듯이, 선생님은 이것을 오류로 간주하지 않을 것입니다. 그래서 제가 마감일을 가지고 해결해야하는 중요한 문제는 아니며, 제가 집중해야 할 문제입니다.

+0

FYI 이것은 https://bitbucket.org/plas/thonny에서 버그로 추적 중입니다./issues/352/problem-with-non-ascii-chars-doctest – bugmenot123