シーザーパスワード[Level 1]Python


問題の説明


1つの暗号化方法は、1つの文の各アルファベットを一定の距離で伸ばし、別のアルファベットに変換することです.例えば、「AB」は1で「BC」、3で「DE」を表す.「z」が1に等しいと「a」になります.文字列sと距離nを入力し、sがnの暗号文の関数を生成し、ソリューションを完了します.

せいげんじょうけん


いくら押してもスペースは空いています.
sは、小文字、大文字、スペースのみから構成されます.
sの長さは8000以下です.
nは1以上,25以下の自然数である.

I/O例



テストケースの追加


s(string): "a B z"
n(int): 4
Return: "e F d"
s(string): "AaZz"
n(int): 25
Return: "ZzYy"
s(string): "a b"
n(int): 1
Return: "b c"
s(string): "a b "
n(int): 1
Return: "b c "
s(string): "bC"
n(int): 25
Return: "aB"

コード#コード#

import re

def solution(s, n):
    # chr(ord('A')+1) ==> 'B' ASCII 코드를 사용해서 풀어볼 것이다.
    answer = ''
    for i in list(s):
        #if ord(i) == 32: answer += ' ' # 공백
        blank_list = [x.start() for x in re.finditer(' ', s)]
        
        if (i.isupper()):
            if 65 <= ord(i)+n and ord(i)+n <= 90: # 대문자
                print('대문자 함수 실행')
                answer += chr(ord(i) + n)
            elif 90+25 >= ord(i)+n and ord(i)+n >= 65: # 범위를 넘는다면
                print('대문자 range out 함수 실행', ord(i), ord(i)+n)
                answer += chr(ord(i)+n-90+64)
        else:
            if 97 <= ord(i)+n and ord(i)+n <= 122: # 소문자
                print('소문자 함수 실행')
                answer += chr(ord(i) + n)
            elif 122+25 >= ord(i)+n and ord(i)+n >= 97: # 범위를 넘는다면
                print('소문자 range out 함수 실행', ord(i), ord(i)+n)
                answer += chr(ord(i)+n-122+96)
                
    _answer = list(answer)

    for x in blank_list:
        _answer.insert(x, ' ')
    answer = ''.join(_answer)
            
    return answer