这是问题和 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 和binKey
command 是如何工作的......不知道怎么做剩下的......
编辑:我收到以下错误消息:
回溯(最近一次通话最后):
文件“”,第 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 变量!请帮忙!谢谢!