我的自制模块没有返回预期的结果(我想输入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)
我使用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