如何解决第一个符号未打印,但其余符号正常打印
我不知道为什么第一个星号不打印,有没有人有任何想法?顺便说一句,我正在使用字典。
输入
error
' ****'
预期输出
'*****'
MORSE_CODES={'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':'--..'}
def encode_Morse(my_msg):
my_msg_Morse=" "
for letter in my_msg:
if letter!=" " and letter not in MORSE_CODES:
my_msg_Morse+="*"
elif letter!=" ":
my_msg_Morse+= MORSE_CODES[letter]+" "
else:
my_msg_Morse+=" "
my_msg_Morse = my_msg_Morse[:-1]
return my_msg_Morse
解决方法
问题是您没有返回完整的字符串,并且最后一个 星号没有打印出来。您可以通过修改分配 my_msg_Morse = my_msg_Morse[:-1]
来解决此问题
到
my_msg_Morse = my_msg_Morse
。
如果您没有在此条件下添加空格(用于与您的字典匹配的字符 - 即大写字母)
elif letter!=" ":
my_msg_Morse+= MORSE_CODES[letter]+" "
更清楚的是,您通常会遇到此问题。考虑不添加空格的测试用例:
输入:ERROR
预期输出: ..-..-.---.-.
实际输出: ..-..-.---.-
但是,您每次将大写字母渲染为莫尔斯电码后都会添加空格。所以最后一个字符(一个空格)的丢失大部分是无法观察到的。
我不知道您的要求是什么,但如果通过返回没有尾随空格的字符串来满足它们,您可以返回 my_msg_Morse.rstrip()
。字符串对象的 rstrip()
方法删除所有尾随空格。这样,您可以保留字符串内空白,同时消除尾随空白。我也喜欢 Tim Robert 的建议(在对您原始问题的评论中)使用列表并加入它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。