gpt4 book ai didi

python - 如何抑制python中的错误消息?

转载 作者:行者123 更新时间:2023-12-03 09:11:52 25 4
gpt4 key购买 nike

所以我试图做一个程序,从给定的字符串中删除所有重复的字母。该代码基本上是一个自制的迭代器,是我从另一篇文章中获得的:How do I reset a list iterator in Python?

string = "NNEEXXxxTTGGEENNCCOODDEERR"

class rmvDuplicates:

def __init__(self, list, newString):
self.newString = newString
self.list = list
self.idx = 0
self.content = list[self.idx]

def __iter__(self):
return self

def get_content(self, content):
return content

def get_index(self):
return self.idx

def get_content_next(self, content):
try:
self.idx += 1
return self.content
finally:
self.idx -= 1

def remove(self, elem):
del self.list[self.idx]
return

def rewind(self):
self.idx = 0

def __next__(self):
try:
return self.list[self.idx]
except IndexError:
pass
finally:
self.idx += 1
self.content = self.list[self.idx]

new_String = []

li = rmvDuplicates(list(string), new_String)

for elem in li:
if li.get_content(elem) == li.get_content_next(elem):
print(li.get_content(elem))
li.remove(elem)
print(li.list)

print("Hello")

注意: print("Hello")仅用于测试目的

我对其进行了一些修改以满足自己的需要,并且效果很好,直到到达 IndexError为止。
def __next__(self):
try:
return self.list[self.idx]
except IndexError:
pass
finally:
self.idx += 1
self.content = self.list[self.idx]

我已经尝试使用带有pass方法的Except-Block来解决这个问题。

但是,程序仍然显示此消息:
Traceback (most recent call last):
File "rmv_dplc_cls.py", line 49, in <module>
for elem in li:
File "rmv_dplc_cls.py", line 42, in __next__
self.content = self.list[self.idx]
IndexError: list index out of range

这里是否有人知道如何解决此问题,因此程序可以继续运行并且不会中止。

谢谢

最佳答案

尝试将__next__方法更改为:

def __next__(self): 
try:
value = self.list[self.idx]
self.idx += 1
except IndexError:
self.idx = 0
value = self.list[self.idx]
finally:
return value

说明:

如果您的try子句失败,则意味着 self.list[self.idx]访问列表范围之外的元素,从而提高 IndexError。在这种情况下,尝试访问相同的 self.list[self.idx]将导致这次在try子句之外生成另一个 IndexError

关于python - 如何抑制python中的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com