Вот мой код, на данный момент он печатает расшифрованные символы Caesar Cypher в отдельных строках. Есть ли способ добавить их в одну строку в виде строки? Более того, есть возможный способ реализовать .isalpha () для учета пробелов, вопросительных знаков и т. Д. В незашифрованном сообщении.

"""Cypher program."""
import string

alphabet = string.ascii_lowercase
message = "thequickbrownfoxjumpsoverthelazydog"
key = 7
for char in message:
    new_char = key + (alphabet.index(char))
    if new_char > 25:
        new_char = new_char % 26
    print(alphabet[new_char])

Я новичок в Python, очень извиняюсь, если это вопрос для новичков.

Большое спасибо всем, кто был достаточно добр, чтобы помочь.

0
Crimson 14 Сен 2020 в 21:44

2 ответа

Лучший ответ

Вы можете добавить алфавит [new_char] в список, а затем использовать объединение, чтобы распечатать его как строку. Пример кода ниже (отредактирован, чтобы символы, не являющиеся буквенно-цифровыми, оставались на месте):

import string

alphabet = string.ascii_lowercase
message = "the quick brow???nxa2 fox jumps over the lazy dog"
key = 7
lst=[]
for char in message:
    if char.isalpha() is True:
        new_char = key + (alphabet.index(char))
        if new_char > 25:
            new_char = new_char % 26
        lst.append(alphabet[new_char])
    else:
        lst.append(char)
print(''.join(i for i in lst))
0
Homer 14 Сен 2020 в 19:27
"""Cypher program."""
import string

alphabet = string.ascii_lowercase
message = "thequick0brownfox jumpsoverthelazydog"

def transform(char,key):
    if char.isalpha():
       new_char = key + (alphabet.index(char))
       if new_char > 25:
           new_char = new_char % 26
       return alphabet[new_char]
    return char

key = 7

# faster string comprehension
decripted = [transform(char,key) for char in message]
  
print(decripted)
# or 

# "".join - puts all elements of an array toghether in a string using a separator
print("".join(decripted))
0
user2099394 14 Сен 2020 в 19:21