[英]Please help me better understand this one “except”conditional line
我大约要学习Python几周。
在用户的指导下:Stackoverflow上的“ Lost”丢失了,我得以弄清楚如何构建一个简单的解码器程序。 他提出了一个代码,我做了一些更改,但是对我来说重要的是我了解正在发生的事情。 我了解此代码的97%,但以下情况except: i += 1
行在decode()
。 到目前为止,该代码有效,但是我想了解这一行。
因此,基本上,此代码根据特定条件对加密的单词进行解密。 您可以输入此示例加密字来进行尝试。 "0C1gA2uiT3hj3S"
的答案应为"CATS"
我尝试用值错误替换例外: i += 1
,因为我从未见过只具有可操作且没有Error子句的Try / Except条件。 但是用Value Error替换它会创建一个永无止境的循环。
我的问题是写例外的目的是什么: 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()
目的是将i
向前加1,以防在强制转换为int
失败(即elist[i]
不是数字)的情况下跳过当前字符。
在try-Block内部可能会发生一些错误:
i
没有索引,因为while循环将一个索引运行到很远。 elist[i]
不是数字,导致ValueError i = i + int(elist[i]) + 1
变大,下一次索引访问也会导致IndexError 无论哪种方式,除外条款都将忽略下一个字符。 然后循环继续进行。
正确的实现不需要任何例外:
def unscramble(elist):
answer = []
i = 0
while i < len(elist):
i += int(elist[i]) + 1
answer.append(elist[i])
i += 1
return "".join(answer)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.