请帮助我更好地理解这个“除”条件行

时间:2016-04-03 14:02:44

标签: python indexing try-catch except operations

我花了几周的时间学习Python。

在用户的指导下:Stackoverflow上的'Lost',我能够弄清楚如何构建一个简单的解码器程序。他提出了一个代码,我改变了一些东西,但对我来说重要的是我理解发生了什么。我了解此代码的97%,但except: i += 1中的decode()行除外。截至目前,代码有效,但我想了解这一行。

所以基本上这段代码根据特定标准对加密字进行解扰。您可以输入此示例加密字来试用它。 "0C1gA2uiT3hj3S"答案应为"CATS"

我尝试用值错误替换except:i += 1,因为我从未见过具有操作且没有错误子句的Try / Except条件。但用Value Error替换它创建了一个永无止境的循环。

我的问题是编写except:i += 1的目的是什么。

'迷失',如果你在那里,你可以回答这个问题。对不起,关于旧帖子

def unscramble(elist):

    answer = []
    i = 0

    while i <= len(elist):

        try:
            if int(elist[i]) > -1:
                i = i + int(elist[i]) + 1
                answer.append(elist[i])
        except:
            i += 1

    return "".join(answer)

def boom():
    eword  = input("paste in your encrypted message here >> ")
    elist = list(eword)
    answer = unscramble(elist)
    print (answer)

clear()
boom()

2 个答案:

答案 0 :(得分:0)

目的是将i提前一,跳过当前字符,以防转换为int失败,即如果elist[i]不是数字。

答案 1 :(得分:0)

有一些错误,可能发生在try-Block中:

  1. elist[i]超出索引范围,因为while循环运行一个索引到远。
  2. i = i + int(elist[i]) + 1不是数字,导致ValueError
  3. def unscramble(elist): answer = [] i = 0 while i < len(elist): i += int(elist[i]) + 1 answer.append(elist[i]) i += 1 return "".join(answer) 变大,下一个索引访问也导致IndexError
  4. 无论哪种方式,except子句都会忽略下一个字符。循环继续。

    正确的实施不需要任何例外:

    compile 'com.google.code.gson:gson:2.4'