當我嘗試實作我的代碼時,會出現一個錯誤,但是當我使用除錯器查看代碼卡在哪里時,沒有超出范圍的索引。我必須錯過一些東西,但我不知道是什么。
message = "WEATHERREPORTWINDYTODAY"
number1 = 7
def Encode(letter, number):
shift = 0
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
liste_decode = []
for i in range(len(letter)):
number_index_alphabet = alphabet.index(letter[i]) shift number
shift = 1
if number_index_alphabet <= len(alphabet):
liste_decode.append(alphabet[number_index_alphabet])
else:
number_index_alphabet -= 26
liste_decode.append(alphabet[number_index_alphabet])
return liste_decode
print(Encode(message, number1))
uj5u.com熱心網友回復:
Number_index_alphabet == 26 在某個時候。字母表的索引范圍是 0-25(含)。該行也會有問題:
number_index_alphabet -= 26
作業代碼:
if number_index_alphabet < len(alphabet):
liste_decode.append(alphabet[number_index_alphabet])
else:
number_index_alphabet = number_index_alphabet % 26
liste_decode.append(alphabet[number_index_alphabet])
uj5u.com熱心網友回復:
我在這里看到兩個可能的錯誤
if number_index_alphabet <= len(alphabet):應該if number_index_alphabet < len(alphabet):- 不確定您對此有何期待
number_index_alphabet -= 26
我假設你的函式應該是這樣的
def Encode(letter, number):
shift = 0
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
liste_decode = []
for i in range(len(letter)):
number_index_alphabet = alphabet.index(letter[i]) shift number
shift = 1
liste_decode.append(alphabet[number_index_alphabet % 26])
return liste_decode
uj5u.com熱心網友回復:
超出范圍的原因是您遞增shift并且在回圈的一個步驟number_index_alphabet中將是53,即使在 else 陳述句中您減去 26,您也會得到 27,這是超出范圍的。
而在 if 陳述句number_index_alphabet <= len(alphabet)中也可能會產生超出范圍的錯誤,應該是number_index_alphabet < len(alphabet).
我猜你想用字母表的變化來編碼句子。稍微改了一下,希望對你有幫助。
message = "WEATHERREPORTWINDYTODAY"
number1 = 7
def Encode(letter, number):
shift = number
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
str_encode = str()
for i in range(len(letter)):
number_index_alphabet = alphabet.index(letter[i]) shift
if number_index_alphabet >= len(alphabet):
number_index_alphabet %= len(alphabet)
str_encode = alphabet[number_index_alphabet]
return str_encode
print(Encode(message, number1))
輸出:DLHAOLYYLWVYADPUKFAVKHF
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478127.html
