这是问题和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变量! 请帮忙!谢谢!
答案 0 :(得分:0)
一些提示,因为这是一个家庭作业问题:
您的变量i
和string
存在一些问题。想想他们代表什么以及他们来自何处。
至于else
与elif
的关系,请考虑binKey[i]
可以采用的值,以及每个值的if语句的结果。