質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

373閲覧

pythonでのシーザー暗号化の際、空白のみが出てしまうエラー

litoszk

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/02 10:03

### pythonでシーザー暗号の出力を行いたい

'This is my secret message.'をシーザー暗号化したいと考えているのですが、
実行すると、空白のみが出力されてしまいます。
そのように修正すればよいか教えてくださると助かります。

macOSを利用しています。

python

1#シーザー暗号 2 3import pyperclip 4 5#暗号化 復号する文字列 6message = 'This is my secret message.' 7 8#暗号化 復号の鍵 9key = 13 10 11#プログラムが暗号化するか複合するか 12mode = 'encrypt' # 'encrypt'あるいは'decrypt'のどちらかを指定する 13 14#暗号化できるシンボルの全候補 15SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.' 16 17#メッセージの暗号化復号の結果を格納する 18translated = '' 19 20for symbol in message: 21 #注意:文字列SYMBOLSに含まれるシンボルのみを暗号化複合する 22 if symbol in SYMBOLS: 23 symbolIndex = SYMBOLS.find(symbol) 24 25 #暗号化復号を実行する 26 if mode == 'encrypt' 27 translatedIndex = symbolIndex + key 28 elif mode == 'decrypt': 29 translatedIndex = symbolIndex - key 30 31 #必要に応じてラップアラウンドを処理する 32 if translatedIndex >= len(SYMBOLS): 33 translatedIndex = translatedIndex - len(SYMBOLS) 34 elif translatedIndex < 0: 35 translatedIndex = translatedIndex + len(SYMBOLS) 36 37 translated = translated + SYMBOLS[translatedIndex] 38 else: 39 #暗号化復号化せずにシンボルを追加する 40 translated = translated + symbol 41 42#変換後の文字列を出力する 43print(translated) 44print(pyperclip.paste()) 45

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

for文内の以下の部分のインデントを1つ減らす必要があります

python

1 #必要に応じてラップアラウンドを処理する 2 if translatedIndex >= len(SYMBOLS): 3 translatedIndex = translatedIndex - len(SYMBOLS) 4 elif translatedIndex < 0: 5 translatedIndex = translatedIndex + len(SYMBOLS) 6 7 translated = translated + SYMBOLS[translatedIndex] 8 else: 9 #暗号化復号化せずにシンボルを追加する 10 translated = translated + symbol

投稿2022/07/02 10:11

編集2022/07/02 10:41
TakaiY

総合スコア12743

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

litoszk

2022/07/02 10:28

ごめんなさい。もう少し具体的に箇所を教えて下さいますか? 初心者でして…申し訳ございません。
TakaiY

2022/07/02 10:40 編集

コメントが逆でした!! ごめんなさい。 インデントが多い部分を全て示してみました。 どこかにあるものをコピーしただけなのかもしれませんが、処理の内容を把握して書いていればすぐにわかると思いますよ。
TakaiY

2022/07/02 10:39

ちなみに、他にもバグが1つあってエラーになりますが、コピペミスだと思っています。
litoszk

2022/07/02 10:56

もう一度プログラムの工程を見直し、処理の内容を把握し直してみました。 指摘していただいた部分に加えて、更に何箇所かエラーのもとになるような部分を発見し、 すべて直したところ、無事出力できました! やはり根本理解こそが解決に直結しますね!! 初心者に対して、ご丁寧な対応ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問