Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将小写字母更改为:数字00-25,将大写字母更改为:数字26-51_Python_String_Python 3.x_Numbers - Fatal编程技术网

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

Python 将小写字母更改为:数字00-25,将大写字母更改为:数字26-51,python,string,python-3.x,numbers,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) 出现了一个错误,指出in integer不能隐式转换为字符串,我试图用str(ord(x)修复这个错误,但仍然收到了相

我已经尝试了两种不同的方法,但都没有效果。我们需要使用简单的运算符和简单的循环来执行此操作。以下是我尝试过的:

def str2num(inputstr):
    i = ''

    for x in inputstr:

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

    print(i)
出现了一个错误,指出in integer不能隐式转换为字符串,我试图用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)
我找不到我能想出的解决方案了,有什么建议吗?记住(我知道这很痛苦,但是)只使用简单的解决方案。用于、with、while、if、import字符串和一般数学运算符。本课程不是关于效率,而是使用基本工具完成工作


谢谢。

要获取号码列表:

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'
使用somestring.islower()和somestring.isUpper()

对于小写的str(ord(somestring[i])-97),a-z的值为0-25

对于大写的str(ord(somestring[i])-65+26),对于A-Z得到26-51

我不知道您想如何编码,但这应该会有很大帮助。请使用您的Ascii表;)


此外,这不会检查2位数字,因此如果需要00、01等数字,您也需要计算出来。

我还必须能够在def str2num()括号中输入一个值,并让它使用前面提到的数字给我一个代码。您正在尝试用整数
1
替换字符串中的某些内容;这就是错误所在。您可能需要
“1”
,尽管我并不清楚您在该代码中做了什么。问题是:假设我们使用两位数来编码英文小写字母和大写字母。因此,字母a编码为00,字母b编码为01,字母c编码为02,…,字母z编码为25,字母a编码为26,字母b编码为27,…,字母z编码为51。编写一个python函数,称之为str2num(s),它返回上述字符串s的编码。例如,str2num('MyHome')应该返回字符串'382433141204',因此我被要求将字符串转换为数字,并以这些数字的字符串形式打印给我。如果你要为某人做家庭作业,用
map
lambda
的方式做这件事,这样他们就会因为作弊而失败,这似乎有点残忍。lambda是我们还没有学会的东西,所以答案是不可接受的。不幸的是(根据教授的要求),该标签已经有2年没有在网站上使用了。这显然是问题陈述中的家庭作业。不是家庭作业,而是考试和测验中出现的问题类型的例子。你不能简化lambda吗?l=映射(λx:ord(x)-97如果x.islower()否则ord(x)-39,t)