編輯:現在完全修復。莫爾斯電碼轉換器循環錯誤
編輯:好,所以現在我把它改變'... --- ...'到'sos'(yippee!)但是由於某種原因,當我輸入時它給了我一個KeyError'... --- .../... --- ...'。 這應該給我'sos sos',但我得到''的KeyError。 我認爲這是因爲在'/'之後,程序將其視爲調用當前鍵的字典值的觸發器。問題在於,由於前面的字符是'/',當時的當前鍵是空白的。我將如何解決這個問題? 謝謝。我很新的編程與蟒蛇(以及,一般編程,真的......),今天我有一個明智的想法,使莫爾斯電碼轉換器。
我有「純文本莫爾斯電碼」工作完美,但「莫爾斯電碼純文本」?
並非如此。
問題是,當我運行程序時,它不給我任何東西,它只是打破了它的循環(就像我告訴過的那樣),沒有任何東西回來給我。
如果你們能幫助我,我會非常感激。
哦,'decode_dict'是我做的一個字典,它將莫爾斯電碼值與純文本相關聯。 例如,
decoding_dict = {'...' : 's' , '---' : 'o'}
等等等等。
def decode(text):
text += ' '
#I have it set up to trigger when there's a space, hence this.
global key
global decoded_text
#I thought maybe this would fix it, it didn't. :(
key = ''
decoded_text = ''
for i in text:
if i == '.':
key += i #This adds a '.' to the key to reference later.
continue
elif i == '-':
key += i #See above comment.
continue
elif i == ' ':
decoded_text += decoding_dict[key]
text = text[(len(key) + 1) :]
key = '' #Calls the value of the key, cuts out the used text, and resets key.
continue
elif i == '/':
decoded_text += decoding_dict['/']
continue #In morse code, a '/' is a ' ' and that's in the dict.
elif text == '':
print "Result: " + decoded_text
break #This is basically the end of the loop
else:
print "Error, please try again."
break
現在,當我用'... --- ...'運行它時,它會回到開頭,並且不會打印任何東西。 (通過開始,我的意思是我事先做好的菜單)
的'text'值永遠不會空字符串。如果那是真的,你的循環已經結束了。除此之外,在循環內改變你正在迭代的東西的值通常是一個壞主意 –
@Burhan:雖然鏈接問題也是關於莫爾斯碼,但它並不能解釋代碼的問題是什麼在這個問題上。 – BrenBarn