我在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
Run Code Online (Sandbox Code Playgroud)
如果发现异常,我该怎么办?
谢谢.
让我们正确编写代码.
我们想迭代网格的每个单元格.那样做吧.不要创建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)
)
Run Code Online (Sandbox Code Playgroud)
您可以使用pass, 但...在 Python 3.x 中也是同义词,它非常适合编写伪代码。
我看到很多人pass在他们真正需要什么都不做的...地方使用,而在他们正在使用的地方使用它作为占位符。
class SomeInterface:
def do_something(self):
pass
class SomeImplementation(SomeInterface):
def do_something(self)
...
Run Code Online (Sandbox Code Playgroud)
这样可以轻松搜索...和查找您有未实现代码的区域,而不会出现来自pass.
请注意,传递异常通常是一种不好的做法,因为您实际上总是希望对异常采取行动。您绝对应该至少指定要捕获的确切异常,否则您将捕获所有异常,可能会导致您无法检测到是否有其他异常出现的错误。
| 归档时间: |
|
| 查看次数: |
13792 次 |
| 最近记录: |