[英]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.