微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第一个符号未打印,但其余符号正常打印

如何解决第一个符号未打印,但其余符号正常打印

我不知道为什么第一个星号不打印,有没有人有任何想法?顺便说一句,我正在使用字典。

输入

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 举报,一经查实,本站将立刻删除。