バグを見つけるためのPythonコード(10)
前の期間のコード設計要件:
3行3列の2つのマトリックス:
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
対応する位置にデータを追加し、新しいマトリックスを返してください。
コードは次のように表示されます:
バグを見つけるためにコードを注意深く読んでください!
**正解:**合計2つの質問があります。 (回答時間については、正解の数を確認してください)
(1)1つは本当のバグです。 range()メソッドのパラメーターに注意してください。Xマトリックスリストの長さは最大サイクル数であると予想されるだけでなく、Xリストのインデックスとなるループ変数iの値の範囲も同様です。したがって、インデックスは0からカウントされるため、開始値は1ではなく0にする必要があります。したがって、len(X)に1を追加する必要はありません。次のネストされたループについても同じことが言えます。
(2)もう1つは、コードの最適化が必要な問題ですが、プログラムが機能するため、完全にバグとは見なされません。ただし、繰り返しコードを記述しないことを含め、コードは可能な限り簡潔にする必要があると言っています。多くの場合、問題の解決についての考え方は、コードの複雑さに直接影響します。上記のコードでは、マトリックス操作の戻り値を格納するために空のリストRを定義します。したがって、次のサイクルの最初のラウンドで、空のリストZを定義して、サイクルの2番目のラウンドでXマトリックスとYマトリックスの対応する行を追加した結果を格納します。サイクルは終了します。この結果、 Rリストに追加できます。アイデアに問題はないようですが、もっと簡潔にできますか?最初から2次元のR行列を定義してみませんか?このように、X行列とY行列の計算結果を直接Rに直接更新することはできませんか?そうです、間違いなくこんな感じです。ただし、この2つの違いは正式なものではなく、習慣的な思考の複雑さです。私たちは常に、多次元の並列思考モードではなく、1次元の線形方法を使用して問題を順番に検討することに慣れています。このケースは、私たちがそのような問題について考えるのを助けるために起こります。考えてみてください、X [i]とX [i] [j]の違いは何ですか?どちらがより効率的ですか? Pythonが常に比較的複雑なデータ構造を定義する理由は、問題を処理するロジックを単純にするためです。結局のところ、問題を処理することが目標です。
したがって、正しいコードは次のようになります。
コメント:このコードはバグを見つけます。主な目的は次のとおりです。
(1)マトリックスを学び、多次元データの表現を認識します。
(2)基本的な文法を統合し、range()メソッドの複数のパラメーターのアプリケーションを習得します。
(3)複雑なデータ構造の熟練したアプリケーション能力を訓練する。
上記のコードを理解するのが難しい学生は、Gaoduから送信された「Introductionto Python」、またはGaoduWebサイトのビデオコース「IntroductiontoPythonEasy」を読んで学習してください。
この問題のコード設計要件: 2つの変数の値を交換します。
コードは次のように表示されます:
比較的複雑な問題を何度か試した後、この問題は単純です。もちろん、上記のコードはまだバグがあります。見つけて、メッセージに投稿して、明日答えてください。
**正解は明日発表されます。 ****
注意:従来、すべてのコードはPythpn3に基づいています。
Recommended Posts