我在python中有try-except块,我想在发生异常时什么都不做。我的代码如下:
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
如果发现异常,我该怎么办?
感谢。
答案 0 :(得分:14)
pass
是您要查找的关键字。
答案 1 :(得分:7)
让我们正确编写代码。
我们想迭代网格的每个单元格。所以那样做。不要创建迭代的数字列表(range
),然后用它们重新编入索引.Python的for循环直接使用容器。它既方便又易于理解。不要打架。
Python中没有?:构造。有x if y else z
构造,但这不合适。您显然正在尝试将count
设置为其当前值和单元格值的最大值。有一个内置的功能。
你真的想要所有这些细胞的最大值。所以直接要求;不要以为你必须自己实施高水位线算法。你没有。 (这也可以保护您不必选择count
的初始值,这可能是错误的。)我们不需要为此进行迭代。我们可以使用生成器表达式指定要传递给max
的值列表。
您想要“忽略”无法转换为整数的值。尽管您的其他代码可能存在问题,但如果首先可能存在这样的值:我们可以简单地进行测试,并筛选出未通过测试的值。
因此:
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)
)
答案 2 :(得分:4)
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
答案 3 :(得分:4)
您可以使用pass
,但{3}}在Python 3.x中也是同义词,这对编写伪代码很有用。
我看到很多人使用pass
他们确实无需做任何事情,同时使用...
将其用作占位符。
class SomeInterface:
def do_something(self):
pass
class SomeImplementation(SomeInterface):
def do_something(self)
...
这样可以轻松搜索...
并查找未实现代码的区域,而不会出现pass
的误报。
请注意,传递异常通常是一种不好的做法,因为您几乎总是希望对异常采取行动。你至少应该指定你想要捕获的确切异常,否则你将捕获所有异常,可能导致你无法检测到的错误,如果一个不同的异常重新出现它。
答案 4 :(得分:0)
result = x if a > b else y
是三元运算符
不做任何陈述是
pass