Ignore exception in Python
本问题已经有最佳答案,请猛点这里访问。
我在python中尝试了except块,当发生异常时我不想做任何事情。我的代码如下:
1 2 3 4 5 6 | for i in range(len(grid)): for j in range(len(grid[i])): try: count = count > int(grid[i][j]) ? count : int(grid[i][j]) except: //Do nothing here |
当捕获异常时,我如何不执行任何操作。
谢谢。
让我们正确地编写代码。
我们想遍历网格中的每个单元格。这样做。不要创建重复访问然后用于索引的数字列表(
range )。python for循环直接与容器一起工作。它方便易懂,很好用。别跟那个打架。没有?:用python构造。这里有一个
x if y else z 构造,但这在这里不合适。显然,您试图将count 设置为其当前值和单元值的最大值。它有一个内置的功能。你真的想要所有这些细胞的最大值。所以直接问这个问题;不要假设你必须自己实现高水位线算法。您不需要(这也保护您不必为
count 选择初始值,这可能是错误的。)我们不需要为此使用显式循环进行迭代。我们可以使用生成器表达式指定要传递给max 的值的列表。您希望"忽略"不能转换为整数的值。尽管您的其他代码可能有问题,但如果这些值的存在可能首先发生:我们可以简单地进行一个测试,并筛选出未通过测试的值。
因此:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def is_integral(value): try: int(value) return True except: return False # Now, get the maximum of all the integral values: count = max( int(cell) for row in grid for cell in row if is_integral(cell) ) |
您可以使用
我看到很多人使用
1 2 3 4 5 6 7 | class SomeInterface: def do_something(self): pass class SomeImplementation(SomeInterface): def do_something(self) ... |
这使得搜索
请注意,传递异常通常是一种糟糕的实践,因为您实际上总是希望对异常采取行动。至少,您应该明确地指定要捕获的确切异常,否则您将捕获所有异常,这可能导致无法检测到不同异常是否重新出现的错误。
1 2 3 4 5 6 | for i in range(len(grid)): for j in range(len(grid[i])): try: count = count > int(grid[i][j]) ? count : int(grid[i][j]) except: pass |
1 | result = x if a > b else y |
是三元运算符
什么都不做的声明是
1 | pass |