2016-02-09 3 views
-1
import sys 
import string 
import re 
keywords = [] 
task = "*" 
while task not in "ed": 
    task = raw_input("Encrypt or Decrypt: \nType ‘e’ to Encrypt\nType ‘d’ to Decrypt\n").lower() 
keyword = "*" 
keyphrase = "*" 
while not(re.match('[a-z ]+$',keyword)): 
    keyword = raw_input("enter your first keyword:-").lower() 
while not(re.match('[a-z ]+$',keyphrase)): 
    keyphrase = raw_input("enter a key phrase:-").lower() 

loop = 0 
repeated_keyword = "" 
if len(keyword) < len(keyphrase): 
    while len(repeated_keyword) < len(keyphrase): 
     repeated_keyword = repeated_keyword + keyword[loop] 
     loop += 1 
     if loop >= len(keyword): 
      loop = 0 
elif len(keyword) == len(keyphrase): 
    repeated_keyword = keyword 
    last_charecter_in_keyword = keyword[-1] 
elif len(keyword) > len(keyphrase): 
    repeated_keyword = keyword 
    last_charecter_in_keyword = keyword[-1] 
    while len(repeated_keyword) > len(keyphrase): 
     repeated_keyword = repeated_keyword[:-1]  

repeated_keyword_letter_positions = [] 
keyphrase_letter_positions = [] 
for character in repeated_keyword: 
    position_of_char_in_repeated_keyword = (string.ascii_lowercase + " ").find(character) +1 
    repeated_keyword_letter_positions.append(position_of_char_in_repeated_keyword) 
for character in keyphrase: 
    position_of_char_in_keyphrase = (string.ascii_lowercase + " ").find(character) 
    keyphrase_letter_positions.append(position_of_char_in_keyphrase) 

if task == "e": 
    final_positions_of_letters = [a + b for a, b in zip(keyphrase_letter_positions,repeated_keyword_letter_positions)] 
elif task == "d": 
    final_positions_of_letters = [a - b for a, b in zip(keyphrase_letter_positions,repeated_keyword_letter_positions)] 
new_letter = "" 

final_cipher = [] 
loop = 0 
alphabet = string.ascii_lowercase + " " + string.ascii_lowercase + " " 
while loop < len(final_positions_of_letters): 
    new_letter =alphabet[final_positions_of_letters[loop]] 
    final_cipher = str(final_cipher) + str(new_letter) 
    loop += 1 
print final_cipher 

Это программа шифрования/дешифрования в python 2.7. Однако в конце программы, когда final_cipher список печатается на корпусе пару [] скобки печатаются до содержимого спискаСписок печатает квадратные скобки в python 2.7

ответ

1

У вас есть несколько вариантов здесь:

• Loop через массив , и печатать каждый элемент в той же строке без разделителя.

• Используйте «join» для объединения всех частей массива в одну строку. Вы можете найти дополнительную информацию о заявлении о соединении here.

Лично я думаю, что «присоединиться» - лучший вариант здесь.

0

final_cipher - это список, поэтому да, печать будет распечатана как строка, то есть результат вызова str(final_cipher).

Если вы хотите просто напечатать элементы разделенных запятой, вы можете использовать .join:

print ", ".join(final_cipher) 
1

Я думаю, вы пытаетесь вывести строку. И вы делаете ошибку, устанавливая первоначальное объявление в пустой список.

Для фиксации этого просто использовать:

final_cipher = "" вместо final_cipher = []

Это вы должны получить данные в формате строки.

1

Зрение:

final_cipher = [] 
loop = 0 
alphabet = string.ascii_lowercase + " " + string.ascii_lowercase + " " 
while loop < len(final_positions_of_letters): 
    new_letter =alphabet[final_positions_of_letters[loop]] 
    final_cipher = str(final_cipher) + str(new_letter) 
    loop += 1 
print final_cipher 

Я вижу, что вы работаете с final_cipher как струна, то вы должны инициализировать как:

final_cipher = "" 

И:

final_cipher = str(final_cipher) + str(new_letter) 

Должно быть:

final_cipher = final_cipher + str(new_letter) 

Или лучше:

final_cipher += str(new_letter) 
0

final_cipher создается в виде списка, но затем передумали и сделать конкатенацию вместо этого. На первой итерации цикла str(final_cipher) создает строковое представление пустого списка "[]". Выглядит знакомо? Сохраните список и постройте строку в конце.

final_cipher = [] 
loop = 0 
alphabet = string.ascii_lowercase + " " + string.ascii_lowercase + " " 
while loop < len(final_positions_of_letters): 
    new_letter =alphabet[final_positions_of_letters[loop]] 
    final_cipher.append(str(new_letter)) 
    loop += 1 
final_cipher = ''.join(final_cipher) 
print final_cipher 
Смежные вопросы