0

これは質問と定義関数のセットアップです:

shuffleString(myString, binKey) - myShufString を返します。

myStringを使用して、文字列 をシャッフルする関数を作成しますbinKey。これがアイデアです。新しい空の文字列 を形成し、が 0 か 1かに応じてmyShufStringの先頭または末尾の文字を連結し、i=0 から必要に応じて循環して構築します。関数は次の形式で、 を返す必要があります。myStringbinKey[i]binKeyshuffleString(myString, binKey)myShufString

ヒント:から文字のリストを作成しmyString、リスト メソッド pop を for ループ内でmyString. myStringこのようにして、 の最後からどの文字が既に使用され、 に追加されたかを追跡する必要がなくなりますmyShufString。手順 5 でこの関数を呼び出して、手順 1 で作成したアルファベットをシャッフルします。

これが例です。と仮定myString = 'abcdefgh'binKey = '101'ます。

それでmyShufString = 'hagfbedc'

理由:

以下のように構築myShufStringします。

0) の文字のリストを作成しmyString、それを と呼びますmyList

myList = ['a','b','c','d','e','f','g','h'].

1) 空の文字列から始めます。myShufString = ''

2) 以降binKey[0] = '1'、 の最後から「h」をポップし、myListに連結しmyShufStringます。

3) 以降binKey[1] = '0'、 の先頭から 'a' をポップし、myListに連結しmyShufStringます。

4) 以降binKey[2] = '1'、 の最後から「g」をポップして にmyList連結しmyShufStringます。

5) の最後に達したbinKeyので、最初に戻ります。

6) 以降binKey[0] = '1'、myList の最後から「f」をポップし、に連結しmyShufStringます。

7) 以降binKey[1] = '0'、 の先頭から 'b' をポップして にmyList連結しmyShufStringます。

私はこれまでにこれを得ました:

def shuffleString(myString, binKey):
    myShufString = ""
    myList = list(myString)
    for string in range(len(myString)):
        if binKey[i] == '0':
            myShufString += myList.pop(0)
        else:
            myShufString += myList.pop(-1)

else の代わりに elif を使用する必要がありますか、それともこれで問題ありませんか? そして、ポップとbinKeyコマンドがどのように機能するのかわからない...残りの方法がわからない...

編集:次のエラーメッセージが表示されました:

トレースバック (最新の呼び出しが最後):

ファイル ""、1 行目、

decryptCS8Cipher("That Sam-I-Am. That Sam-I-Am.  I do not like that Sam-I-Am.","decaf")

ファイル「C:\Users\Elizabeth\Dropbox\CMPSC 8\lab05\lab05_function.py」の 54 行目

復号化CS8Cipher

shufAlph = shuffleString(alphabet, binKey)

ファイル「C:\Users\Elizabeth\Dropbox\CMPSC 8\lab05\lab05_function.py」、18 行目、shuffleString

if binKey[i] == '0':

NameError: グローバル名 'i' が定義されていません

string 変数と i 変数をどうすればよいかわかりません。助けてください!ありがとうございました!

4

1 に答える 1

0

これは宿題の質問なので、いくつかのヒントがあります。

変数iと に問題がありますstring。それらが何を表し、どこから来たのかを考えてください。

else対についてelifは、どの値binKey[i]が取り得るか、そしてそれらの値のそれぞれに対する if ステートメントの結果がどうなるかを考えてください。

于 2012-02-27T06:02:10.217 に答える