2016-10-29 3 views
-2

저는 파이썬에서 입력 문자열 ex : HELLO 및 출력 : LIPPS를 변경해야하는 암호화 프로그램을 작성하고 있습니다. 한 단어를 더 입력 할 때 문제가 있습니다. 여기 프로그램 암호화 오류

def encr_ypt(s, n): 
    word=ord(s) 
    for i in range(len(s)): 
     if word >= 90 and word <= 97: 
      hsl = chr(63+n) 
     if word >= 122: 
      hsl = chr(95+n) 
     else: 
      hsl = chr(word+n) 
    return hsl 

st=raw_input('input string : ') 
print encr_ypt(st, 4) 

는 오류 메시지

input string : HELLO 
Traceback (most recent call last): 
    File "encrypt.py", line 13, in <module> 
    print encr_ypt(st, 4) 
    File "encrypt.py", line 2, in encr_ypt 
    word=ord(s) 
TypeError: ord() expected a character, but string of length 5 found 

답변

0

ord(i) fucntion는 단일 문자를 받아 다음 문자를 결과의 ASCII 값을 반환합니다. 코드에서 문자열의 ASCII 값을 가져 오려고합니다. 그러면 오류가 반환됩니다.

또한 hsl 변수를 사용하여 암호화 된 문자열을 저장하기 때문에 결과 문자열을 문자열에 추가하는 += 연산자를 사용해야합니다.

다음

는 수정 된 코드

def encr_ypt(s, n): 
    hsl = '' 
    for word in s: 
     word = ord(word) 
     if word >= 90 and word <= 97: 
      hsl += chr(63+n) 
     if word >= 122: 
      hsl += chr(95+n) 
     else: 
      hsl += chr(word+n) 
    return hsl 

st=raw_input('input string : ') 
print encr_ypt(st, 4) 
+0

무엇이 가장 좋은 방법 내가 'U'V'W'Z'을 쓰고 출력은 문자이다?/^ %, 출력이 'A'로 되돌아 가고 싶습니다. –