6

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

例外がキャッチされたときに何もしない方法を教えてください。

ありがとう。

4

5 に答える 5

24

pass探しているキーワードです。

于 2012-02-11T20:23:28.717 に答える
9

コードを正しく書きましょう。

  • グリッドの各セルを反復処理します。だからそれをしなさい。繰り返し処理してからインデックスに戻すために使用する数値のリスト(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)
)
于 2012-02-11T20:42:31.557 に答える
5

を使用できますが、Python 3.x では同義語でpassもあり、疑似コードを記述するのに適しています。...

多くの人passが本当に何もする必要のない場所を使用し、使用し...ている場所をプレースホルダーとして使用しているのを目にします。

class SomeInterface:
    def do_something(self):
        pass

class SomeImplementation(SomeInterface):
    def do_something(self)
        ...

これにより、...実装されていないコードがある領域を簡単に検索して見つけることができ、pass.

事実上常に例外に対処したいため、例外を渡すことは一般的に悪い習慣であることに注意してください。少なくとも、キャッチしたい正確な例外を指定する必要があります。そうしないと、すべての例外がキャッチされ、別の例外が発生した場合に検出できないバグが発生する可能性があります。

于 2012-02-11T20:32:02.397 に答える
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
于 2012-02-11T20:23:12.907 に答える
0
result = x if a > b else y

三項演算子です

何もしないステートメントは

pass
于 2012-02-11T20:39:27.503 に答える