我已经尝试了几种不同的方法并且无济于事。我们需要用简单的运算符和简单的循环来执行它。这是我尝试过的:
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数学运算符。这个课程不是关于效率,而是使用基本工具来完成工作。
谢谢。
答案 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等等,你也需要弄清楚...