回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在制作一个简单的摩尔斯电码转换器,以应对挑战。基本上,给我一个句子,我必须用字典把它转换成摩尔斯电码。我使用了一个基本的for循环,但是一旦我尝试将列表转换为字符串,我发现<code>''.join()</code>方法完全忽略了morse转换之间的空格</p>
<p>这是我的代码:</p>
<pre><code>def encode_morse(message):
char_to_dots = {
'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': '--..', ' ': ' ', '0': '-----',
'1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
'6': '-....', '7': '--...', '8': '---..', '9': '----.',
'&': '.-...', "'": '.----.', '@': '.--.-.', ')': '-.--.-', '(': '-.--.',
':': '---...', ',': '--..--', '=': '-...-', '!': '-.-.--', '.': '.-.-.-',
'-': '-....-', '+': '.-.-.', '"': '.-..-.', '?': '..--..', '/': '-..-.'
}
print(message)
message_list = list(message)
morse_output = []
for i in message_list:
if i != ' ':
morse_output.append(char_to_dots.get(str(i)))
else:
morse_output.append(' ')
return ''.join(morse_output)
</code></pre>
<p>这是输出:</p>
<pre><code>EDABBIT CHALLENGE
FAILED: Test 1: '.-...--...-.....- -.-......-.-...-...-.--..' should equal '. -.. .- -... -... .. - -.-. .... .- .-.. .-.. . -. --. .'
ERROR: Traceback:
in <module>
File "./frameworks/python/cw-2.py", line 28, in assert_equals
expect(actual == expected, message, allow_raise)
File "./frameworks/python/cw-2.py", line 18, in expect
raise AssertException(message)
cw-2.AssertException: Test 1: '.-...--...-.....- -.-......-.-...-...-.--..' should equal '. -.. .- -... -... .. - -.-. .... .- .-.. .-.. . -. --. .'
</code></pre>