2017-04-04 9 views
0

text을 입력 문자열로 사용하고 rule을 입력 정수로 사용하면 ASCII 값 합계를 찾고 새로운 숫자 값을 기준으로 문자열로 변환해야합니다.PYTHON 기본 ascii encyption 함수

내 코드가 올바른 트랙에 나타나지만, 예를 들어 ascii_encrypt("a",1)이 주어진다면 현재 출력은 'b' 일 때 b'b'이됩니다. 나는 encode 함수에 익숙하지 않은데, 나는 그것을 추측하고있다.

def ascii_encrypt(text, rule): 
    text = sum([ord(c) for c in text]) 
    if not text: 
     return "" 
    else: 
     encrypted_text = chr(text + rule) 
     return encrypted_text.encode('utf-8') 

도와주세요! 감사!

+0

왜 결과를 UTF-8로 인코딩하고 있습니까? – user2357112

+0

하나의 테스트 케이스는 글자가 섞여 있기 때문에 이것을 고려할 것입니다. –

+1

이 줄의 사용법을 이해하지 못합니다.'text = sum ([c (텍스트)])'. 1 문자보다 큰 문자열에이 함수를 사용 하시겠습니까? –

답변

2

간단히 .encode('utf-8')을 제거하십시오. 인코딩 할 필요가 없으므로 문제가 발생합니다. 이 파트를 포함하고 원하는 기능을 수행 할 수 없습니다.

def ascii_encrypt(text, rule): 
    text = sum([ord(c) for c in text]) 
    if not text: 
     return "" 
    else: 
     encrypted_text = chr(text + rule) 
     return encrypted_text 

print(ascii_encrypt("a",1)) 
+0

인쇄하고 싶지 않고 값을 인코딩하지 않고 반환하려는 경우 어떻게해야합니까? –

+0

정확히, 인쇄하거나 인코딩 할 필요가 없습니다. 바이트 문자열로 문자열을 보내는 것은 좋은 생각이 아닙니다. 인코딩되지 않은 문자열은 그대로 두십시오. 해결책으로 표시 할 수 있다면 많은 도움이 될 것입니다. – Neil

+0

여기에 위의 코드 (빼기 출력 기능)가 있습니다. UnicodeEncodeError : 'ascii'코덱은 11 진수 문자 '\ u0693'을 인코딩 할 수 없습니다. 서수는 범위에 없습니다 (128)' –