将小写字母更改为:数字00-25,将大写字母更改为:数字26-51

时间:2014-02-27 17:15:52

标签: python string python-3.x numbers

我已经尝试了几种不同的方法并且无济于事。我们需要用简单的运算符和简单的循环来执行它。这是我尝试过的:

def str2num(inputstr):
    i = ''

    for x in inputstr:

        i = i + str.replace(x, str(ord(x)),1)
    i = str(i)

    print(i)

出现错误,指出整数不能隐式转换为字符串,我试图用str(ord(x)修复,但我仍然收到同样的错误。

然后我决定尝试转换为列表并使用导入字符串...事情变得混乱:

def str2num(s):

    import string

    r = string.ascii_lowercase + string.ascii_uppercase
    L = list(r)

    for i in L:
        L [i] = 00 + 1

    print(L)

我没有解决方案,我可以提出任何建议?记住(我知道这只是一种痛苦,但只是简单的解决方案)。使用for,with,while,if,import string和general数学运算符。这个课程不是关于效率,而是使用基本工具来完成工作。

谢谢。

2 个答案:

答案 0 :(得分:0)

获取数字列表:

In [172]: t='abcABC'

In [175]: l = map(lambda x: ord(x)-97 if x.islower() else ord(x)-65+26, t)

In [176]: l
Out[176]: [0, 1, 2, 26, 27, 28]

获取1'01'的字符串:

In [179]: ''.join('%02d'%i for i in l)
Out[179]: '000102262728'

功能版本:

In [186]: def str2num(s):
     ...:   res=[]
     ...:   for i in s:
     ...:       if i.islower():
     ...:           res.append(ord(i)-97)
     ...:       else:
     ...:           res.append(ord(i)-65+26)
     ...:   return ''.join('%02d'%i for i in res)

In [187]: str2num('MyHome')
Out[187]: '382433141204'

答案 1 :(得分:0)

使用somestring.islower()和somestring.isUpper()

小写它的str(ord(somestring [i]) - 97)得到0 - 25 for a-z

表示大写str(ord(somestring [i]) - 65 + 26)得到26 - 51表示A-Z

我不知道你想如何编码它,但这应该有很多帮助。使用你的Ascii表;)

这也不会检查2位数,所以如果你想要00,01等等,你也需要弄清楚...