これは質問と定義関数のセットアップです:
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 変数をどうすればよいかわかりません。助けてください!ありがとうございました!