这是问题和 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 变量!请帮忙!谢谢!