>

ord ()와 chr ()을 사용하여 python 3.7에서 rot13 프로그램을 작성해야합니다.

나는 몇 가지 코드 말하기를 시도했다.     "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"에없는 편지 :     newLetter = 편지 이것은 본질적으로 문자가 아닌 다른 문자 (예 :! 또는 @ 또는 #)가있는 경우 문자를 동일한 것으로 유지한다는 것을 의미합니다. 전체 단어가 왜 작동하지 않고 조기에 멈추는 지에 대한 단서가 없습니다.

def rot_13(string):
    length = len(string)
    for letter in string:
        number = ord(letter)
        newNumber = number + 13
        newLetter = chr(newNumber)
        string = string + newLetter
   return string[length:]
print(rot13('Hello World'))

예 : "Hello World!" "Uryyb Jbeyq!"를 출력해야합니다. 대신 "Uryy | -d | yq"가 표시됩니다 ...

  • 답변 # 1

    이 스크립트는 원하는 것을해야합니다. 기본적으로 글자가 대문자인지 소문자인지 알아야합니다 (표준 ROT13 암호는 26 자의 대문자 알파벳으로 만 작동합니다).

    legal_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    def rot_13(s):
        rv = ''
        for letter in s:
            if letter not in legal_chars:
                rv += letter
                continue
            a = ord('A') if letter.isupper() else ord('a')
            rv += chr(a + (ord(letter) - a + 13) % 26)
        return rv
    print(rot_13('Hello World!'))
    
    

    인쇄 :

    Uryyb Jbeyq!
    
    

관련 자료

  • 이전 app inventor - <연산자는 인수를 승인 할 수 없습니다 - , [* empty-string *], [100]
  • 다음 security - oauth2 흐름을 사용한 이메일 기반 등록이 가능합니까?