如何修复自我创建模块无法正常工作

问题描述 投票:1回答:1

我的自制模块没有返回预期的结果(我想输入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)
python-3.x module
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.