私はCodeWarsでPythonを練習することに決めましたので、ちょっと立ち往生して助けを求めるか、アドバイスをお願いします。一般的にモールスコードのデコードと 'NoneType'エラー(Python)
、これはモールスコードデコーダである、私はそれを自分で書いて、ここにコードがあります:私はVSのコードでそれを実行すると
def decodeMorse(morseCode):
letter, decodedMsg = '', ''
spaceCount = 0
morseABC = {'.-':'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'}
for let in morseCode: #Gets each symbol from morseCode
if let != ' ': #Checks if the sym is not spacebar
letter += let #Adds sym to letter
spaceCount += 1
elif let == " " and spaceCount > 0: #Checks if the sym is spacebar
decodedMsg += morseABC.get(letter) #Adds the decoded letter
letter = '' #Flushes letter var
spaceCount = 0
else:
decodedMsg += ' '
decodedMsg += morseABC.get(letter) #Writes the last word
decodedMsg = decodedMsg.replace(' ', ' ') #Replaces 2 spaces to 1
letter = ''
return decodedMsg
decodeMorse('.... . .-.. .-.. --- .-- --- .-. .-.. -..') => HELLO WORLD
、それは素晴らしい作品が、CodeWarsインタプリタは
があると言いますTraceback:
in
in decodeMorse
TypeError: cannot concatenate 'str' and 'NoneType' objects
多分あなたは私に何が間違っているのかを教えてくれたり、最適化を手伝ってくれたりします。私はスペースに困っていた。モールス文の3つのスペースは単語間のスペースです。
@BPL、私は分かりません、私はちょうど "試行"ボタンを押して、それは6つのテストを行い、後にエラーについて通知します。ページのスクリーンショットを作成する必要がありますか? –
代わりに、ここでもっと良いアプローチを試してみましょう。あなたはあなたの入力アルファベットが何かを知っていますよね? {'。'、 ' - '、 ''}エラーを再現するには、このアルファベットを使用してランダムな文字列を生成し、そのエラーを再現できるようになるまで機能を供給してください。そしてそれを簡単に修正することができます。もしあなたが望むなら、簡単な例 – BPL
@BPLを投稿することもできます。 decodeMorse( '')とdecodeMorse( '')が原因です –