Роб: Привет, я Роб, и давайте расшифровать программа Vigenere. Итак, сначала, что нам нужно сделать, это Убедитесь, что пользователь ввел то, что мы ожидали им в командной строке. Так что если агдс не 2, что означает либо пользователь не вошел в строку, которую мы хотите использовать в качестве нашего шифрования строка, или они вошел слишком много вещей. И мы не знаем, что делать с этими другими вещами. Так мы говорим им, что они должны вступили. И мы вернемся. Теперь, если предположить, что агдс было 2, мы можем продолжить остальной части программы. Мы псевдоним имя ARGV [1] в переменную ключевое слово. Так что мы не должны использовать имя ARGV [1] в остальной части программы. И может быть, мы забыли, что это означает, что и так далее. Ключевое слово является гораздо приятнее имя. И мы будем сразу же захватить длину нашей ключевое слово здесь. Итак, теперь мы хотим проверить, что наш ключевое слово на самом деле действует. Ключевое слово мы используем для шифрования строк должны быть просто в алфавитном порядке символов. Если пользователь вошел без алфавиту символов, мы должны сказать, ключевое слово должен содержать только сквозное Z, а затем вернуться. Так что это для петель итерацию всех Герои нашего ключевого слова, проверяя что если один не алфавитный затем мы должны напечатать это предупреждение. Теперь, когда мы добраться до этой точки, мы знаем, что строка должна быть правильной. Ключевое слово должно быть правильным. И теперь мы должны получить сообщение от пользователь, что они хотят, чтобы мы шифрования с этой ключевой фразы. Таким образом, чтобы получить это сообщение, у нас есть сделать в то время как цикл, который собирается непрерывно получить строку от пользователя пока они не ввести допустимую строку. Продолжая, мы видим здесь эту переменную, внутр nun_letters_seen. Мы увидим, почему мы должны , что в секунду. Но это цикл собирается итерации от я равна 0 весь путь до I равна п, а это значит, что мы итерации по всем возможным символы в наше послание. Потому что мы хотим, чтобы зашифровать все персонажи в нашем сообщении. Так заметить будем делать, если (isalphamessage [я], потому что мы не хотим, чтобы зашифровать Символы, не алфавитный. Если есть символы, пробелы, или номера, мы не хотите зашифровать тех. Теперь, если предположить, что это алфавитный, сначала мы хотели выяснить, что мы на самом деле хотите, чтобы зашифровать сообщение с помощью. Так что я имею в виду, что? Давайте предположим, что ключевая фраза пользователь ввел была азбука. Это то, что мы используем для шифрования. Теперь, наивно, мы считаем, что означает, что мы хотим, чтобы зашифровать первый символ нашего послания на 0, так как средство вращающийся символ 0. Мы хотим, чтобы зашифровать второй символ на 1, третий персонаж на 2, четвертый персонаж на 0, пятый на 1, шестой на 2, и так далее. Но помните, что мы хотим, чтобы пропустить пространства и символы и цифры. Это означает, что если пользователь вошел привет мир как сообщение что они хотят, чтобы зашифровать, то мы хотим, чтобы зашифровать ч на 0 соответствующая а, е на 1, л на 2, л на 0, о на 1. Мы хотим, чтобы пропустить пространство, зашифрованный ш на 2, о на 0, 1, 2, 0. Так заметить, если бы мы не пропустили пространство, то мы бы зашифрованы ш 0 и в конечном итоге с неправильное строка. ОК, это то, что нам нужно переменную num_letters_seen для. Если мы просто собирались для шифрования с использованием этот метод, который не пропускает символы, пробелы и цифры, то мы могли бы просто использовать переменную я как то, что индексировать в нашей фразе с. Мы должны использовать num_letters_seen держать Трек от фактического места в Ключевая фраза, что мы хотим индекса. Так вот, если ключевое слово у нас есть, если num_letter_seen мод keyword_length, так почему мы должны мод по длине ключевого слова? Ну, привет мир был хороший пример. Если ключевое слово было ABC, то мы должны постоянно шифрования на то Ь то с, затем обернуть назад вокруг, а, б, в, а, б, в. Так что мы должны мод по длине ключевого слова для того, чтобы обернуть назад вокруг. Так что, если это прописная буква, то мы хотим, чтобы зашифровать путем Положение этой буквы в алфавите, которые мы получаем, просто вычитания капитала А. И аналогично, для строчных букв, мы может получить ключ, который мы хотим по вычитания строчную а. Таким образом, независимо от того, в письме в фразе был столицей или строчная буква, мы собираемся шифрования на ту же сумму. Теперь, когда у нас есть наш ключ, мы видим здесь, что если сообщение я в верхнем регистре характер, то мы хотим вычислить положение в алфавите, что характер, добавить наш ключ к нему, оберните назад вокруг так, что, если мы пошли мимо г мы вернемся к, B, C, и так далее. Тогда, наконец, добавить обратно по капитальному А. Так мы переходим обратно в [? ASCII?] Диапазон этих символов вместо числовое положение в алфавите из этих символов. И мы делаем то же самое для строчные символы. Кроме мы хотим вычесть нижний регистр и добавить его снова в конец, нижний регистр. Обратите внимание, что num_letter_seen только увеличивается, если сообщение я был алфавитный. Это, как мы пропускаем пробелы, символы, и Цифры в нашей фразе, так как num_letter_seen то, что мы используем индексировать в нашей ключевое слово. Наконец, в конце концов, теперь, когда сообщение я был зашифрован, мы распечатать сообщение я. И это все. Меня зовут Боб. И это Vigenere. [Музыка играет]