三角形暗号を解読する

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、文字を直角三角形に並べる方法である三角形暗号を解読する方法を学びます。隠されたメッセージは各行の最後の文字に含まれており、これらの最後の文字が連結されて送信情報を形成します。

👀 プレビュー

text = " LcadcbsdxEsdxcx"
decryption_text = "LabEx"

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • 三角形暗号を解読する関数を作成する方法
  • 空の入力または None の入力を処理する方法
  • 各行の最後の文字を抽出して連結するロジックを実装する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • 三角形暗号の概念を理解する
  • 三角形暗号を解読する関数を実装する
  • 空の入力や None の入力を含むさまざまな種類の入力を処理する
  • 文字列操作の知識を適用して現実世界の問題を解く

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/variables_data_types -.-> lab-302719{{"三角形暗号を解読する"}} python/strings -.-> lab-302719{{"三角形暗号を解読する"}} python/python_shell -.-> lab-302719{{"三角形暗号を解読する"}} python/conditional_statements -.-> lab-302719{{"三角形暗号を解読する"}} python/while_loops -.-> lab-302719{{"三角形暗号を解読する"}} python/lists -.-> lab-302719{{"三角形暗号を解読する"}} python/function_definition -.-> lab-302719{{"三角形暗号を解読する"}} python/standard_libraries -.-> lab-302719{{"三角形暗号を解読する"}} python/file_operations -.-> lab-302719{{"三角形暗号を解読する"}} end

三角形暗号解読関数をセットアップする

暗号化された文字列:「LcadcbsdxEsdxcx」を直角三角形に入れると、以下のようになります。この例は理解を助けるために提供されています。

L
c a
d c b
s d x E
s d x c x

各行の最後の文字を抽出して連結することで、解読されたメッセージ:「LabEx」が得られます。

このステップでは、triangle.py ファイルに triangle_decryption() 関数を作成する方法を学びます。

  1. コードエディタで triangle.py ファイルを開きます。
  2. 文字列 text を入力として受け取り、解読された文字列を返す triangle_decryption() 関数を定義します。
def triangle_decryption(text: str) -> str:
    ## 解読された文字列を格納するための空の文字列を初期化する
    decryption_text = ""

空の入力または None の入力を処理する

このステップでは、入力 text が空または None の場合をどのように処理するかを学びます。

  1. text が空でないことを確認する if 文を追加します。
if text:
    ## 文字列の先頭と末尾の空白を削除する
    while text.startswith(" "):
        text = text[1:]
    while text.endswith(" "):
        text = text[:-1]

    ## 解読処理を続ける
    #...
else:
    ## 文字列が None の場合、解読された文字列を None に設定する
    decryption_text = None

解読ロジックを実装する

このステップでは、三角形暗号を解読するロジックをどのように実装するかを学びます。

  1. text 文字列の現在のインデックスを追跡するための変数 i を初期化します。
  2. 各行のステップサイズを追跡するための変数 step を初期化します。
  3. while ループを使用して text 文字列全体を反復処理し、各行の最後の文字を decryption_text 文字列に追加します。
i = 0
step = 1
while i < len(text):
    ## 解読された文字列に現在の文字を追加する
    decryption_text += text[i]
    i = i + 1 + step
    step += 1

## テキストの最後の文字でない場合、解読された文字列に最後の文字を追加する
if i - step + 1!= len(text):
    decryption_text += text[-1]

解読された文字列を返す

この最後のステップでは、解読された文字列をどのように返すかを学びます。

  1. 解読処理が終了した後、decryption_text 文字列を返します。
return decryption_text

完全な triangle_decryption() 関数は次のようになります。

def triangle_decryption(text: str) -> str:
    ## 解読された文字列を格納するための空の文字列を初期化する
    decryption_text = ""

    if text:
        ## 文字列の先頭と末尾の空白を削除する
        while text.startswith(" "):
            text = text[1:]
        while text.endswith(" "):
            text = text[:-1]

        i = 0
        step = 1
        while i < len(text):
            ## 解読された文字列に現在の文字を追加する
            decryption_text += text[i]
            i = i + 1 + step
            step += 1

        ## テキストの最後の文字でない場合、解読された文字列に最後の文字を追加する
        if i - step + 1!= len(text):
            decryption_text += text[-1]

    else:
        ## 文字列が None の場合、解読された文字列を None に設定する
        decryption_text = None

    return decryption_text

if __name__ == "__main__":
    print(triangle_decryption("LcadcbsdxEsdxcx"))
    print(triangle_decryption("Lcadb"))
    print(triangle_decryption(" LcadcbsdxEsdxcx"))
    print(triangle_decryption("L ab"))
    print(triangle_decryption(None))

スクリプトをテストする

このステップでは、提供された例を使ってスクリプトをテストする方法を学びます。

  1. triangle.py ファイルを保存します。
  2. 提供された例を使ってスクリプトを実行します。
python3 /home/labex/project/triangle.py

出力は期待される結果と一致する必要があります。

## LcadcbsdxEsdxcx
LabEx
## Lcadb
Lab
## LcadcbsdxEsdxcx
LabEx
## L ab
Lab
## None
None

おめでとうございます!あなたはこのプロジェクトを完了させました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了させました。あなたの技術を向上させるために、LabExでさらに多くの実験を行って練習することができます。