Python 停止索引太多

Python 停止索引太多,python,python-2.7,Python,Python 2.7,所以我必须解码输入的数字。1-26中的每个数字都对应于A-Z,例如1-A,2-B,…26-Z。我制作了一本涵盖这一点的词典。 我的输出需要是解码数字后的文本 例如,我的输入可以是:195318520 19作为S在我的字典中,接下来我将取53,它不是,所以我从5打印字母E,然后是31,同样的,我也不是这样打印C,然后是R,依此类推,直到我得到SECRET“00”将是文本中的“”,“01”将是“1”。“09”-“9” 所以我做了这个代码,我知道这是一个屠宰,但不知怎么的,它打印的东西是正确的,但我得

所以我必须解码输入的数字。1-26中的每个数字都对应于A-Z,例如1-A,2-B,…26-Z。我制作了一本涵盖这一点的词典。 我的输出需要是解码数字后的文本

例如,我的输入可以是:
195318520

19
作为
S
在我的字典中,接下来我将取
53
,它不是,所以我从
5
打印字母
E
,然后是
31
,同样的,我也不是这样打印
C
,然后是
R
,依此类推,直到我得到
SECRET
<代码>“00”将是文本中的
”,
“01”
将是
“1”
“09”
-
“9”

所以我做了这个代码,我知道这是一个屠宰,但不知怎么的,它打印的东西是正确的,但我得到和错误在最后

from textwrap import wrap
import sys
sir=raw_input().strip('')

d= {"00":" ",'1':'A', '2':'B', '3':'C' , '4':'D' , '5':'E', '6':'F', '7':'G', '8':'H', '9':'I', "10":'J', "11":'K', "12":'L', "13":'M', "14":'N', "15":'O', "16":'P',"17":'Q', "18":'R', "19":'S', "20":'T', "21":'U', "22":'V',"23":'W', "24":'X', "25":'Y', "26":'Z' }

pair=wrap(sir,1)

d["01"]=d["1"]
d["02"]=d["2"]
d["03"]=d["3"]
d["04"]=d["4"]
d["05"]=d["5"]
d["06"]=d["6"]
d["07"]=d["7"]
d["08"]=d["8"]
d["09"]=d["9"]

for i in range(len(pair)):
    pair[i:i+2]=[''.join(pair[i:i+2])]
    pair[i]=pair[i].strip()
    if pair[i] <= "26":
        sys.stdout.write(d[pair[i]])
        #print d[pair[i]] 
    else:
        pair[i]=list(pair[i])
        sys.stdout.write(d[pair[i][0]])
        #print d[pair[i][0]] 
        pair.insert(i+1,pair[i][1])
从文本包装导入包装
导入系统
sir=原始输入()
d={“00”:“1”:“A”,“2”:“B”,“3”:“C”,“4”:“d”,“5”:“E”,“6”:“F”,“7”:“G”,“8”:“H”,“9”:“I”,“10”:“J”,“11”:“K”,“12”:“L”,“13”:“M”,“14”:“N”,“15”:“O”,“16”:“P”,“17”:“Q”,“18”:“R”,“19”:“S”,“20”:“T”,“21”:“U”,“22”:“V”,“24”:“W”:“Y”:
成对=包裹(先生,1)
d[“01”]=d[“1”]
d[“02”]=d[“2”]
d[“03”]=d[“3”]
d[“04”]=d[“4”]
d[“05”]=d[“5”]
d[“06”]=d[“6”]
d[“07”]=d[“7”]
d[“08”]=d[“8”]
d[“09”]=d[“9”]
对于范围内的i(len(对)):
配对[i:i+2]=[''.join(配对[i:i+2])]
对[i]=对[i].strip()

如果pair[i],我不确定您从
textwrap
中获得了什么好处,但此函数适用于您的示例输入:

def parse(sir):
    ret = []
    taken = False
    for index,n in enumerate(sir):
        if not taken:
            dbl = (''.join(sir[index:]) + '0')[:2]
            val = int(dbl)
            taken = True
            if 1 <= val <= 26:
                ret.append(chr(val + 64))
            elif val == 0:
                ret.append(' ')
            else:
                taken = False
                val = int(n)
                ret.append(chr(val + 64))
        else:
            taken = False


    return ''.join(ret)

sir = '195318520'

print(parse(sir))

那么好吧,继续使用
wrap
和您的
dict

d= {"00":" ",'1':'A', '2':'B', '3':'C' , '4':'D' , '5':'E', '6':'F', '7':'G', '8':'H', '9':'I', "10":'J', "11":'K', "12":'L', "13":'M', "14":'N', "15":'O', "16":'P',"17":'Q', "18":'R', "19":'S', "20":'T', "21":'U', "22":'V',"23":'W', "24":'X', "25":'Y', "26":'Z' }

d["01"]=d["1"]
d["02"]=d["2"]
d["03"]=d["3"]
d["04"]=d["4"]
d["05"]=d["5"]
d["06"]=d["6"]
d["07"]=d["7"]
d["08"]=d["8"]
d["09"]=d["9"]

def parse(sir):
    ret = []
    taken = False
    for index,n in enumerate(sir):
        if not taken:
            dbl = (''.join(sir[index:]) + '0')[:2]
            val = int(dbl)
            taken = True
            if 0 <= val <= 26:
                ret.append(d[dbl])
            else:
                taken = False
                val = int(n)
                ret.append(d[n])
        else:
            taken = False


    return ''.join(ret)

sir = '195318520'
pair=wrap(sir, 1)

print(parse(pair))

我毫不怀疑这会起作用,但如果可能的话,我想修复我的代码。虽然我很感激你的努力,但我不想实现另一个功能。我认为在我的代码中对
语法进行一些调整就可以了。我问你是否可以告诉我如何修复我的代码。哦,我想是的,但我不会去那里。我的估计是,当我做了所有的更正后,它将最终成为我发布的两个答案之一。
d= {"00":" ",'1':'A', '2':'B', '3':'C' , '4':'D' , '5':'E', '6':'F', '7':'G', '8':'H', '9':'I', "10":'J', "11":'K', "12":'L', "13":'M', "14":'N', "15":'O', "16":'P',"17":'Q', "18":'R', "19":'S', "20":'T', "21":'U', "22":'V',"23":'W', "24":'X', "25":'Y', "26":'Z' }

d["01"]=d["1"]
d["02"]=d["2"]
d["03"]=d["3"]
d["04"]=d["4"]
d["05"]=d["5"]
d["06"]=d["6"]
d["07"]=d["7"]
d["08"]=d["8"]
d["09"]=d["9"]

def parse(sir):
    ret = []
    taken = False
    for index,n in enumerate(sir):
        if not taken:
            dbl = (''.join(sir[index:]) + '0')[:2]
            val = int(dbl)
            taken = True
            if 0 <= val <= 26:
                ret.append(d[dbl])
            else:
                taken = False
                val = int(n)
                ret.append(d[n])
        else:
            taken = False


    return ''.join(ret)

sir = '195318520'
pair=wrap(sir, 1)

print(parse(pair))
SECRET