2016-11-07 13 views
0

文字列を入力して辞書から複数のキーを取得する方法が不思議でしたか?例えば、これは私のコードで、 "Underworldへようこそ"のようなものを印刷し、それを私の辞書の文字でエンコードしたいと思っています。辞書の複数のキー?

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

そのラインで起こっていただきました!私は5だように 'CHR(ORD(「A」)+ 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)は、somethingのすべての要素の間に'a string'を置きます。したがって、'a string'が空の場合、空の文字列がその間に置かれ、リスト内のすべてを効果的に文字列に結合します。

+0

を書き出すあなたは、説明できますか? –

1

encodingを反復しないでください。これは辞書です。代わりに、入力文字列を反復するだけで、characterをそれぞれencoding[character]に置き換えることができます。あなたのエンコーディングのために

''.join([encoding[c] for c in somestring]) 
関連する問題