簡體   English   中英

第一個符號未打印,但 rest 正常打印

[英]first symbol not printing but the rest is normally printing

我不確定為什么第一個星號沒有打印,有人有什么想法嗎? 順便說一句,我正在使用字典。

輸入

error

output

' ****'

預計 output

    '*****'


    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 = my_msg_Morse 來解決此問題。

如果您沒有在此條件下添加空格(對於您的字典匹配的字符 - 即大寫字母)

elif letter!=" ": 
     my_msg_Morse+= MORSE_CODES[letter]+"  "

更清楚的是,您通常會遇到此問題。 考慮不添加空格的測試用例:

輸入:
ERROR
預期 Output:
..-..-.---.-.
實際 Output:
..-..-.---.-

但是,您在每次將大寫字母呈現為摩爾斯電碼后都會添加空格。 所以最后一個字符(一個空格)的丟失大部分是未被觀察到的。

我不知道您的要求是什么,但是如果通過返回沒有尾隨空格的字符串來滿足他們的要求,則可以返回my_msg_Morse.rstrip() 字符串 object 的rstrip()方法刪除所有尾隨空格。 這樣,您可以保留字符串內的空格,同時消除尾隨空格。 我也喜歡 Tim Robert 的建議(在對您原始問題的評論中)使用列表並加入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM