Это вопрос настройки функции def:
shuffleString (myString, binKey) - вернуть myShufString.
Напишите функцию, которая перетасовывает строку символов, myString
, используя binKey
.Вот идеяМы формируем новую пустую строку myShufString
, которую мы затем строим путем объединения символов в начале или в конце myString
, в зависимости от того, равен ли binKey[i]
0 или 1, начиная с i = 0 и циклически перебирая binKey
как необходимо.Ваша функция должна иметь форму shuffleString(myString, binKey)
и возвращать myShufString
.
Подсказка: Возможно, вы захотите сформировать список символов из myString
и использовать списокметод pop внутри цикла for длиной 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'
, вытолкните 'f' из конца myList и объедините в 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а не иначе, или это нормально?И не знаю, как работают команды pop и binKey
... Не знаю, как сделать все остальное ...
EDIT: я получил следующее сообщение об ошибке:
Traceback (последний последний вызов):
Файл "", строка 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!Пожалуйста помоги!Спасибо!