我的自制模块没有返回预期的结果(我想输入ABC并返回123,但是它没有这样做)
我这样做是为了学习如何做到这一点,因此我可以使代码看起来更简洁。(我正在尝试制作一个非常复杂的消息编码器,这是我的第一步)
def counter(key):
length = len(key)
counting = 0
word = []
try:
while length != counting:
if key[counting] == 'A' or 'a' :
word += '1'
counting += 1
if key[counting] == 'B' or 'b' :
word += '2'
counting += 1
if key[counting] == 'C' or 'c' :
word += '3'
counting += 1
if key[counting] == 'D' or 'd' :
word += '4'
counting += 1
if key[counting] == 'E' or 'e' :
word += '5'
counting += 1
if key[counting] == 'F' or 'f' :
word += '6'
counting += 1
if key[counting] == 'G' or 'g' :
word += '7'
counting += 1
if key[counting] == 'H' or 'h' :
word += '8'
counting += 1
if key[counting] == 'I' or 'i' :
word += '9'
counting += 1
if key[counting] == 'J' or 'j' :
word += '10'
counting += 1
if key[counting] == 'K' or 'k' :
word += '11'
counting += 1
if key[counting] == 'L' or 'l' :
word += '12'
counting += 1
if key[counting] == 'M' or 'm' :
word += '13'
counting += 1
if key[counting] == 'N' or 'n' :
word += '14'
counting += 1
if key[counting] == 'O' or 'o' :
word += '15'
counting += 1
if key[counting] == 'P' or 'p' :
word += '16'
counting += 1
if key[counting] == 'Q' or 'q' :
word += '17'
counting += 1
if key[counting] == 'R' or 'r' :
word += '18'
counting += 1
if key[counting] == 'S' or 's' :
word += '19'
counting += 1
if key[counting] == 'T' or 't' :
word += '20'
counting += 1
if key[counting] == 'U' or 'u' :
word += '21'
counting += 1
if key[counting] == 'V' or 'v' :
word += '22'
counting += 1
if key[counting] == 'W' or 'w' :
word += '23'
counting += 1
if key[counting] == 'X' or 'x' :
word += '24'
counting += 1
if key[counting] == 'Y' or 'y' :
word += '25'
counting += 1
if key[counting] == 'Z' or 'z' :
word += '26'
counting += 1
if key[counting] == ' ' :
word += '#'
counting += 1
finally:
return word
我希望该模块允许您输入任何短语并将字母转换为数字(A = 1,B = 2,C = 3,依此类推),然后返回翻译成数字的短语。 (我没有输入错误)
为了测试,我估算出“你好,我是山姆”,我回来了 ['1','2','3','4','5','6','7','8','9','1','0','1',' 1','1','2','1','3','1','4']这显然是不对的,那么问题是什么。 这就是我的导入外观
import random
from h import counter
key = "Hello I am Sam"
keyascii = counter(key)
print(key)
print(keyascii)
答案 0 :(得分:0)
我正在使用ord来获取整数表示形式,并用64减去它以获得您在代码中指定的整数等价物。
我将每个字符都转换为大写,因为您希望A和a都等于1,B和b都等于2,依此类推。我要添加空白字符
def counter(s):
result = ''
for c in s:
if c != ' ':
result += str(ord(c.upper())-64)
else:
result += ' '
return result
print(counter('ABC'))
print(counter('Hello I am Sam'))
#123
#85121215 9 113 19113