バグを見つけるためのPythonコード(7)
前期のコード設計要件
猿が桃を食べることの問題点:猿は初日にいくつかの桃を摘み取り、すぐに半分を食べましたが、それだけでは不十分で、もう1つ食べました。翌朝、残りの半分を食べ、もう1つ食べました。その後、毎朝前日の半分と残り半分を食べました。 10日目の朝にまた食べたいと思ったら、桃が1つしか残っていないのがわかりました。初日に何人が選ばれましたか?
コードは次のように表示されます:
バグを見つけるためにコードを注意深く読んでください!
**正解:**合計3つのバグがあります。 (回答時間については、正解の数を確認してください)
(1)range()メソッドの3番目のパラメーターは-1であることに注意してください。これは、ループの逆(または降順)であることを示します。サイクル数は最初の2つのパラメーターによって決定されます.2番目のパラメーターは0であるため、最初のパラメーターのサイズがサイクル数を決定します。それで、何回ループする必要がありますか?計算する必要がある結果は、10日目の朝に見た桃の数に基づいており、10日目に食べた後に残った数ではないため、タイトルで合意されたルールによれば、サルは実際には9日間しか食べませんでした。 10日ではなく。したがって、アルゴリズムのループ数は10ではなく9にする必要があります。
(2)2番目の明らかな問題は、print()メソッドの使用です。これもPython3バージョンであるため、括弧()を含める必要があります。
(3)3番目のバグは「タイプミス」のようです。この文を理解しているのは、forループのコードブロックx1 = x2の2行目です。文法的な観点からは、x2の値をx1に割り当てるのは割り当てステートメントです。上記のコード行はx1を計算するだけではありませんか?サイクルの翌日の桃の数を計算しませんか?なぜx2をx1に再度割り当てるのですか?それの結果は何ですか? ...ハハ!このようにして、x1を1に等しくロックするため、ループと計算の方法に関係なく、最終的にx1 == 1になります。間違いだったに違いないようです。それでは考えてみましょう。最初のサイクルの後、最終日から2日目の桃の数x1から最終日の桃の数x2 = 1までを計算しました。その後、再度リサイクルする場合でも、翌日の桃の数を使用して前日の桃の数を計算します。このときの「翌日」の桃の数は、元のx2のままだと思ったことはありませんか。確かにそうではありません、いくらですか?明らかに、計算されたばかりのx1の数は、相対位置が逆のサイクルを1日進んだためです、OK、突然何かを考えましたか?はい、x1 =(x2 + 1)* 2の直後は、x2 = x1である必要があり、同時にx1の新しい値をx2に割り当てます。ははは、そうです、x1 = x2は逆に書かれていますか? !恥ずかしい、恥ずかしい!誤植、事務上の誤り!どうしてそのような事務的な誤りがあるのでしょうか?逆がまったく同じではないことを知りませんか?本当に代数だと思いましたか?ガールフレンドが別れたからですか?だから、安定したガールフレンドを持つプログラマーの重要性について...ねえ、それは簡単ではありません!
正直なところ、プログラマーは、コードを書くときに論理エラーを恐れないことがあります。これは、2番目の派生物が見つかるためです。また、エディターがそれを見つけるのに役立つため、構文エラーを恐れません。このような奇妙な「誤植」が怖いので、読んでみると戸惑います。理由はわかりませんが、あえて変更するつもりはありません。コードブロック全体をはっきりと勉強する必要があります。その後は安心です。あえてこの「パパ」に触れました。いや、「パパ」ではありません。パパはだまされていたので、あえてこの「パパ」に触れてください!
さて、もう少し経験を積んできたと考えてみましょう。これからは、仲間に注意する必要があります。バグはありますが、そのような「不正な」バグはない方がよいでしょう。
したがって、正しいコードは次のようになります。
コメント:昨日のバグ発見の主な目的:
(1)もう一度、range()パラメーターの知識を統合し、逆サイクルの使用方法を学びます。
(2)print()メソッドの使用を統合します。
(3)割り当てステートメントの使用を統合して、任意のコードを防止します。
上記のコードを読むのが難しい学生は、** Gaodu Express の前にある「IntroductiontoPython」、または Gaoduウェブサイト**の「GettingStartedwithPythonEasy」のビデオコースを読んで学習してください。
**この問題のコード設計要件:**再帰的アルゴリズムを使用して5つを見つけてください!
需要分析:
まず第一に、これは素晴らしい質問です。再帰的アルゴリズムはプログラミングで一般的に使用されるアルゴリズムであり、非常に重要なアルゴリズムでもあるためです。再帰的アルゴリズムは、機械学習への最短パスを見つける際に使用されます。したがって、それを学ぶことは本当に重要です!
もちろん、再帰的アルゴリズムは複雑ではなく、非常に単純なアルゴリズムです。多くの人は、それがどれほど複雑であるかではなく、少し抽象的なために、それをいくらか恐れています。多次元空間やネストされたループのように、それは少しブレインストーミングです。
そこで、今日は再帰的アルゴリズムを使用して数値の因数分解を計算します。これは非常に良いケースです。覚えておくことをお勧めします。忘れたら、それを見て、何が起こったかをすぐに思い出すことができます。アップ。
さて、再帰的アルゴリズムとは正確には何ですか?
簡単に理解すると、再帰アルゴリズムは次のとおりです。最初に関数を作成する必要があります。この関数には計算ルールが含まれます。これは単純に計算として理解できます。重要なことは、この計算の一部がまだ関数自体を呼び出しているということです。これの目的は、その計算ルール(計算)を繰り返し使用することです。そうは言っても、頭のいい人には間違いなく疑問があります。繰り返し自分に電話をかけると、無限のループになりませんか?そのとおり!したがって、この式を使用するだけでは不十分であり、再帰アルゴリズムには出口が必要です。この出口は、関数の戻り値によって決定されます。関数の戻り値が特定の値になると、その計算は関数を呼び出さなくなりますが、最終的な計算結果が得られます。
コードは次のように表示されます:
**もちろん、上記のコードはバグがあります。それで、バグはどこにありますか? ****
それを見つけて、メッセージに投稿して、明日答えを出してください。
注意、フォーマット文法の詳細には特に注意してください。
Recommended Posts