どうすれば空白を保持することができるでしょうか
見るからに怪しい行があるので、それを削除します。
text = text.replace(" ","")
なお、これを消しただけではまだエラーが出ます。
Python
1Traceback (most recent call last):
2 File "<stdin>", line 1, in <module>
3 File "main.py", line 8, in to_encrypt
4 textli[i] = li[li.index(textli[i])+num]
5ValueError: ' ' is not in list
文字が空白であるときは置き換えをスキップすれば良いですね。
ただし
論理バグがあり、例えばz
をまともに置き換えできません。
もうちょっと考えなおした方が良いでしょうね。
書いてみた
個人的な趣味全開です。
Python
1from string import ascii_lowercase as chars
2
3
4def revolve(seq, shift):
5 shift %= len(seq)
6 return seq[shift:] + seq[:shift]
7
8def make_decode(shift):
9 rep_table = str.maketrans(
10 chars, revolve(chars, shift)
11 )
12
13 def decode(text):
14 return text.translate(rep_table)
15
16 return decode
17
18
19decode = make_decode(3)
20print(
21 decode('ab c')
22)
実行結果 Wandbox
コードの書き方について
teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。