-1

私には2つの機能があります。1つ目は、指定されたテキストをCaesar暗号化するコーダーを作成します。

def buildCoder(shift):

        lettersU=string.ascii_uppercase
        lettersL=string.ascii_lowercase
        dic={}
        dic2={}

        for i in range(0,len(lettersU and lettersL)):
            dic[lettersU[i]]=lettersU[(i+shift)%len(lettersU)]
            dic2[lettersL[i]]=lettersL[(i+shift)%len(lettersL)]
        dic.update(dic2)
        return dic

2つ目は、特定のテキストにコーダーを適用します。

def applyCoder(text, coder):
        cipherText=''
        for l in text:
            if l in coder:
                l=coder[l]
            cipherText+=l
        return cipherText

問題のパート3では、ラッパーを作成するように求められますが、コーディングに慣れていないため、これら2つの関数を使用するラッパーをコーディングする方法がわかりません。

def applyShift(text, shift):
  """
  Given a text, returns a new text Caesar shifted by the given shift
  offset. Lower case letters should remain lower case, upper case
  letters should remain upper case, and all other punctuation should
  stay as it is.

  text: string to apply the shift to
  shift: amount to shift the text (0 <= int < 26)
  returns: text after being shifted by specified amount.
  """
4

3 に答える 3

2

それぞれの機能は、特定の種類のデータを取得し、異なる種類のデータを提供するものと考えてください。

buildCoderを取り、shiftあなたにcoder

applyCodertextいくつか(コード化される文字列)とaを取りcoder、コード化された文字列を提供します。

ここで、といくつかを取り、コード化された文字列を提供applyShiftする関数を記述します。shifttext

コード化された文字列はどこで入手できますか?からのみapplyCoder。それが必要textであり、codertextそれが私たちに与えられたので私たちは持っていますが、私たちも必要ですcoder。それでは、提供されたものを使用してcoderから取得しましょう。buildCodershift

まとめると、これは次のようになります。

def applyShift(text, shift):
  # Get our coder using buildCoder and shift
  coder = buildCoder(shift)
  # Now get our coded string using coder and text
  coded_text = applyCoder(text, coder)
  # We have our coded text!  Let's return it:
  return coded_text
于 2012-11-01T01:11:05.743 に答える
1

「ラッパー」という用語は忘れてください。他の2つを呼び出し、結果を返す別の関数を作成するだけです。関数のシグネチャ(その名前と引数)と目的の結果の説明はすでに取得されています。したがって、関数本体でこれを行います。

  1. buildCoder()引数を指定して呼び出しshift、結果を変数に格納しますcoder
  2. applyCoder()保存したばかりの引数textを使用して呼び出しcoder、結果をに保存しますcipher_text
  3. 戻るcipher_text

関数が機能することをテストするには、次のようなapplyShiftサンプルデータを使用して実行するテストコードを記述します。

print applyShift('Loremp Ipsum.', 13)
于 2012-11-01T01:13:13.257 に答える
0
def applyShift(text, shift):
    return applyCoder(text, buildCoder(shift))
于 2013-12-02T17:09:57.557 に答える