2016-11-07 3 views
0

Мне было интересно, как я могу ввести строку и получить более одного ключа из словаря? Например, это мой код, и я хочу напечатать что-то вроде «Добро пожаловать в подземный мир» и его кодировать буквами в моем словаре.Несколько ключей в словаре?

def main(): 
    print("*********************************************************************************************") 
    print("What exactly is your use for this? Whatever, Enter a message because your hiding something...") 
    print("*********************************************************************************************") 

    userInput = input("Enter your message to encode: ") 
    userInput = userInput.lower() 
    # encoding dictionary 
    encoding = {"a":"b","b":"c","c":"d","d":"e","e":"f","f":"g","g":"h","h":"i","i":"j","j":"k","k":"l","l":"m","m":"n", 
       "n":"o","o":"p","p":"q","q":"r","r":"s","s":"t","t":"u","u":"v","v":"w","w":"x","x":"y", 
       "y":"z","z":"a"," ":"-"} 

    #userInput = encoding[key] 

    for key in encoding: 
     if (userInput == key): 
      print(encoding[key]) 
      break 

main() 
+0

Для кодировки сделать что-то вроде 'CHR (ORD («а») + 1)', а не выписывать словарь –

ответ

0
print(''.join([encoding.get(letter, '') for letter in userInput])) 

В принципе, вы хотите, чтобы цикл через входное сообщение (userInput) для того, чтобы закодировать всю вещь. Аргумент для присоединения ([encoding.get(letter, '') for letter in userInput]) делает именно это: для каждого символа на входе он находит подходящую кодировку. .get удобен также потому, что в случае, когда буква не найдена (то есть, если пользователь вводил цифру) символ - пустая строка.

''.join(something) принимает все элементы в something и помещает его в виде строки. В более общем плане, 'a string'.join(something) будет помещать 'a string' между каждым элементом something, поэтому, если 'a string' пуст, пустая строка помещается между ними, эффективно соединяя все в списке в строку.

+0

Можете ли вы объяснить, что происходит в этой строке, как я 5? –

1

Вы не должны перебирать encoding, это словарь. Вместо этого вы можете просто перебрать входную строку, заменить каждый character на encoding[character].

''.join([encoding[c] for c in somestring]) 
Смежные вопросы