シーザーパスワード[Level 1]Python
2006 ワード
問題の説明
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
Reference
この問題について(シーザーパスワード[Level 1]Python), 我々は、より多くの情報をここで見つけました https://velog.io/@skrudfhr02/시저-암호-Level-1-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol