Задать вопрос
@TheAmmiR

Как сделать вывод элементов списка/строки в одно слово?

У меня есть код-прототип шифра Цезаря.
def ciph():

    string = str(input("Введите строку, которую надо зашифровать: "))
    key = int(input("Введите ключ шифровки: "))

    for i in string:
        array = ''
        i = ord(i)
        i += key
        i = chr(i)
        array += i
        print(''.join(array))
        
def deciph():
    string = str(input("Введите строку, которую надо дешифровать: "))
    key = int(input("Введите ключ дешифровки: "))

    for i in string:
        array = []
        i = ord(i)
        i -= key
        i = chr(i)
        array.append(i)
        print(array[array])



choose = str(input("""1. Шифровка.
2. Дешифровка.
Выберите нужный вариант: """))

choose = choose.lower()
right_1 = '1', '1.', '1)', 'один', 'one', 'шифр', 'шифровка', 'шифровать'
right_2 = '2', '2.', '2)', 'два', 'two', 'де', 'дешифровка', 'дешифровать'

if (choose in right_1):
    ciph()
elif (choose in right_2):
    deciph()


В функции дешифровки показан старый способ вывода, а в зашифровке - попытка сделать вывод в одно слово.

1. Шифровка
2. Дешифровка
Выберите нужный вариант: >>> 1
Введите строку, которую надо зашифровать: >>> becon
Введите ключ шифровки: >>> 3

Вывод: 
e
h
f
r
q

Во второй функции вывод примерно одинаков.
P.S. Это самый мой большой код после линейного алгоритма игры "Чепуха" с разветвлениями, направленными на проверку пустого значения в переменной. (2кб)

Заранее спасибо за ответ.
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
на примере функции шифрования (с минимальными изменениями, как у Вас):
1. Вынести объявление из цикла;
2. печать так же вынести из цикла;
3. результат не "джойним": у нас и так срока в функции шифрования
def ciph():

    string = str(input("Введите строку, которую надо зашифровать: "))
    key = int(input("Введите ключ шифровки: "))

    array = ''
    for i in string:
        i = ord(i)
        i += key
        i = chr(i)
        array += i
    print(array)

А то у Вас, как уже заметил nukler в комментариях, в каждую итерацию, результат обнуляется. Ну и, конечно, вывод результата - единожды, в конце, а не после каждой буквы.

В функции deciph() - тоже самое с выносом из тела цикла, но тут (в варианте со списком) ''.join(array) как раз пригодится вместо ошибочной "array[array]". Но использование списка в данном случае избыточно (разве что с образовательной т.з.)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы