🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

690閲覧

Python での ROT13の実装について

taro-__________

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2021/03/03 04:53

編集2021/03/03 04:54

前提・実現したいこと

python3.x で rot13 の実装をしたい

前に3文字アルファベットをずらすプログラムを作成しました.
ですが、なぜか1文字新しい文字(F)が追加されました。

解決の手がかりすら掴めず困っています。
助けて下さい

発生している問題

# × ソースコードの実行結果(Fが入っている) cpaw{CFaesar_cipher_is_classical_cipher} # 〇 (出てきてほしい出力) cpaw{Caesar_cipher_is_classical_cipher}

実行したソースコード

python3.6.9

1def rot13(crypt,shift): 2 plain = '' 3 for c in crypt: 4 if 'A' <= c and c <= 'Z': 5 plain += chr((ord(c) - ord('A') + shift) % 26 + ord('A')) 6 if 'a' <= c and c <= 'z': 7 plain += chr((ord(c) - ord('a') + shift) % 26 + ord('a')) 8 else : 9 plain += c 10 return plain 11 12s = 'fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}' 13print(rot13(s,-3))

補足情報(FW/ツールのバージョンなど)

Python:3.6.9

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

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

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

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

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

1T2R3M4

2021/03/03 05:16

if 大文字 if 小文字 else だから大文字Fを2回処理してるとかないですか。
taro-__________

2021/03/03 05:24

ありがとうございます。 解決しました。
guest

回答1

0

自己解決

python

1if 'A' <= c and c <= 'Z': 2 plain += chr((ord(c) - ord('A') + shift) % 26 + ord('A')) 3elif 'a' <= c and c <= 'z': 4 plain += chr((ord(c) - ord('a') + shift) % 26 + ord('a')) 5else : 6 plain += c

に変更することで解決しました。

投稿2021/03/03 05:27

taro-__________

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問