2011-02-08 13 views
1

私は現在モールスコード文字の辞書を持っており、ユーザー入力文字列を対応するモールスコード文字に変更できるようにしたいと考えています。これをPythonで簡単に実現する方法はありますか?辞書を使ってPythonの文字列を変更する

+5

あなたはこれまでに何を持っているか、どのように機能しないのですか? –

答えて

6
morse = {"A": ".-", "B": "-...", "C": "-.-."} #etc. 
text = "ABC" 
output = " ".join(morse[letter] for letter in text) 

入力を小文字で入力できる場合は、letter.upper()を使用します。あなたは、テーブル内のすべてのモールスの文字を持っていない場合と、あなたは(クレジットが!このためThiefMasterに行く)あまりにも、それを補うために必要かもしれませんので、最終結果は

output = " ".join(morse[letter] for letter in text.upper() if letter in morse) 
+0

あなたのテストは 'もしモールスの場合はletter.upper()でなければなりません。そうでなければ小文字は翻訳されません。 – Duncan

+0

@ダンカン:ありがとう!私は良いアイデアを持っています。 –

+0

それも機能します。 – Duncan

2
newStr = ' '.join(morseDict[c] for c in oldStr if c in morseDict) 

この可能性がありキーが入っていないすべての文字を静かに削除しますmorseDict

編集:「文字」の間に空白を追加するようになりました。 ' 'をたとえばにマップするといいでしょう。単語セパレータを持つタブまたは複数のスペース。

0
morse = { 
"a": ".-", 
"b": "-...", 
"c": "-.-.", 
... 
... 
} 

str = "Hello" 

for ch in str: 
    print morse[ch.lower()], 
0

それは簡単です:

input = 'a string' 
morse_code = { ... } 

print ' '.join([morse_code[i] for i in input]) 
+1

モールスアルファベットで '' ''で文字を結合することは、モールスアルファベットではかなり悪い考えです... – eumiro

+0

@eumiro私はあなたのコメントを得ていません。 – Simone

+0

あなたのコード( 'morse_code'ディクショナリに2文字または3文字)を実行すると、あなたが表示されます。 '' '.join(...) 'は要素間にスペースを入れずに要素を結合します。モールス符号の文字間のスペースは重要です。 ''' .join'を' '' .join'に置き換えてください。 – eumiro

関連する問題