我目前正在創建一個程序,顯示出現在原始翻譯成其等效的任何字母字符的電話號碼。例如,如果我輸入字符串「521-BBB-BBBB」,則應根據我的代碼得到「5212222222」。相反,我從IDLE得到了「2222222925」。我不明白爲什麼該計劃顯示這個,而不是我正在尋找的那個。 「2」的數字是正確的,但我不明白「925」是從哪裏來的。Python字符串邏輯錯誤
這是代碼:
def charToNum(num):
if num == 'A' or num == 'B' or num == 'C' or num == '2':
return '2'
elif num == 'D' or num == 'E' or num == 'F' or num == '3':
return '3'
elif num == 'G' or num == 'H' or num == 'I' or num == '4':
return '4'
elif num == 'J' or num == 'K' or num == 'L' or num == '5':
return '5'
elif num == 'M' or num == 'N' or num == 'O' or num == '6':
return '6'
elif num == 'P' or num == 'Q' or num == 'R' or num == 'S' or num == '7':
return '7'
elif num == 'T' or num == 'U' or num == 'V' or num == '8':
return '8'
else:
return '9'
def AlphaToTel(telNum): newTelNum = telNum[0:3] + telNum[4:7] + telNum[8:12] phoneNum = '' for char in newTelNum: phoneNum = charToNum(char) + phoneNum
print(phoneNum)
AlphaToTel(「521 BBB-BBBB」)
你不會在任何地方處理數字'1',所以當你輸入它時,它最終返回9。另外,您可能需要'phoneNum = phoneNum + charToNum(char)',而不是'phoneNum = charToNum(char)+ phoneNum'。這應該解決您的問題:) – Zizouz212