マスターPython。 オンス2。枝、サイクル+練習。

画像

Python言語の単純な構造:分岐とループには、他の言語と比較して独自の特性があります。 したがって、私はまだこれに時間を費やして伝えることにしました。 素材はとてもシンプルです!

また、読者の要望に応じて、彼は記事の最後に、対象となる資料を明確に示すための簡単なプログラムの分析を追加しました。



If条件文





ここではすべてが明確だと思います:



 if 1: 1 elif 2: 2 else: 3
      
      







短い書き方もあります(Cの三項演算子のアナログ):



X = A if else B







フォームのデザインを置き換えます。



 条件の場合:
     X = A
その他:
     X = B 


例外キャッチ





一般的なビュー:



 試してください:
    ブロック1#インタープリターはブロック1を実行しようとしています
 (name1、name2)を除く:
    ブロック2#は、tryブロックでname1またはname2例外がスローされた場合に実行されます
 name3を除く:
    ブロック3#は、tryブロックでname3例外がスローされた場合に実行されます
を除く:
    ブロック4#は、発生した他のすべての例外に対して実行されます
その他:
    ブロック5#tryブロックで例外が発生しない場合に実行されます
最後に: 
    ブロック6#は常に実行されます




elseブロックは例外処理命令に追加されたため、tryブロックに例外がなかったか、インターセプトされて処理されたため、プログラムが続行したときにフラグに頼らずに状況を分離できました。

Pythonのelseコンストラクトもループに追加されます。



whileループ





一般的なビュー:



  while条件:
     block1
 else:#elseのオプション部分 
    ブロック2#は、ループの終了がbreakステートメントによって行われなかった場合に実行されます


break-ループを超えます

continue-ループの先頭(タイトルバー)にジャンプします



forループ





一般的なビュー:



  <iterable object>の<element>の場合:
     block1
    条件の場合:続行
    その他:休憩
     block2#ifステートメントを指定すると、実行されません
その他:
     block3#ループが終了しなかった場合に実行されます


使用例:



  >>> L = [(5.5)、(6.6)]

 >>> for(x、y)in L:#forループでのタプルの割り当て
 ...行終端記号を追加せずにx、y、#出力を出力
 ... 

 5 5 6 6




2つのリストの共通要素を見つける典型的なタスクを考えてみましょう。 たとえば、セットを使用するなど、まったく異なる方法で解決できますが、この場合はネストされたforループを使用するソリューションに興味があります。



  list1のelem1の場合:
     list2のelem2の場合:
         elem1 == elem2の場合:
             elem1、u 'element found'を出力します
            破る
        その他:
            印刷elem1、u「見つかりませんでした」


ただし、in演算子を使用することにより、この問題はforループを1つだけ使用して解決できます。



  list1のelemの場合:
     list2のelemがif(elem、 'not found')の場合、プリント(elem、 'found')




この場合、in演算子自体がリストを走査して要素を検索します。 このソリューションは、最初のソリューションよりも高速に動作します。 したがって、可能な場合はすべて、すでに説明した言語構成を使用することをお勧めします。



Pythonのループに関連するトピックは、イテレーターの概念です。 ところで、このトピックハブの今日の数字で説明されていた 特にこの記事では、実用的な例を書くときに、そこに記載されているいくつかのポイントを使用しました。 たとえば、enumerate()関数一般的に、Pythonによるロシア語の多数の資料の同時出現の傾向は非常にポジティブです。



練習する





問題文:現在の日付から特定の期間における特定の通貨のレートの変化のグラフを作成します。



drawCurrency()関数は、入力として4つのパラメーターを受け入れます。





実装:


dumpz.org/4991



仕事の結果:




画像



説明:




ロシア連邦中央銀行は、 www.cbr.ru / scripts / Root.aspで、 Webサービスを操作するためのインターフェースの説明を提供しています。 したがって、開始日と終了日、および通貨識別子を含む特定のリンクをたどることができ、その結果、毎日の為替レートを含むXMLドキュメントを受け取ります。 次に、解析を実装します。

getData()関数は、日付の処理にdatetimeライブラリを使用し、XMLの解析にxml.domを使用して、実装の作業のこの部分を実行します。 関数の出力は、3つのオブジェクトを含む辞書です。



画像を拡大縮小するには、最後の2つの要素が必要です。 それらは後で決定できます。 しかし、この場合、組み込みデータ型の助けを借りて、コンマで区切られた複数のオブジェクトを持つ関数を実際に返すことができる方法を示したいと思いました。



try / exceptコンストラクトも関数内で使用されます。 中央銀行サーバーからドキュメントを取得できなかった場合、または誤った値が関数入力に転送された場合、parse()関数は例外をスローし、その後、プログラムロジックは例外ハンドラーに移動し、ここで関数はNoneオブジェクトを返します。

jのループ、列挙のキー(currency.keys()):drawCurrency()関数の本体で、通貨辞書を走査します。 それぞれについて、getData()関数が呼び出され、チャート上の為替レートの表示色がランダムに生成され、入力に転送されるすべての通貨間のレートの最小値と最大値も決定されます。

その後、各通貨のグラフの順次描画が実行されます。



いくつかのポイントの明確化が必要な場合は、コメントで回答します。 次の記事で、 クレッグは機能のトピックを詳細に拡張することを計画しましたが、記事が並行して登場することを考えると、今のところ彼がそれを行うかどうかわかりません。 ますます面白くなってきています))



All Articles