Сравнение ввода пользователя с списком «A» и преобразование символов ввода в список «B» на основе индекса списка «A» - PullRequest
2 голосов
/ 24 апреля 2019

При разработке программы для школьного проекта зашифруйте / расшифруйте пользовательский ввод на основе индекса из 2 списков.У меня есть проблема с индексированием списков и сравнением пользовательского ввода с индексом, чтобы вывод на весь экран кода = list2

был очень простым с использованием 'str' и 'input' в имени переменнойчтобы не запутаться.

list1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','.','1','2','3','4','5','6','7','8','9','0']

list2 = ['4','R','5','G','Z','3','2','D','A','E','X','Y','U','I','6','W','7','O','V','8','F','Q','0','L','J','.','H','9','C','B','N','S','P','M','1','T','K']
strInput = input("Type the message you would like to Encrypt  ").upper()
inputList = split(strInput)
print(inputList)
i = 0

for char in inputList:
    if inputList[i] != list1[i]:
    i = i + 1

Теперь отсюда следует ввести пользовательский ввод, сравнить местоположения в каждом списке по индексу, а затем распечатать текст на экране, используя другой список.Я просто не могу понять мою проблему с индексацией.Заранее спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 24 апреля 2019

Другие ответы работают, хотя вы можете рассмотреть dict для большей скорости.Словарь Python - это таблица пар ключ-значение (техническая хеш-таблица).Таблица использует ключ, чтобы найти значение.Когда вы ищете что-то в dict, оно имеет постоянное время поиска O (1), что означает, что dict не ищет в себе элемент.Он точно знает, где он находится (если он есть).

Например:

d = {
   2: 'A',
   5: 3
}
print(d[2]) # This will print the letter A
print(d[5]) # This will print the number 3

Ваши списки:

list1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','.','1','2','3','4','5','6','7','8','9','0']

list2 = ['4','R','5','G','Z','3','2','D','A','E','X','Y','U','I','6','W','7','O','V','8','F','Q','0','L','J','.','H','9','C','B','N','S','P','M','1','T','K']

Включенов dict:

# The following will zip your two lists together into a dictionary
# list1 will be the keys, and list2 will be the values.
encription_dict = {list1[i]: list2[i] for i in range(len(list1))}

Затем мы можем зашифровать:

# Get the user input
strInput = input("Type the message you would like to Encrypt  ").upper()

# The following is list comprehension 
new_str = [(key_val[char] if char != ' ' else ' ') for char in strInput]

# That one line was equivalent to:
# new_str = []
# for char in strInput:
#     if char != ' ': # if it is not a space
#         new_str.append(key_val[char]) # Add the encrypted char for this char
#     else:
#         new_str.append(' ')

# Turn the list into a single str.
new_str = ''.join(new_str)

print(new_str)

Тестирование:
Ввод: Test 2
Выход:8ZV8 C

0 голосов
/ 24 апреля 2019

A. Я не уверен, куда вы шли со своим кодом или каково назначение, но я думаю, что сделал это для вас.

B. Не имейте привычки заставлять других делать за вас домашнее задание, вы не научитесь

list1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','.','1','2','3','4','5','6','7','8','9','0']​
list2 = ['4','R','5','G','Z','3','2','D','A','E','X','Y','U','I','6','W','7','O','V','8','F','Q','0','L','J','.','H','9','C','B','N','S','P','M','1','T','K']

inputList = input("Type the message you would like to Encrypt  ").upper().split()
print(inputList)

encrypted_message=[]
for word in inputList:
   for char in word:
       encrypted_message.append(list2[list1.index(char)])

print(encrypted_message)

Так, например, строка «вы провалите экзамен» дает ['J', '6', 'F', '0', 'A', 'Y', 'Y', '3', '4', 'A', 'Y', '8', 'D', 'Z', 'Z', 'L', '4', 'U']

0 голосов
/ 24 апреля 2019

Вы можете найти индекс персонажа в первом списке, используя .index(char)

list1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','.','1','2','3','4','5','6','7','8','9','0']

list2 = ['4','R','5','G','Z','3','2','D','A','E','X','Y','U','I','6','W','7','O','V','8','F','Q','0','L','J','.','H','9','C','B','N','S','P','M','1','T','K']

str_input = 'TEST'

encrypted_chars = []

for char in str_input:
    if char == ' ':
        encrypted_chars.append(char)
    else:
        encrypted_chars.append(list2[list1.index(char)])

encrypted_message = ''.join(encrypted_chars)  # 8ZV8

Вы также можете использовать понимание списка Python документы

encrypted_chars = [(list2[list1.index(char)] if char != ' ' else ' ') for char in str_input]
encrypted_message = ''.join(encrypted_chars)

Чтобы расшифровать, вы в основном сделали бы обратное.

decrypted_chars = [(list1[list2.index(char)] if char != ' ' else ' ') for char in encrypted_message]
decrypted_message = ''.join(decrypted_chars)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...