编写一个使用binKey对一串字符进行混洗的函数

时间:2012-02-27 04:56:06

标签: python string shuffle bin

这是问题和def功能设置:

  

shuffleString(myString,binKey) - 返回myShufString。

编写一个函数,使用myString对一串字符binKey进行混洗。这是个主意。我们形成一个新的空字符串myShufString,然后我们通过连接myString的开头或结尾的字符来构建,取决于binKey[i]是0还是1,从i = 0开始并在必要时骑自行车binKey。您的函数应采用shuffleString(myString, binKey)格式,并应返回myShufString

提示:您可能希望从myString形成一个字符列表,并在myString的长度内使用for循环中的list方法。这样,您就不必跟踪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'开始,从myList的末尾弹出'h'并连接到myShufString

3)从binKey[1] = '0'开始,从myList的开头弹出'a'并连接到myShufString

4)从binKey[2] = '1'开始,从myList的末尾弹出'g'并连接到myShufString

5)现在我们已经到了binKey的末尾,所以我们回到了开头。

6)从binKey[0] = '1'开始,从myList的末尾弹出'f'并连接到myShufString

7)从binKey[1] = '0'开始,从myList的开头弹出'b'并连接到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而不是其他,或者这样可以吗? 并且不确定pop和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行,

decryptCS8Cipher

shufAlph = shuffleString(alphabet, binKey)

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

if binKey[i] == '0':

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

我不知道该怎么做字符串和i变量! 请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

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

您的变量istring存在一些问题。想想他们代表什么以及他们来自何处。

至于elseelif的关系,请考虑binKey[i]可以采用的值,以及每个值的if语句的结果。