2017-03-11 1 views
1
def code_char(c, key): 
    return chr(ord(c)+int(key)) 

def code_block(word,key): 
    letters = list(word) 
    keys = list(key) 
    for letter in letters: 
     for digit in keys: 
      coded = code_char(letter, digit) 
    return coded 

print(code_block('abcdefgh', '12121212')) 

나는 아스키 테이블 등을 사용하여 코드 블록의 입력을 암호화하기 위해 노력하고8 자로 된 파이썬 문자를 암호화합니다. 무엇이 잘못 되었나요?

가 동작하지 않습니다! 뭐가 잘못 되었 니?

TypeError: ord() expected string of length 1, but int found

그냥 학생이 너무 햄 PLZ

누구를하지 않는 :

는 오류가?

+0

아 : 그 문제를 해결하는 한 가지 방법은 coded에게 목록을 작성하는 것? –

+0

예, 죄송합니다, 잘못 읽었습니다. 지금 응답 중입니다. – L3viathan

답변

0

코드를 인쇄 할 때 오류가 재현되지 않습니다. 고객님의 코드는 j입니다.

"암호화 된"문자를 coded에 할당하고 이전의 "암호화 된"문자를 덮어 쓰는 것이 문제입니다. 나는 것을 얻을,하지만 난 아니, 그것을 분할 목록 기능을 사용하여 시도,

def code_block(word,key): 
    letters = list(word) 
    keys = list(key) 
    coded = [] 
    for letter, digit in zip(letters, keys): 
     coded.append(code_char(letter, digit)) 
    return "".join(coded) 
+0

, 나는 –

+0

아 'bddffhhj'를 기대하고 있었다 그러나, 내가 출력으로 bcbcbcbccdcdcdcddedededeefefefeffgfgfgfgghghghghhihihihiijijijij 와 만난다, 도움을 주셔서 너무 감사드립니다, 오른쪽, 나는 코드의 나머지 부분을 보지 않았다. 이것은 모든 문자에 대해 모든 숫자에 대해 반복했기 때문에 실제로 쌍으로 보려는 경우에 발생했습니다. 그 때문에 편집 된 답변에 표시된대로 'zip'을 사용해야합니다. – L3viathan

+0

정말 고마워요! 오류 메시지를 없애기를 기쁘게 생각합니다. 필자는 zip 함수를 사용한 적이 없지만보기에는 편리합니다. 다시 한번 감사드립니다. –