Напишите функцию, которая перемешивает строку символов, используя binKey - PullRequest
0 голосов
/ 27 февраля 2012

Это вопрос настройки функции 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!Пожалуйста помоги!Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2012

Пара подсказок, так как это домашнее задание:

У вас есть проблемы с переменными i и string.Подумайте о том, что они представляют и откуда они берутся.

Что касается else против elif, подумайте о том, какие значения может принимать binKey[i], и каков результат оператора if для каждого из них.значения будут.

...