ちょっと私が知りたいと思っていたPythonには新しく、私はそれを提出する前にこれを正しくしていますか?あなたは、エラーの種類を上げ、行列が正方形であるかどうかを決定するためのロジックを変更する必要が行列が正方形であることを確認してください
inverse = []
matrix = [[1, 2] , [3, 4]]
if len (matrix) != len(matrix [0]):
raised (‘The matrix must be square’)
ちょっと私が知りたいと思っていたPythonには新しく、私はそれを提出する前にこれを正しくしていますか?あなたは、エラーの種類を上げ、行列が正方形であるかどうかを決定するためのロジックを変更する必要が行列が正方形であることを確認してください
inverse = []
matrix = [[1, 2] , [3, 4]]
if len (matrix) != len(matrix [0]):
raised (‘The matrix must be square’)
:
inverse = []
matrix = [[1, 2], [3, 4]]
if len(matrix) != len(matrix[0]) and len(set(map(len, matrix))) != 1:
raise AttributeError('The matrix must be square') #or error of your choice
カスタムエラーを生成したい場合は、あなたがExceptionから継承することができ、 __str__
を上書き:
class MatrixLenError(Exception):
pass
matrix = [[1, 2], [3, 4]]
if len(matrix) != len(matrix[0]) and len(set(map(len, matrix))) != 1:
raise MatrixLenError('The matrix must be square')
あなたのコードは動作しますが、そのような[[1,2], [1,2,3]]
などのマトリックスのためではないでしょう。
まず、方法でこのロジックをカプセル化:
def is_squared(matrix):
# Check that all rows have the correct length, not just the first one
return all(len(row) == len(matrix) for row in matrix)
次に、あなたができるだけ:
inverse = []
matrix = [[1,2], [3,4]]
if not is_squared(matrix):
raise AttributeError("The matrix must be squared")
ご協力いただきありがとうございます – Dcollins
'クラスMatrixLenError(例外):合格。 MatrixLenError( "行列は正方形でなければなりません")も引き上げてください - それ以降のバージョンでは '__str__'をオーバーライドする必要はありません。 –
良い提案ですが、OPが行列が2乗されているかどうかのチェックに関連する特定のロジックを求めていると思います –
また、最初の行だけでなく、すべての行の長さを比較する必要があります。 –