0

这是问题和 def 函数设置:

shuffleString(myString, binKey) - 返回 myShufString。

编写一个函数myString,使用binKey. 这是想法。我们形成一个新的空字符串myShufString,然后我们通过从 的开头或结尾连接字符来构建它myString,具体取决于binKey[i]是 0 还是 1,从 i=0 开始并binKey根据需要循环遍历。你的函数应该是形式shuffleString(myString, binKey)并且应该返回myShufString

提示:您可能希望形成一个字符列表,myString并在 for 循环中使用 list 方法 pop 长度为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)

我应该使用 elif 而不是 else,或者这样可以吗?并且不确定 pop 和binKeycommand 是如何工作的......不知道怎么做剩下的......

编辑:我收到以下错误消息:

回溯(最近一次通话最后):

文件“”,第 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)

shuffleString 中的文件“C:\Users\Elizabeth\Dropbox\CMPSC 8\lab05\lab05_function.py”,第 18 行

if binKey[i] == '0':

NameError:未定义全局名称“i”

我不知道如何处理字符串和 i 变量!请帮忙!谢谢!

4

1 回答 1

0

一些提示,因为这是一个家庭作业问题:

您的变量istring. 想想它们代表什么以及它们来自哪里。

至于elsevs.elif考虑一下binKey[i]可以采用哪些值,以及每个值的 if 语句的结果是什么。

于 2012-02-27T06:02:10.217 回答