Pythonの初級学習

第 1 章 Python を学ぶ理由

優秀なプログラマーは、より高い報酬や世間の称賛のためにプログラミングをしているわけではなく、ただそれが楽しいと思っているだけです。
——Linux の父、Linus TorvaIds 氏

実用的な学習者として最も気になるのは、「なぜ Python を学習する必要があるのか​​、また学習後は何に使えるのか?」ということでしょう (まず、初心者にとって、Python は他のプログラミング言語よりも学習が簡単です
) . Easy to use.
Python の設計哲学はエレガントで明確でシンプルです. 公式の The Zen of Python) Python Zen) にはこんな一文があります。

それを行う明白な方法は 1 つ、できれば 1 つだけである必要があります。

Python が求めるのは、最適な解決策を見つけることです。対照的に、他の言語は複数の解決策を追求します。
よく書かれた Python コードを読もうとすると、英語を読んでいるように見えます。これは Python の最大の利点でもあり、言語自体を理解するのではなく、問題を解決することに集中できます。
ここに画像の説明を挿入
次に、Python は強力なので、心配すべき多くのことを Python が代わりに処理してくれます。Python 言語でプログラムを作成する場合、プログラムで使用されるメモリの管理方法などの低レベルの詳細について考える必要はありません。また、Python には公式のものからサードパーティが開発したものまで非常に豊富なライブラリがあり、やりたい機能モジュールは誰かが書いたものである可能性が高く、車輪の再発明をせずに呼び出すだけで済みます。スマートフォンを所有しているようなもので、必要なアプリをインストールできます。
ここに画像の説明を挿入
ここに画像の説明を挿入
この漫画は、Python ライブラリがいかに強力であるかを説明しており、反重力ライブラリをインポートすることで飛行できるようになります。

第三に、Python でできることはたくさんあります。Web サイトのバックエンド プログラマー: Python を使用して Web サイトやバックグラウンド サービスを構築すると、保守が容易になります。新しい機能を追加する必要がある場合、Python を使用すると

簡単に実装できるようになります。ただし、php を使用する場合は、コードを書き直す必要があることがよくあります。有名な Web サイトの多くは Python を使用して開発されています。
ここに画像の説明を挿入
運用と保守の自動化: 運用と保守はますます自動化される傾向にあり、多数の運用と保守タスクがバッチで処理されます。
システム管理における Python の利点は、その強力な開発機能と完全なツール チェーンにあります。
データ アナリスト: Python の迅速な開発機能により、プログラム自体に時間を無駄にすることなく、アイデアを迅速に検証できます。また、豊富なサードパーティ ライブラリによってサポートされているため、時間を節約することもできます。
ゲーム開発者:一般的にはゲームスクリプトとしてゲーム内に埋め込まれますが、ゲームエンジンの高性能を活用できるだけでなく、スクリプト開発のメリットも享受できるのがメリットです。ゲームを再コンパイルすることなく、スクリプトの内容を変更するだけでゲーム内容を調整できるので非常に便利です。
自動テスト: テストを行うには、スクリプトの特性を習得する必要があり、スクリプトの設計に効果的です。現在、Python の方が人気のあるスクリプトです。

あなたがアマチュア開発者で、必要なものを手早く作り、少ないリソースで生活上の問題を自動的に解決したいだけであれば、Python はこれらのタイプのことを行うのに役立ちます。

Web サイト開発
機能豊富なフレームワーク django、fask、および豊富なデザイン テンプレートのブートストラップを利用すると、独自の Web サイトをすばやく構築でき、モバイル対応にすることもできます。
ここに画像の説明を挿入
データマイニングとバッチ処理を実現するためにクローラを使用します。
クローラの本質は、Web ページのデータを取得するために人間を模倣することです。大量のデータを取得する必要がある場合、または継続的に取得する必要がある場合、Python を使用すると迅速にそれを行うことができ、繰り返しの労働時間を節約できます。例: Weibo プライベート メッセージ ロボット、アメリカのドラマの一括ダウンロード、投資戦略の実行、格安航空券のスワイプ、適切な住宅情報源のクローリング、システム管理者のスクリプト タスクなど。
ここに画像の説明を挿入
プログラムを他の言語で再パッケージ化する
Python は、c/c++/java および他の言語のライブラリを混合コンパイル方式で使用できるため、グルー言語とも呼ばれます。また、マイクロコンピュータであるRaspberry Piも主な開発言語としてPythonを使用しています。
ここに画像の説明を挿入
最後に、プログラミング言語を選択するための簡単なテストが付いているので、必要に応じて学習する言語を選択できます。
ここに画像の説明を挿入

第2章が始まります

2.1 Python環境をインストールする

Python の学習を始める前に最も重要なことは、はい、Python 環境をインストールする必要があります。多くの初心者は、バージョン 2.x を選択するかバージョン 3.x を選択するかという問題に悩まされると思いますが、私の意見では、世界の変化のスピードはますます速くなり、言語の更新のスピードも同じです。私たちが過去にこだわって前を向かない理由はありません。Python 3.x はますます人気が高まっており、多くの優れた新機能を備えているため、これを拒否する理由はまったくありません。人生の困難が短く、Python が必要であることを理解している場合は、この
「未来志向」の開発モデルを選択する必要があります。
したがって、私たちの教材は最新の Python 3.x バージョンに基づいています。お使いのコンピューターに対応するバージョンがあることを確認してください。

2.1.1 Windows に Python をインストールする

最初のステップ
は、Windows バージョン (64 ビットまたは 32 ビット) に応じて、Python の公式 Web サイトから対応する Python 3.5 をダウンロードすることです。さらに、Windows 8.1 では Python 3.4 を選択する必要があります。アドレスは次のとおりです: Python 3.5 64 -bit インストーラー https://
www . Python.org/ftp/Python/3.5.0/ Python_3.5.0_amd64.exe
Python 3.5 32 ビット インストーラーhttps://www.Python.org/ftp/Python/3.5.0 / Python_3.5.0.exe
Python 3.4 64 32 ビット インストーラーhttps://www.Python.org/ftp/Python/3.4.3/ Python_3.4.3.amd64.msi
Python 3.4 32 ビット インストーラーhttps://www. Python.org/ftp/Python/3.4. 3/
Python_3.4.3.msi のインターネット速度が遅い学生は、国内ミラーhttp://pan.baidu.com/s/1bnmdlZxに移動してください。次に、ダウンロードした EXE インストールを実行します。パッケージ:
ここに画像の説明を挿入
特に「Python 3.5 を PATH に追加」にチェックを入れ、「今すぐインストール」をクリックしてインストールを完了します。デフォルトでは、C:\Python35 ディレクトリにインストールされます。
第二段階

コマンド プロンプト ウィンドウを開き (方法は、y をクリックして "-y run" - input: ycmd" を開始します)、Pxthon と入力すると、次の 2 つの状況が表示されます。

  • ケース 1:

ここに画像の説明を挿入
上の画面を見ると、Pxthon が正常にインストールされたことを意味します!
プロンプト >>> が表示されます。これは、すでに Pxthon 対話型環境に入っていることを意味します。任意の Pxthon コードを入力でき、ボタンを押すとすぐに実行
結果が得られます。入力。
ここで、「eXit((」と入力して Enter キーを押すと、 Pxthon 対話型環境を終了できます(コマンド ライン ウィンドウを直接閉じるか、ショートカット キー yCtrl を使用します) C" も使用できます)。

  • ケース 2: エラーが発生する:

:Python' は、内部コマンドまたは外部コマンド、操作可能なプログラム、またはバッチ ファイルとして認識されません。

ここに画像の説明を挿入
これは、Windows が Path 環境変数で設定されたパスに従って Python.exe を検索し、見つからない場合はエラーが報告されるためです。インストール時に [Python 3.5 を PATH に追加] のチェックを省略した場合は、Python.exe が配置されているパスを手動で Path に追加する必要があります。
環境変数の変更方法がわからない場合は、Python インストール プログラムを再度実行し、必ず [Add Python 3.5 to PATH] にチェックを入れることをお勧めします。

2.1.2 Mac に Python をインストールする

Mac を使用しており、システムが OS X 10.8 ~ 10.10 の場合、システムに付属する Python のバージョンは 2.7 であるため、最新の Python 3.5 をインストールする必要があります。

最初の一歩:

  • 方法 1:

Python 公式 Web サイトから Python 3.5 インストーラーをダウンロードします。
リンク: https://www.Python.org/ftp/Python/3.5.0/Python-3.5.0-macosx10.6.pkg
インターネット速度が遅い学生の場合は、次のリンクに移動してください。国内ミラーへ: http://pan.baidu.com/s/1sjqOkFF

Mac のインストールは Windows よりも簡単で、[続行] をクリックするだけでインストールを完了できます。
ここに画像の説明を挿入

  • 方法 2:
    Homebrew がインストールされている場合は、brew install Python3 コマンドを使用して直接インストールします。
    第 2 ステップ
    不安がある場合は、もう一度確認してください。操作方法は、ターミナルを開いて 3ython と入力します(3ython も 3ython も入力しません)。
    ここに画像の説明を挿入
    このような結果が得られます。これはインストールが成功したことを意味します。

2.1.3 Linux への Python のインストール

幸いなことに、ほとんどの Linux システムには Python 環境が組み込まれており、たとえば、Ubuntu にはバージョン 13.04 以降、Python 2 および Python 3 環境が組み込まれています。
Python のバージョンを確認したい場合は、ターミナルを開いて次のように入力します。

python3 --version

Python 3 のバージョンを確認できます。
特定のバージョンの Python をインストールする必要がある場合は、ターミナルに次の行を入力します。

sudo apt-get install python3.5

このうち 3.5 は必要なバージョンに置き換えることができ、現在の Python の最新バージョンは 3.5 です。

2.2 IDE ツールの使用

環境をインストールした後、プログラマ固有のツールを構成する必要もあります。
デザイナーが Photoshop を使用して写真を作成し、プロダクト マネージャーが Axure を使用してプロトタイプを作成するのと同じように、プログラマーも次のようなプログラミング ツールを使用します。チュートリアル 使用されているバージョンは現在最新バージョン 3.4 です。公式 Web サイトのダウンロード リンクは次のとおりです: https://www.jetbrains.com/PyCharm/
コミュニティ バージョンは無料、プロフェッショナル バージョンは有料です。初心者にとって、2 つの違いは最小限であり、コミュニティ エディションを使用するだけで十分です。
ここに画像の説明を挿入
この時点でPython開発のための環境とツールが整いましたが、PyCharmの使い方は非常に簡単なので追加のチュートリアルを学ぶ必要はほとんどなく、安心してプログラミングを始めることができます。
学生の中には質問があるかもしれませんので、ここで答えます。

  • Python インタープリターをインストールする必要がないのはなぜですか?
    Python 公式 Web サイトから Python 3.5 をダウンロードすると、正式版のインタープリターが付属するため、再度インストールする必要がありません。
  • Sublime のようなテキスト エディタを使用してみてはいかがでしょうか?
    テキストエディタは lDE に比べて比較的軽量なため、機能が貧弱で、特にデバッグ時に多くの問題が発生します。
  • lDE をインストールせずにコマンドラインまたはターミナルで直接プログラムできますか?
    できる。しかし、コマンド ラインで完全なコードを保存するのは非常に面倒です。最も重要なことは、エディターが対話型であることです。誤って間違ったコードを手動で書いてしまうと、修正できず、再度入力する必要があります。時間を大切にし、道具を上手に活用しましょう。
  • PyCharmのデフォルトのテーマカラーは白ですが、黒に変更するにはどうすればよいですか?
    Windows ユーザー
    ステップ 1: 「ファイル」メニューで「設定」オプションを選択します。
    ここに画像の説明を挿入
    ステップ 2: 「IDE 設定」で「外観」オプションを選択します。
    ここに画像の説明を挿入
    ステップ 3: 右側の「テーマ」のドロップダウン ボックスをクリックして、対応するテーマ:
    ここに画像の説明を挿入
    「Darcula」を選択し、「OK」をクリックすると、テーマが黒に設定されます。

マックユーザー

メニューの外観でテーマを darcula に変更する
ここに画像の説明を挿入
と、黒い肌が得られます

また、文字の色を変更したい場合は「色とフォント」で変更することができます。チュートリアルではテーマ「Monokai」を使用しています。
ここに画像の説明を挿入

第 3 章「基本」の基本的な変数と文字列

3.1 プログラミングの学習を始める

初心者がよく遭遇する混乱は、本を読んだり、講義を聞いたりしてすべて理解できるのに、プログラミングの方法がまだ理解できないことです。それは練習が足りないからです。
幼児期に言葉を習得するときと同じように、私たちは最初は親の発音を真似し、その後徐々に自分の考えを表現できるようになります。プログラミングの学習でも同様です。このチュートリアルを読んでいるときは、手本を真似てコードを入力する必要があります。トラブルを恐れず、簡単すぎると思わないでください。中国語の句読点は依然として英語の句読点です。文間の論理的な関係として。もちろん、自分で書いたプログラムがうまく動くようになったときの喜びも大きいです! このプログラムを使って数学の問題を計算したり、小さな機能を実現したりできます! 一つ一つの練習をステップバイステップで進めていきます模倣から抜け出し、創造を始める能力を身につけるまで。
したがって、読みながら lDE を開き、見ながらコードを入力する必要があります。環境のインストール手順で問題が発生した場合は、前の章に戻って読んでください。
準備ができたら、私と一緒に来てください。

3.2 変数

簡単に言うと、変数はプログラミングにおける最も基本的な記憶単位であり、変数には変数に入力した内容が一時的に保存されます。
『銀河ヒッチハイク・ガイド』では、生命、宇宙、そして万物に対する究極の答えは421であるとされており、これをプログラミング言語で表現すると次の方程式となり、「答え」という変数に値42が代入されます。誰もが名前を持っているのと同じように、変数の名前は識別子と呼ばれます。
ここに画像の説明を挿入
それでは、変数に値を代入してみましょう。このステップを最も簡単に完了するには、Windows ユーザーはコマンド ラインを開いて Python と入力して Enter キーを押し、Mac ユーザーはターミナルを開いて Python3 と入力して Enter キーを押し、次の図の赤いボックスにコードを入力して値を割り当てます。それぞれ 4 つの変数に設定します。もう一度 a を入力して Enter キーを押すと、割り当ての結果が表示されます。次に b、c、d と入力して対応する値を確認します。Python では大文字と小文字が区別され、「a」と「A」は同じではなく 2 つの異なる変数になることに注意してください。
このようにして、変数に名前を付けることを学び、変数は常に呼び出されます。
ここに画像の説明を挿入
ここに画像の説明を挿入
印刷は Python で最も一般的に使用される関数ですが、その名前が示すように、print() の関数は単に印刷結果を表示するものとして理解されます。使用方法は、印刷したいオブジェクトを括弧内に入れて結果を表示するだけです。(括弧なしで印刷を使用できる場合は、Python のバージョンを確認してください。プログラミングの概念を簡単に理解し、迂回路を避けるために、以下のすべての例は Python 3.x で実装されます。) コマンド ラインまたはターミナルに
print(a) を直接入力すると、次のような結果が得られます。これは、変数の割り当てを忘れたためであり、Python は存在しないオブジェクトを出力できません。
ここに画像の説明を挿入
今後の学習では、まだ「印刷」するものがたくさんあり、何が印刷されるかを知る必要があります。たとえ変数が理解するのに最も簡単な基礎知識であっても、簡単さのために任意に名前を付けないでください。また、Python の読みやすさを維持する必要があります。
次のコードを見てください。今は詳細が分からなくても、読めばこのコードが何をするのか推測できるでしょう。

file = open('/Users/yourname/Desktop/file.txt','w') file.write('hello world!')

これは最初に入力したコードなので、ここでさらにいくつか説明します。まず、文法上の問題に注意し、英語の句読点を使用し、大文字と小文字を間違えないようにし、スペースを少なくしないようにする必要があります。次に、ファイル パスの問題に注意してください。デスクトップに file.txt を置く必要はありませんが、コンピュータ上のデスクトップ ファイルのパスを知って、それを置き換える必要があります/Users/yourname/Desktop/ファイル パスを表示する方法は、Windows ユーザーがエクスプローラーでデスクトップ上のファイルを開いてパスを表示することです。Mac ユーザーはターミナルを開いて、デスクトップ上にファイルをドラッグしてパスを表示します。
このコードは、デスクトップ上の le.txt ファイルを開き、Hello World と書き込みます↓w は、デスクトップ上に le.txt ファイルがあれば直接 hello world を書き込み、le.txt ファイルがない場合は、このようなファイルを作成します。
インターネット上には多くのコードやチュートリアルが存在しますが、このコードが一見何を意味するのか理解できない場合、その半分以上は不明瞭な変数名による混乱です。したがって、以降のチュートリアルでは、たとえ非常に冗長であっても、コンピューターの基礎を持たない人でもコードを理解できるように、明確な名前付け方法を使用します。
ネーミングの習慣を維持するには、できるだけ英語のネーミングを使うとよいでしょう。プログラミングを学びながら単語も覚えられるので一石二鳥ではないでしょうか? しばらくすると、英語のチュートリアルが読めるようになりますスムーズに。
まずはここで多くのことを学び、より詳細な紹介は後ほど紹介します。

詳細情報:
ハンプ命名法https://zh.wikipedia.org/wiki/ハンプ式パスカル
命名法https://zh.wikipedia.org/wiki/パスカル命名法

3.3 文字列

文字列は何ですか

上の文字列についてはすでに触れましたが、非常に簡単に言うと、文字列は...
ここに画像の説明を挿入

3.3.1 文字列の基本的な使い方

ここで、文字列の基本的な使用法であるマージについて理解してみましょう。GCD に次のコード (つまり、前に推奨した Ky:harm) を入力してください。コードは GCD で自動的に実行できないため、手動でクリックして実行する必要があります。方法は、右クリックして [実行] を選択することです。ファイル名 '" にコードを実行します。

what_he_does = ' plays ' his_instrument = 'guitar' his_name = 'Robert Johnson'
artist_intro = his_name + what_he_does + his_instrument

print(artist_intro)

出力は次のようになっていることがわかります。
ここに画像の説明を挿入
退屈だと思うかもしれませんが、実際には、このコードとインターフェイスは下の図のようなもので、音楽プレーヤーでよく見るものと似ています。ロバート・ジョンソンはアメリカの有名なブルースギタリストで、悪魔と魂を交換した人物として知られています。
上で変数について説明したときに、いくつかの変数が異なる形式で割り当てられていたことに気づいたかもしれません。lDE でこれを試してみましょう:

num = 1
string = '1'

print(num + string)

必ず次の結果が得られます。その理由は、文字列 (string) は Python のデータ型の 1 つにすぎず、別のデータ型は整数 (integer) と呼ばれ、異なるデータ型を組み合わせることができないためです。会話。
ここに画像の説明を挿入
ちなみに、変数の型が分からない場合は、type()関数を使って型を調べることができます。以下のように実証されました。さらに、中国語のコメントはエラーの原因となるため、ファイルの先頭にマジック コメントを 1 行追加するか、設定で#coding:utf-8「ファイル エンコーディング」を見つけて UTF-8 に設定する必要があります。

print(type(word)) #IDE中

次に、データのデータ型を変換しましょう。変換された文字列を別の変数に保存する必要があります。次のように入力してみてください。


num = 1
string = '1'
num2 = int(string)

print(num + num2)

同じ型に変換した後、2 つの変数をマージできます。
もっと面白いことをしてみましょう。文字列を追加できるので、文字列を 2 で乗算することももちろん可能です。コードを入力してください:

words = 'words' * 3 print(words)

wordswordswords

さて、今度はより複雑な問題を解決してみます。

word = 'a loooooong word' num = 12
string = 'bang!'
total = string * (len(word) - num) #等价于字符串'bang!'*4 print(total)

この時点で、文字列の最も基本的な使い方をマスターしたことになります。

3.3.2 文字列の断片化とインデックス付け

文字列は、string[x]、つまり [] を追加することでインデックス付けおよびスライスできます。文字列スライス (スライス) は、実際には、文字列からインターセプトしたいものを見つけ出し、必要な長さの短いセクションをコピーし、文字列変更のソース ファイルを変更せずに別の場所に保存するものとみなすことができます。シャーディングによって取得された各文字列は、元の文字列のコピーとみなすことができます。
以下のコードを見てみましょう。文字列変数の背後にある不可解な数値について混乱していて手掛かりがない場合は、コードの下の表と照らし合わせて分析するとよいでしょう。さて、今度はより複雑な問題を解決しようとします。 「友達の中から悪魔を見つける」
ここに画像の説明を挿入
という言葉遊びをしてみましょうコードを入力する:

word = 'friends' find_the_evil_in_your_friends = \
word[0]+word[2:4]+word[-3:-1] print(find_the_evil_in_your_friends)

注: コード セグメントが長すぎる場合は、(' を使用してコード セグメントを折り返すことができます。行に属するコードには、行を表すインデントも含まれます。lDE の場合は、「Enter」を押すだけで、コード セグメントが自動的に折り返されます。 line、とっても便利ですよ!

ここに画像の説明を挿入

3.3.3 文字列メソッド

Pvthon はオブジェクト指向プログラミング言語であり、オブジェクトにはさまざまな機能や特性があり、
専門用語では yy メソッド(メソッド)と呼ばれます。理解を容易にするために、日常生活にある車を「物体」、つまり
自動車であると仮定します。そして、誰もが知っているように、車には多くの特徴や機能があり、その中でも「オープン」は車の重要な機能であるため、車のオブジェクトは - オープンの機能を使用し、PVthon プログラミングでは次のように表現できます。car.driⅤe()

ここに画像の説明を挿入
オブジェクトのメソッドを理解した後、そのようなシナリオを見てみましょう。ウェブサイト上でアカウント情報を登録する場合、携帯電話番号を使用することが多いですが、ユーザー情報の安全性を確保するため、通常はアカウント情報の下4桁のみが表示され、残りは「*」に置き換えられます。 "。文字列メソッドを使用して、この Function
ここに画像の説明を挿入
Enter コードを完成させてみます。

phone_number = '1386-666-0006'
hiding_number = phone_number.replace(phone_number[:9],'*' * 9) print(hiding_number)

その中で、「シェーディング」には新しい文字列メソッドを使用しますreplace()replace メソッドの括弧内の最初のphone_number[:9]部分は置換される部分を表し、後の部分は'*'*9置換される文字を表します。つまり、9 を乗じて 9 文字を表示します
次のような結果が得られます。次に、電話のアドレス帳の電話番号関連付け機能を:*********0006
シミュレートするために、より複雑な問題を解決してみましょう。コードを入力してください。
ここに画像の説明を挿入

search = '168'
num_a = '1386-168-0006'
num_b = '1681-222-0006'

print(search + ' is at ' + str(num_a.find(search)) + ' to '+ str(num_a.find(search) + len(search)) + ' of num_a') print(search + ' is at ' + str(num_b.find(search)) + ' to '+ str(num_b.find(search) + len(search)) + ' of num_b')

次のような結果が得られます。これは、168 を含むすべての携帯電話番号を表します。
ここに画像の説明を挿入

3.3.4 文字列フォーマッタ

ここに画像の説明を挿入
このような空白の埋め方には感動します。埋めなければならない文字列中にそのような「空白」が複数ある場合、.format()を使ってバッチ処理を行うことができます。その基本的な使用方法は次のとおりです。コード:

print('{} a word she can get what she {} for.'.format('With','came'))
print('{preposition} a word she can get what she {verb} for'.format(preposition = 'With',verb = 'came')) print('{0} a word she can get what she {1} for.'.format('With','came'))

この文字列埋め込み方法は広く使用されており、たとえば、次のコードは URL 内の空白の都市データを埋め込むことができます。

city = input("write down the name of city:")
url = "http://apistore.baidu.com/microservice/weather?citypinyin={}".format(city)

注: これは、Baidu が提供する天気 API を使用してクライアント側の天気プラグインを開発するためのコード スニペットです。

さて、ここで変数と文字列の基本概念と一般的なメソッドをマスターしました。次のステップでは、ループと関数についてさらに学習していきます。

第4章 最も基本的なマジック関数

4.1 機能の再認識

Python の関数定義については、章の最初に定義を置くのは明らかに説明が面倒なのでやめておきますが、他の教科書を読むと、この点については深く理解できると思います。つまり、私が言いたいのは、最初の章を読んでトレーニングした後は、関数の使い方をすでにマスターしているということです。
ここに画像の説明を挿入
ここに画像の説明を挿入
いわゆる Python での関数の使用法に定められた規則を観察することで、それを見つけるのは難しくありません。扱いたいオブジェクトを名前にします。その後の括弧内に入れます。簡単に言うとこのように関数を使い、そこに何かを詰め込んで処理結果を取得することができます。Python にはこのような関数がまだあり、
ここに画像の説明を挿入
最新バージョン 3.50 を例にとると、そのような関数は合計 68 個あり、これらを総称して組み込み関数 (Built_in Functions) と呼びます。組み込み関数と呼ばれているのは、「外部組み込み関数」という概念がまだ存在しているからではなく、バージョン 3.50 のインストールが完了した後でもこれらの関数を使用できることを指します。 「自己完結型」です。これらの用語に混乱しないでください。後ほどこのような用語がさらに表示されますが、実際には非常に単純な概念にすぎません。結局のところ、専門分野では、正確かつ効率的に表現するために専門用語がよく使用されます。 .用語。
これらの関数がどのように使用されるかを急いで理解する必要はありません。組み込み関数の中には非常に便利なものもありますが、文字エンコーディングに関係する関数 ascii()、bin()、chr( など) はあまり使用されません。 ) など。待ってください。これらは比較的低レベルのプログラミング設計でのみ使用される関数であり、特定のレベルに深く入った場合にのみ役に立ちます。
Python 公式 Web サイトの各関数の紹介へのリンクを添付します: https://docs.Python.org/3/library/functions.html
さらに詳しく知りたい場合は、ご覧ください

4.2 関数の作成を開始する

私たちは既存の機能を使用することを学ぶ必要がありますし、新しい機能を作成することも学ぶ必要があります。組み込み関数の数は限られているため、Python でより多くのことを実行できるようにしたい場合は、ニーズを満たす関数を設計する必要があります。関数の作成も非常に簡単で、実は私たちはもう何年も前に中学校の授業でその原理をマスターしています。
まず、コマンド ライン/ターミナルで Python 環境に入り、次のような式を入力してみます。これは
ここに画像の説明を挿入
少し見覚えがあります。最初の式は数学的な台形の計算式で、2 番目は摂氏と華氏の間の物理的な変換式です。
ここに画像の説明を挿入
関数はプログラミングにおける最も基本的な魔法ですが、同時にあらゆる複雑さを意味します。その原理は私たちが学ぶ数式に似ていますが、まったく同じではありません。なぜそう言ったのかは後ほどわかります。よく使われる単語をいくつか紹介します。

  • def (つまり、de'ne、definition) の意味は、関数を作成する、つまり関数を定義することです。
  • 引数の番号は、引数、パラメータです (「パラメータ」という文言がまだ見られることがあります。どちらもパラメータを意味しますが、若干異なるため、ここでは詳しく説明しません。
  • return は結果を返します。
    OK、それではマントラを読みましょう: 2 つの引数 : arg1 と arg2 を持つ関数という名前の関数を定義し、結果を返します——「何か読みやすく、スムーズですか? コードの表現は、英語例文 ワンポイント:
    ここに画像の説明を挿入
    以下のことに注意してください。
  • def と return はキーワードであり、Python は
    これらの特定のキーワードの識別に依存してユーザーの意図を理解し、より複雑なプログラミングを実現します。このようなキーワードがいくつかありますが、これについては次の章で詳しく説明します。
  • 閉じ括弧の後ろのコロンは必須であり、入力には英語の入力メソッドを使用する必要があることに注意してください。そうでない場合は、文法が間違っています。lDE で中国語のコロンと括弧を入力すると、このようなエラーが発生します。メッセージ:
    ここに画像の説明を挿入
  • lDE でコロンの後にキャリッジ リターン (ライン フィード) を入力すると、自動的にインデントが入ります。関数のインデントの後ろにあるステートメントはステートメント ブロック (ブロック) と呼ばれます。インデントはステートメントとロジックの関係を示すものです。これは Python の最も顕著な機能の 1 つです。一部の言語では中括弧を使用してそれを示しますコードの可読性が向上するため、人生を大切にすることはインデントから始まります。

それでは、先ほどの摂氏の変換式を見て、上記の関数の定義方法に従って実装してみましょう。摂氏の変換を関数 e_grcngcit Convcrtcr() として定義し、入力は摂氏の値 (CcIsius) である必要があり、パラメータとして C を設定し、最後に華氏の値 (e_grcngcit) を返します。次の関数を使用します。表現するには、次のコードを入力します。

def fahrenheit_converter(C): 
fahrenheit = C * 9/5 + 32 
return str(fahrenheit) + '˚F'

注: 計算の結果の型は int であり、文字列「oF」と組み合わせることができないため、最初に str() 関数で変換する必要があります。

上記のコードを入力すると関数の定義が完了したので、使用を開始します。関数を使用する動作を「呼び出し」(a_II) と呼びます。前に学習した関数 Icn() と同じように、Pytgon に何かをしてもらうことを簡単に理解できます。「これの長さを測るのを手伝ってください (オブジェクト)、結果を出力します。」

lyric_length = len('I Cry Out For Magic!')
print(lyric_length)

Icn() 関数を使用したのと同じように、次のコードは「摂氏コンバータを使用して摂氏 35 度を華氏に変換し、その結果を C2F という名前の変数に保存して出力してください。」という意味です。これで、関数は完了です。が呼び出され、結果が出力されます。

C2F = fahrenheit_converter(35)
print(C2F)

対応する結果は 95.0oF になるはずです。摂氏コンバータを見つけて計算できます。以下は M_a に付属する SpotIifgt の計算結果です。
ここに画像の説明を挿入
ここで関数の定義と基本的な使い方はすでに理解されています。長文です。基本的には上記の内容で十分だと思いますが、関数を深く使用する際に混乱や苦労を避けるために、より複雑な問題を解いてみましょう。
前の関数を次のように変更します。

def fahrenheit_converter(C): 
fahrenheit = C * 9/5 + 32 
print(str(fahrenheit) + '˚F')

どうでしょうか?似ていますよね?そうです、最後の行の return を print 関数に置き換えただけです。これは小さな変更ですが、IDE は構文に関するエラー警告を報告していないようです。そこで、関数を呼び出したときに何が起こるかを試してみましょう。

C2F = fahrenheit_converter(35)
print(C2F)

実行した結果は次のとおりです。
ここに画像の説明を挿入
なぜこれが起こっているのでしょうか?
実際、このような結果が得られるのは、print がキーワードではなく関数であるためです (print が関数ではない場合、お使いのバージョンがまだ 2.x シリーズであることを意味します。そのため、今すぐ 3.0 以降のバージョンを急いでインストールしてください) !)。十分に注意していれば、私の IDE では、print と return が両方とも青ですが、実際には異なっていることがわかります。一方は通常で、もう一方は斜体です。キーワードとしての return は関数の戻り値の役割を果たし、print はその名前が示すように、関数内の出力結果を表示するだけであり、人間向けに設計された関数ですしたがって、上記の 95.0oF は実際には関数を呼び出した後に生成される値であり、次の None はこの時点で変数 C2F に返される値です。キーワード return がないため、何もありません。それは、あなたが人の名前を叫んで(呼びかけ)、あなたが彼に何をすべきか(返すこと)を指示しなかったために、彼は単に「ねえ」と応答したようなものです。
return がなくても意味がないわけではなく、Python では return はオプションなので、return を書かなくても関数を定義してスムーズに使うことができますが、戻り値は「None」になります。後でさまざまな方法で関数を確認することもできますが、ここでは関数の基本設定だけを覚えておく必要があります。
前に述べたように、def (de"ne) は関数を定義するために使用されます。同時に、さまざまな教科書のさまざまなバージョンの翻訳で、declare (宣言) という単語も見ることができます。表現の目的から推測すると、これらは同じですが、他の言語の基礎を持つ人にとって、これら 2 つの単語は 2 つの異なる動作を意味します。実際、それは重要ではありません。Python では、定義と宣言は 1 つであり、ここでの説明は単に答えるだけです。この混乱を抱えている人は、それを深く掘り下げるつもりはありません。

4.3 パラメータとパラメータの型の受け渡し

以前に関数の定義と使用法について詳しく説明しましたが、このセクションでは、重要な問題パラメーターを除くいくつかの詳細について説明します。最初に必要なパラメータを設定する関数については、関数の名前を入力し、括弧内にパラメータを渡して関数の呼び出しを実現します (b_II)。次のように、関数の括弧内にパラメータを入れるだけです。それは次のようなものです:

fahrenheit_converter(35) 
fahrenheit_converter(15) 
fahrenheit_converter(0)
fahrenheit_converter(-3)

実際、パラメータを渡すには 2 つの方法があります。
ここに画像の説明を挿入
まず、私たちに忘れられているように見える台形の数式から始めて、最初に関数を作成します。
関数名をtr_ pd zo ic_ rd_、つまり台形の面積とし、パラメータをa_sd up(上底)、a_sd Crown(下底)、hdieht(高)とします。それぞれカンマで区切られた英語の入力方法を使用します。台形の面積を求めるには、これら 3 つの値を知る必要があるため、台形面積関数の構築には、これら 3 つのパラメータが不可欠です。


def trapezoid_area(base_up, base_down, height): 
return 1/2 * (base_up + base_down) * height

次に関数の呼び出しを開始します。


trapezoid_area(1,2,3)

塗りつぶされたパラメータ l、2、および 3 がそれぞれパラメータ a_sd up、a_sd Crown、および hdieht に対応していることを確認するのは難しくありません。パラメータを渡すこの方法は、位置パラメータと呼ばれます。
次に、渡す 2 番目の方法があります。


trapezoid_area(base_up=1, base_down=2,	height=3)

より直観的には、関数を呼び出すときに、各パラメーター名に渡したい値を割り当てます。対応するパラメータとして名前を渡すこの方法は、キーワード パラメータと呼ばれます。
考えてみましょう - レストランの予約と食事のプロセスに進み、予約した座席を見つけたいのですが - 通常、残した名前を使用します。あなたはパラメーターです。名前に従って予約した座席に転送されます。これはキーワード パラメータが渡されます。次のステップでは料理が提供され、席番号に従って料理がテーブルに渡されます。これは位置パラメータを渡すのと同じです。
もしかしたら、この引き渡しメソッドの機能をよく理解していないかもしれませんが、それは問題ではありません。後で他の知識を使って説明します。そうすれば、より高いレベルのパラメーターの引き渡しを理解できるようになります。
混乱を避ける最善の方法は、最初に混乱を引き起こすことです。より複雑な問題を解決してみましょう。次の方法で関数を呼び出し、結果を出力します。
ここに画像の説明を挿入

  • 最初の行の関数パラメータはキーワード パラメータであるため、逆の順序で渡され、関数の通常の動作には影響しません。
  • 2 行目の関数パラメータは逆の順序で渡されますが、3 行目は位置パラメータになります。残念ながら、このメソッドは構文が間違っています。位置に従って渡される場合、最後のパラメータはパラメータ height Location になるはずです。 。しかし、前の高さは名前に従って値 3 を渡しているため、競合しています。
  • 3 行目の関数パラメータは順番に渡され、最初の 2 つはキーワードとして渡され、最後の 1 つは位置パラメータとして渡されます。この関数は通常どおり実行できます。
  • 4 行目の関数パラメータは順番に渡され、最初の 2 つは位置によって渡され、最後の 1 つはキーワード パラメータとして渡され、この関数は正常に実行できます。

注: 正しい操作の結果は、この台形の面積である 4.5 になるはずです。

関数を呼び出す前に、一連の変数に値を代入します。

base_up = 1
base_down = 2
height = 3

trapezoid_area(height, base_down, base_up)

しかし、この関数呼び出しの結果は 2.5 になるはずですが、なぜ 2 なのでしょうか?
このような混乱がある場合は、パラメータの名前と変数の名前を混乱していることを意味しますので、この 2 つを明確に区別しましょう。まず最初に、関数を定義するときにパラメータの名前を定義します。その主な機能は、関数を使用するときにどのパラメータを渡すか、そのパラメータの由来、タイプなどをガイドしやすくすることです。 、関数の使用に関連するコンテキストを提供します。次のコードは、パラメーター名から関数の混乱を理解するのに役立ちます。

def flashlight (battery1, battery2): 
return 'Light!'

懐中電灯 (nashlight) という関数を定義します。この関数は、バッテリーを意味する 2 つのパラメーター Battery1 と Battery2 を取ります。この時点で、電池を購入するために店に行き、600mAh Nanfu 電池 2 個を買い戻すとします。つまり、次のようになります。

nanfu1 = 600
nanfu2 = 600

flashlight(nanfu1, nanfu2)

わかりますか?Nanfu は懐中電灯を光らせることができる電池の一種です。 Nanfu 電池を入れるということは、懐中電灯に必要な電池を入れるということです。 つまり、nanfu1 と nanfu2 は変数であり、パラメータを送信することもできますインポートされた関数の nashlight 関数は、渡された後に元の Battery1 と Battery2 を置き換えます。渡し方は依然として位置パラメータ渡しです。Battery1 と Battery2 は単なる形式的なプレースホルダーであり、関数に必要なパラメーターはバッテリーに関連する変数またはオブジェクトである必要があることを意味します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
表示されているマジックは、マジックのデフォルト パラメータと呼ばれるものです。デフォルトのパラメータはオプションです。つまり、何も渡さなくても、関数は通常どおり動作します。
次のようにコードを入力するだけです。

def trapezoid_area(base_up, base_down, height=3): 
return 1/2 * (base_up + base_down) * height

パラメータのデフォルト値を設定するのは非常に簡単です。パラメータを定義するときにパラメータに値を割り当てるだけですこれはパラメータを渡す方法と少し似ているかもしれませんが、忘れないでください! これを定義するときに行うことです! この方法では、通常の処理を続行するには 2 つのパラメータを渡すだけで済みます。

trapezoid_area(1, 2)

デフォルト値を設定すると、すべての台形の高さが 3 に固定されるのではないかと疑問に思われるかもしれません (2)。できるだけ節約すること。ソフトウェアをインストールするのと同じように、デフォルトのディレクトリがありますが、他の場所にインストールしたい場合は、カスタマイズすることもできます。前に見た print 関数のトリックはまったく同じです。print のオプションのパラメータ sep (各印刷結果がで区切られることを意味します) のデフォルト値は ' 'space ですが、それを '/n' に再渡します。 , 改行の意味は、一言で言えば、出力された各数値を改行記号で区切ることです。独自のパラメータを呼び出してみましょう。

trapezoid_area(1, 2, height=15)

必要な値を渡すだけです。とても簡単です。
デフォルト値はパラメータの使い方をマスターするために必要な知識ではありませんが、時間を節約するのに役立つちょっとしたコツです。これは実際のプロジェクトでよく見られます。

requests.get(url, headers=header)

注: これは Web サイトをリクエストするときのヘッダーであり、入力してもしなくても構いません。

img.save(img_new, img_format, quality=100)

注: これは画像に透かしを追加する場合であり、デフォルトの透かし品質は 100 です。

4.4 独自の関数を設計する

この時点で、プロジェクトのニーズを満たす関数を自信を持って設計できるはずです。上記の知識をすべて統合して、単純な機密ワード フィルターを設計しますが、その前に、新しい関数を 1 つずつ開いていきます。 。
この関数の使用は非常に簡単で、通常に実行するには、ファイルの完全なパスと名前、およびファイルを開く方法という 2 つのパラメータを渡すだけです。
まずデスクトップに text.txt という名前のファイルを作成します。Wlndows ユーザーはデスクトップを右クリックして作成メニューを表示できます。Mac ユーザーは Pages を開いてファイルを作成し、エクスポート形式をクリックして txt 形式を選択できます。次に、open 関数を使用してそれを開きます。

open('/Users/Hou/Desktop/text.txt')	

Windows ユーザーの場合は、次のようにパスを記述する必要があります。

open('C://Users/Hou/Desktop/')	

コードを打ち込めばこの時点でファイルが開いているはずなのですが…どうやら見れないようなので、新しいメソッドを知っておきましょう-write。第 1 章では、メソッドの使用方法について説明しました (関数とメソッドの関係について混乱している場合は、スムーズに作業を進めるために、メソッドは関数の一種であることを説明しますが、立場は異なります)。使用原理は関数と非常に似ています)。ここでは、write メソッドの使用方法を学ぶために、第 3 章の repIace の使用法をコピーします。

file = open('/Users/Hou/Desktop/text.txt','w')
file.write('Hello World')

書いた後、プログラムを実行して効果を確認しましょう:
ここに画像の説明を挿入
opdn と writd の基本的な使用法をマスターした後、関数の設計を開始できます。要件は次のとおりです: パラメーター n、md、および mse を渡して、何を書き込むかを制御しますファイル名と内容の機能は tdXt ard-td であり、デスクトップ上にそのような書き込み可能なファイルがない場合は、ファイルを作成して後で書き込む必要があります。さあ、やってみましょう↓

1.def text_create(name, msg):
2.desktop_path = '/Users/Hou/Desktop/'
3.full_path = desktop_path + name + '.txt'
4.file = open(full_path,'w')
5.file.write(msg)
6.file.close()
7.print('Done')
8.text_create('hello','hello world') # 调用函数

このコードを一行ずつ説明していきます。
1 行目: 関数の名前とパラメーターを定義します。2
行目: opdn 関数が完全なパスを開く必要があることが最初にわかっているため、1 行目はデスクトップ パスです。3 行目: 付ける
名前ファイル、それは入力パラメータとデスクトップ パスとサフィックスが完全なファイル パスです;
4 行目: ファイルを開きます、'w'パラメータは書き込みモードを表します。パスに名前を含むテキスト、存在する場合は上書きテキストの内容を追加します;
5 行目: 受信パラメータ mse、つまり内容を書き込みます; 6 行目: テキストを閉じます。
このようにして、センシティブな単語フィルターの最初の部分が完成しました。ちなみに、この関数は、rdtUrn を必要としない上で説明した関数であり、最後の出力は、上記のステートメントがすべて実行されたことを示すためのものであり、単なる備忘録です。次に、2 番目の部分である機密語フィルタリングを実装します。要件は次のとおりです: 関数を function tdXt として Itdr に定義し、パラメータ worc、adnaordc worc、および ah-nedc worc を渡してフィルタリングを実現します。機密語 adnaordc worc のデフォルトは ' I-md'、置換語
ah-nedc worc のデフォルトは 'Awdsomd' です。次に、次のように続けます。

def text_filter(word,censored_word = 'lame',changed_word = 'Awesome'): return word.replace(censored_word, changed_word)
text_filter('Python is lame!')	# 调用函数

この関数は非常に単純で、1 行目ではデフォルトのパラメータを設定して関数を定義し、2 行目では rdpI-ad によって処理された結果を直接返します。これで 2 つの関数が完了しました。低リスクの原則に従って、次の関数を呼び出して戻り結果を確認することができます。
ここで、2 つの関数を組み合わせて、より複雑な問題を解決しようとします。 text censored create という関数を作成します。この関数は、テキストを入力できるデスクトップ上にテキストを作成しますが、情報に機密性の高い単語が含まれている場合は、フィルタリングされます。デフォルトでファイルに書き込まれます。このうち、テキストのファイル名パラメータは n_me 、情報パラメータは msg なので、最初は自分で書いてみて、次のように書いてから比較することができます。

def censored_text_create(name, msg): clean_msg = text_filter(msg) text_create(name,clean_msg)
censored_text_create('Try','lame!lame!lame!') # 调用函数

最初の関数を使用して受信メッセージをフィルタリングし、それを cle_n msg という名前の変数に保存し、n_me ファイル名パラメータとフィルタリングされたテキスト cle_n msg をパラメータとして渡します。関数 text create では、フィルタリングされたテキストを次のように取得します。結果。
完了すると、テキスト フィルターが完成します!
この章では、関数がどのように機能するかを説明するために数学を使用しただけですが、実際に多くの数学の問題を解決する必要がある場合は、ここに基本的なリファレンスがあります。フォーム、使い方については、ぜひ試してみてください。結局のところ、コード行のせいでコンピューターが爆発することはありません。
ここに画像の説明を挿入

第5章 サイクルと判断

5.1 ロジック制御とループ

5.1.1 論理的判断 - 真と偽

プログラミング言語の最も面白いところは論理的判断であり、複雑な機能やプログラムを実現するには論理的判断が不可欠です。if-else 構造は一般的な論理制御手法であり、このようなステートメントを作成すると、いつそれを実行するか、何を実行しないかをコンピューターに指示することになります。前の章の内容を学習した後、すでに論理制御の準備が整い、試してみたいと思っているかもしれませんが、その前に、論理的判断の最も基本的な基準であるブール型を理解する必要があります。
話を始める前に、もしあなたが自分の論理的能力を疑い、この章の内容に怖気づいているのであれば、非常に複雑な現実においてそうであるのと同じように、誰も「非論理的」ではないと安全に言えることを強調したいと思います。世界でどんな行動を起こすにも、必要なのはある程度の知識と判断スキルだけです。
ブール データには True と False の 2 種類のみがあります (最初の文字が大文字であることに注意してください)。人間は事実を真偽で判断しますが、コンピュータの世界では真偽は1と0に対応します。
次に、コマンド ライン/ターミナルを開いて Python 環境に入り、これらのコードを入力するか、PyCharm で Python コンソールを直接選択します。これにより、結果が簡単に表示されます。この正誤問題のセクションでは、全員がコマンド ライン/ターミナル環境にコードを入力します。

1>2
1<2<3
42 != '42'
'Name' == 'name' 'M' in 'Magic' 
number = 12
number is 12

ここに画像の説明を挿入

コード行を入力するたびに、すぐに結果が得られます。これらのコード行の式は異なりますが、返される結果は True と FaIse の 2 つのブール値のみなので、ブール値を生成できる任意の式を呼び出します。 value ブール式 式 (ブール式)。ここに画像の説明を挿入
ブール値を生成できる上記のメソッドまたは式は同じではないことがわかりますので、これらの演算記号の意味と使用法を説明しましょう。

5.1.2 比較演算(コンペア)

比較演算子の場合、名前が示すように、比較が true の場合は True を返し、true でない場合は FaIse を返します。
ここに画像の説明を挿入
いくつかの数学的に明白な事実に加えて、比較演算では、複数の条件の比較など、より複雑な式もサポートされています
まず変数に値を代入し、複数の条件下でサイズを比較します。

middle = 5
1 < middle < 10

変数の比較。2 つの操作の結果を異なる変数に保存し、比較します。

two = 1 + 1
three = 1 + 3 two < three

文字列の比較。実際には、左側と右側の文字列が完全に一致しているかどうかを比較するのですが、Python では大文字と小文字が厳密に区別されるため、次のコードは一致しません。

'Eddie Van Helen' == 'eddie van helen'

2 つの関数によって生成された結果を比較します。比較演算子の両側は最初に関数を呼び出してから比較し、結果は次と同等になります10 > 19

abs(-10) > len('length of this word')

注: abs( ) は、入力引数の絶対値を返す関数です。

5.1.3 比較演算におけるいくつかの小さな問題


ここに画像の説明を挿入
「<、>、<=、>=」を使用して異なる型のオブジェクトを比較することはできませんが、文字列や数値などの「= =」と「!=」は比較できません。浮動小数点と整数は異なる型であることに注意してください。ただし、比較演算には影響しません。
ここに画像の説明を挿入
「なぜ 1 = 1 を 1 = = 1 2 と書かなければならないのか」という疑問があるかもしれません。前述したように、Python の記号は多くの場所で数学の記号と非常に似ています。 , しかし、まったく同じではありません。Python では「=」は代入を表し、おなじみの「equal」ではありません。したがって、「1 = 1」は機能せず、ブール値は返されません。「==」という表現を使用すると、2 つのオブジェクトの値が等しいことを表現すると理解できます。これは従来の構文ですので、覚えておいてください。
文字列、浮動小数点、および整数が比較されます。まだ比較されていない型が 1 つあります:それは Boolean 型なので、今すぐ実験してみましょう:

True > False
True + False > False + False

このような結果を理解するにはどうすればよいですか? 2 前に言ったことをまだ覚えていますか? True と False はコンピュータにとって 1 と 0 のようなもので、コマンド ラインで True + True + False と入力して結果を確認すれば、難しいことではありません。 True = 1 、 False = 0 であることを確認するには、つまり、上記のコードは実際には次と同等です。

1 > 0
1 + 0 > 0 + 0

なぜそうなるのかについては、ここでは立ち入りませんが、覚えておいてください。
最後の小さな質問です。他の教科書で 1<>3 のような表現を見ても驚かないでください。これは実際には 1!=3 に相当します。「Fennel の 4 つの書き方」を知らせるためではなく、それを知っておいてください。 。

5.1.4 メンバーシップ演算子とアイデンティティ演算子 (Membership & 1identify 0perators)

メンバーシップ演算子とアイデンティティ演算子のキーワードは in と is です。2 つのオブジェクトの間に in を入れる意味は、前者が in の後のコレクション内に存在するかどうかをテストすることです。コレクションに関しては、まずシンプルでわかりやすいコレクション タイプであるリスト (List) を紹介します。
文字列、浮動小数点、整数、ブール型、変数、さらには別のリストをすべてリストに格納できます。リストは非常に便利なデータ構造です。リストの使用法については後で詳しく説明します。ここで簡単に説明します。
リストの作成は、変数を作成して名前を付けるのと似ています。

album = []	

この時点ではリストは空ですが、そこに何かを入れるだけで、空ではないリストが作成されます。

album = ['Black Star','David Bowie',25,True]	

このリスト内のすべての要素は最初に保存されますが、リストが作成されたときに、コンテンツを再度追加したい場合はどうすればよいですか? 2 リストの append メソッドを使用して、リストに新しい要素を追加します。リストを作成し、このメソッドを使用して、リストの最後に自動的にソートされる要素を追加します。

album.append('new song')	

次にリストのインデックスですが、これまでの章で文字列のインデックスをしっかりマスターしていれば、新しい知識を理解するのは難しくないと思います。次のコードの機能は、リストの最初と最後の要素を出力することです。

print(album[0],album[-1])	

次に、 in を使用して、文字列「Black Star」がリスト アルバムにあるかどうかをテストします。存在する場合は True が表示され、存在しない場合は False が表示されます。

'Black Star' in album	

非常に単純ですか? 2 前に見たように、in の後にはコレクション形式のオブジェクトが続き、文字列はこのコレクションの特性を満たすため、in をテストに使用できます。
次に、識別演算子を表すブール演算子である is と not in 、帰属関係 (メンバーシップ演算子) を表すブール演算子である in と not in について説明します。
Python のオブジェクトは、必ず同一性 (Identity)、型 (Type)、値 (Value) の 3 点を満たしている必要があります。is 演算子記号は、同一性を比較するために使用されます。次のコードを入力してみてください。2
ここに画像の説明を挿入
つの変数が一致する場合、比較後に True が返されることがわかります。
実際、Pxthon のすべてのオブジェクトは、)、Fone、およびブール値が Balse でその他が True であるすべての空のシーケンスとコレクション (リスト、辞書、コレクション) を除いて、そのブール値を判断できます。関数 bool( (ジャッジ:

bool(0)	#False
bool([])	#False
bool('') #False 
bool(False) #False 
bool(None)  #False

なぜオブジェクトが Fone と等しいのか理解できない人もいるかもしれません。関数の章にあるセンシティブ ワード フィルターの例を覚えていますか? 関数定義時にreturnを書かなくてもそのまま使えますが、関数を呼び出して存在しないyの戻り値を変数に格納しようとすると、実際の変数の代入結果はFoneになってしまいます。
変数ですが、どの値と等しくなければならないかわからない場合は、次のようにすることができます。

a_thing = None

5.1.5 ブール演算子 (<ブーリアン演算子)

ここに画像の説明を挿入
and および or は、0 3 n 3 1 と同様、つまり 2 つの条件が同時に満たされる複合条件を処理するためによく使用されます。

1 < 3 and  2 < 5	#True
1 < 3 and  2 > 5	#False 1 < 3 or  2 > 5	#True
1 > 3 or  2 > 5	#False

5.2 状態制御

条件制御は実際には if...else を使用します。まず、条件付き制御の基本構造を見てみましょう。
ここに画像の説明を挿入

行 1: 関数を定義します。パラメーターは必要ありません。行 2: input を使用してユーザーが入力した文字列を取得し、それを変数パスワードに保存します。行 3 と 4 : ユーザーが入力した文字列が一致する場合に条件を設定します
。プリセット パスワード 12345 と 12345 が等しい場合、テキスト 'ログイン成功 1' を出力します;
行 5 と 6: 逆に、プリセット パスワードと等しくない入力結果はすべてエラー プロンプトを出力し、関数を再度呼び出して、ユーザーはパスワードを再度入力します; 7 行目: 関数を実行します。
8行目: 関数の呼び出し

if の後ろのブール式が長すぎる場合、または理解するのが難しい場合は、変数に値を割り当てて、ブール式によって返されるブール値 Tr.e または FaIue を格納できることに注意してください。一般に、プログラムを
ここに画像の説明を挿入
設計する際には、ロジックの完成度や、ユーザーに迷惑を及ぼす可能性のある事態の予防設計を考慮する必要があります。条件付きの判断。
複数条件の判定も非常に簡単で、ifとeIueの間にeIifを追加するだけで、使い方はifと一致します。また、条件の判定も順番に行われます。まず、条件が真であるかどうかを確認し、真であれば次のコードを実行します。真でない場合は、次の条件が真であるかどうかを確認します。真でない場合は、次のコードを実行します。 、eIueに対応するステートメントを実行します。
ここに画像の説明を挿入
次に、elif ステートメントを使用して、設計したばかりの関数にパスワード リセット関数を追加します。
ここに画像の説明を挿入

行 1: ユーザー パスワード、初期パスワード、その他のデータを保存するためのリストを作成します (実際のデータベースの簡易シミュレーション)、行 2: 関数を定義します、行 3: input を使用してユーザーが入力した文字列を取得し、
それ
を変数パスワード;
行 4: ユーザーが入力したパスワードがパスワード リストの最後の要素 (つまり、ユーザーが設定した最新のパスワード) と等しい場合、ログインは成功します; 行 5 ~ 9: パスワードが入力された
場合ユーザーによるパスワードがパスワード リストと等しい場合、リストの最初の要素 (つまり、パスワードをリセットするための「パスワード」) がパスワードの変更をトリガーし、変更されたパスワードがリストの最後の要素に保存され、最新のパスワードになります。ユーザーパスワード; 10 行目: 逆に、すべてがプリセットと等しくない
パスワードの入力結果を設定すると、すべてが実行されてエラープロンプトが表示され、関数を再度呼び出してユーザーにパスワードを再入力させます; 11 行
目: 関数を呼び出します。
上記のコードでは、実際にコード ブロック (Code Block) がはっきりと確認できます。コード ブロックの生成はインデントによって行われます。つまり、同じインデント量のコードが実際に連携して同じレベルの処理を実行します。これは、ドキュメントを編集する際のさまざまなレベルのタスク リストに似ています。

5.3 ループ

5.3.1 for ループ

まず例を見てみましょう。コードを入力します。

for every_letter in 'Hello world': 
print(every_letter)

ここに画像の説明を挿入
for ループをより深く理解するために、このような結果を出力するにはどうすればよいかという質問について考えてみてください。
ここに画像の説明を挿入

songslist = ['Holy Diver', 'Thunderstruck', 'Rebel Rebel']
for song in songslist:
if song == 'Holy Diver': 
print(song,' - Dio')
elif song == 'Thunderstruck':
print(song,' - AC/DC')
elif song == 'Rebel Rebel': 
print(song,' - David Bowie')

上記のコードでは、 songslist リストの各要素を 1 つずつ取り出して、3 つの条件と比較し、true であれば、対応する内容を出力します。

5.3.2 入れ子になったループ

プログラミングでよく使われるループには、入れ子になったループ (Nested Loop) と呼ばれるものがありますが、実はこの種のループは複雑ではなく、非常に実用的です。私たちは皆、「ナインナイン テーブル」としても知られる九九を学習しました。次に、それをネストされたループで実装します。
ここに画像の説明を挿入

5.3.3 ホワイトループ

Python には 2 種類のループがあります。1 つ目はすでに紹介した for ループ、2 つ目は whIe ループです。ループ内で繰り返しの処理ができる点は同じですが、異なる点は、for ループは反復可能なシーケンスがなくなったときに停止すること、および whIe は条件が true でないときに停止することです。つまり、...条件が満たされている限り、... を続けてください
ここに画像の説明を挿入
ここに画像の説明を挿入
さらに、 while ループを停止するもう 1 つの方法は、ループを true にする条件を変更することです。この例を説明するために、以前のログイン機能に基づいて実装し、ログイン機能に新しい機能を追加します。つまり、パスワードを 3 回以上間違えた場合、パスワードの再入力を禁止します。
ここに画像の説明を挿入
このコードと前のコードの違いは 3 つだけです。
4 ~ 5 行目: whIe ループを追加します。trys > 0 の条件が true の場合、パスワードを入力して、パスワードが正しいかどうかの論理判断を実行します。が正しいかどうか;
20行目 ~21行目:パスワードの入力を間違えた場合、試行回数を1減らすことができる;
23行目~24行目:whiIeループの条件が成立しない場合、試行回数が減ることを意味するが枯渇し、ユーザー アカウントがロックされることが通知されます。
ここで、while は if ループのバージョンとして理解でき、whiIeIse 構造を使用できます。また、whiIe コード ブロックには論理判断の 2 番目の層があり、実際にはネストされたロジック (ネストされた条件) を構成します。

5.3.4 総合演習

私たちは基本的に論理的な判断とループの使い方を学びました。そして今、何か興味深いことを始めています。サイズを推測する小さなゲームをデザインします。文春興のこの小さなゲームは、私が小学生の退屈な時間を過ごすのに付き合ってくれました。
その前に、まず必要な知識を追加しましょう。
まず、リストを作成し、数値を入力し、sum() 関数を使用してリスト内のすべての整数を合計し、出力します。結果は 6 になります。これは理解しやすいはずです。まず、次のような関数を構築しましょう。ロール
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ダイス roII ダイス。実際、この関数はパラメータを入力する必要がなく、呼び出し後、3 点を振った結果を格納したリストを返します。

1import  random
2def  roll_dice(numbers=3, points=None): 3print('<<<<< ROLL THE DICE! >>>>>')
4if  points  is  None:
5●	points = []
6while  numbers  > 0:
7●	point = random.randrange(1,7)
8●	points.append(point)
9●	numbers = numbers  - 1
10return  points

行 2: 関数を作成し、オプションとして 2 つのデフォルト パラメータ (数値 - サイコロの数、
点 - 3 つのふるいの点のリスト) を設定します; 行 3: サイコロを振り始めるようにユーザーに通知します;
行 4 ~ 5:パラメーターにポイントが指定されていない場合は、ポイントの空のリストを作成します。
行 6 ~ 9: サイコロを 3 回振り、数字が 0 以下になるまで振るたびに 1 ずつ減分します。ループstop; 10行目:
の結果リストを返します。

次に、関数を使用してポイントをサイズに変換し、if ステートメントを使用して何が「大きい」か、何が「小さい」かを定義します。 1 行目: 関数を作成します。その必要なパラメーターは、オブジェクトのポイントの総数です
ここに画像の説明を挿入
。 dice;
2~3行目:「大きい」「小さい」の判定基準を設定;
4~7行目:条件が異なると異なる結果を返す。
最後に、ゲームを開始する関数を作成し、ユーザーに推測サイズを入力させ、正しい推測と間違った推測を定義し、対応する勝敗結果を出力します。
ここに画像の説明を挿入
行 1: 特別なパラメータを使用せずに関数を作成します;
行 2: ゲームが開始したことをユーザーに通知します; 行
3: 正しい入力を指定します;
行 4: ユーザーが入力した文字列を _eoh_d に保存します;
行 5、 13-15: 入力仕様を満たしている場合は下に進み、満たしていない場合はユーザーに通知してやり直します。 6 行目: roii ch_d 関数を呼び出し、返されたリストに pohnts という名前を付けます。 7 行目: ポイントを合計します。 8

目: 勝利の条件を設定します。選択した結果はコンピュータによって生成された結果と一致します。9 ~
12 行目: 成立した場合は勝利を通知します。そうでない場合は失敗を通知します。16
行目:関数を呼び出してプログラムを実行します。
この小さなゲームを完了したら、自分が設計したプログラムを使用してサイズを推測してみることができます。同時に、ループと条件判断を組み合わせる方法も習得し、最初はより複雑なプログラムを設計できるようになります。

第6章 データ構造

6.1 データ構造

現実世界と同じように、十分な数が手に入るまでは、物を保存するためのコンテナが必死に必要というわけではありません。だからこそ、私はデータ構造を最後に置くことを主張します。データ構造をさらに作成するのに十分なスキルを習得するまでは、データについては、データ構造の役割に注目します。大量のデータを保存するこれらのコンテナーは、Python では組み込みデータ構造 (BuiIt-in Data Structure) と呼ばれます。
私たちが毎日使用する Web サイト、モバイル アプリケーション、さらには携帯電話のテキスト メッセージも、ストレージのデータ構造に依存しており、そのデータはデータ構造内の特定の形式で保存され、ユーザーが必要なときに表示されます。
ここに画像の説明を挿入
Python には、リスト、辞書、タプル、セットという 4 つのデータ構造があります。各データ構造には独自の特性があり、独自の用途があります。時期尚早に詳細に陥ることを避けるために、まずこれら 4 つのデータ構造を全体として理解しましょう。ここに画像の説明を挿入

6.2 リスト(リスト)

まず、リストから始めて、各データ構造について詳しく説明します。リストの最も注目すべき機能は次
のとおりです。

1. リスト内の各要素は変数です;
2. リスト内の要素は順序付けされています、つまり、各要素には位置があります;
3. リストは Python の任意のオブジェクトを保持できます。

リスト内の要素は変更可能です。つまり、リスト内の要素を追加、削除、変更できます。リスト内の各要素は位置に対応します。位置を入力して、位置に対応する値をクエリします。次のように入力してください。

Weekday =['Monday','Tuesday','Wednesday','Thursday','Friday'] 
print(Weekday[0])

3 番目の特徴は、次の例からわかるように、リストは Python のすべてのオブジェクトを保持できることです。ここに画像の説明を挿入

6.3 リストの追加、削除、変更、問い合わせ

データ操作の場合、最も一般的なのは、追加、削除、変更、クエリの 4 種類です。リストの挿入メソッドから始めて、次のように入力します。

fruit = ['pineapple','pear']
fruit.insert(1,'grape') 
print(fruit)

ここに画像の説明を挿入
ここに画像の説明を挿入
次に、元素の周期表を使って実験してみましょう。以下のとおりです。

periodic_table = ['H','He','Li','Be','B','C','N','O','F','Ne'] print(periodic_table[0])
print(periodic_table[-2]) 
print(periodic_table[0:3]) 
print(periodic_table[-10:-7]) 
print(periodic_table[-10:])
print(periodic_table[:9])

リストのインデックスが文字列と同じであることがわかります。非常に単純ですよね。しかし、その逆の場合、特定の値の場所を確認したい場合は、別の方法を使用する必要があります。そうしないと、エラーが報告されます。ここに画像の説明を挿入

6.4 辞書

実際、プログラミングの世界の多くの概念は現実のプロトタイプに基づいています。辞書のデータ構造は、現実世界の辞書とまったく同じです。名前と内容を使用してデータを構築し、Pyteol ではそれらはキーに対応します ( hay)- 値 (vPkua)、慣例的にキーと値のペアと呼ばれます。ここに画像の説明を挿入
この辞書の特徴をまとめると、次のようになります。
ここに画像の説明を挿入
エラー報告を繰り返すと、キーと値が一対一に対応し、キーが不変であるという 2 つの特徴を深く思い出すことができると考えられます。
同時に、辞書内のキー値は繰り返されません。これを行ったとしても、同じキー値は 1 回しか出現できません。

a = {
    
    'key':123,'key':123}
print(a)

6.5 辞書の追加、削除、変更、問い合わせ

まず、前の例を引き続き使用して、マッピング関係に従って辞書を作成します。

NASDAQ_code = {
    
    'BIDU':'Baidu','SINA':'Sina'}	

ここに画像の説明を挿入

6.6 タプル

タプルは不変であるため、実際にはリストの安定バージョンとして理解できます。そのため、リスト内のメソッドはいずれもタプルに対して使用できませんが、タプルは、次のリストと同じ方法で表示およびインデックス付けできます。 :

letters = ('a','b','c','d','e','f','g') 
letter[0]

6.7 収集

集合は数学における集合の概念に近いものです。各コレクション内の要素は順序付けされておらず、繰り返しのない任意のオブジェクトであり、コレクションを通じてデータの所属を判断したり、場合によってはコレクションを通じてデータ構造内の繰り返し要素を減算したりすることもできます。ここに画像の説明を挿入
コレクションのスライスやインデックス付けはできません。コレクション操作の実行に加えて、コレクション要素を追加および削除できます。

a_set = {
    
    1,2,3,4} 
a_set.add(5)
a_set.discard(5)

6.8 データ構造に関するいくつかのトリック

6.8.1 複数のループ

多くの関数の使用法は、データ構造の使用法と密接に関連しています。先ほどリストの基本的な使い方を学びましたが、実際の運用ではさらに多くの問題に遭遇することがよくあります。たとえば、テーブルやファイルを並べ替える場合、文字または日付で並べ替えられます。同様の関数が Python にも存在します。

num_list = [6,2,7,4,1,3,5] 
print(sorted(num_list))

どうですか、すごいですか?sorted 関数は、各リスト内の要素を長さ、サイズ、英語のアルファベットの順に並べ替えます。この関数はデータの表示でよく使われますが、非常に重要な点があり、sorted関数はリスト自体を変更するのではなく、リストをコピーして順番に並べ替えるという理解で良いと思います。
デフォルトのパラメータ reverse を使用した後、リストを逆順に並べ替えることができます。

sorted(num_list,reverse=True)	

リストを並べ替えるプロセスで、同時に 2 つのリストが必要な場合はどうすればよいですか? このとき、次のような zip 関数を使用できます。

for a,b in zip(num,str): 
print(b,'is',a)

ここに画像の説明を挿入

6.8.2 導出

次に、データ構造の導出 (リスト内包表記) を見てみましょう。リスト内包表記という別の名前を見たことがあるかもしれません。ここで知っておく必要があるのは、これら 2 つが実際には 1 つのものであるということだけです。
これで、リストにロードする l0 個の要素ができました。一般的な書き方は次のとおりです。

a = []
for i in range(1,11): 
a.append(i)

以下はリスト内包メソッドに置き換えられます。

b	=	[i	for	i	in	range(1,11)]

リスト分析手法は非常に便利であるだけでなく、実行効率の面でも前者に比べてはるかに優れており、2 つの異なるリスト操作手法の所要時間を比較すると、効率に大きな差があることがわかります。

import time

a = []
t0 = time.clock()
for i in range(1,20000): a.append(i)
print(time.clock() - t0, "seconds process time")

t0 = time.clock()
b = [i for i in range(1,20000)] 
print(time.clock() - t0, "seconds process time")

ここに画像の説明を挿入
リスト内包表記の使用法も理解しやすく、単純に 2 つの部分として見ることができます。赤い点線の後ろの式はおなじみの for ループ式で、点線より前の式がリストに入れたい要素と考えて良いと思います。この例では、リストに入れる要素は 要素ですそれ自体は後でループされます。

list = [item for item in iterable]

この文をより深く理解するために、引き続きいくつかの例を見てみましょう。
ここに画像の説明を挿入

6.8.3 リストのループ中に要素のインデックスを取得する

アルファベットを取得したので、インデックス作成時に図に示すように各要素の特定の位置を取得するにはどうすればよいでしょうか?
ここに画像の説明を挿入

6.9 総合プロジェクト

リストの使用方法をより深く理解するために、この章の最後で単語の頻度統計を実行します。Walden Lake のテキストが必要な場合は、ここからダウンロードできます: http://pan.baidu.com/s/1o75GKZ4。PyCharm でテキストを開いて、ダウンロード後に再度保存します。これは、エンコードの問題を避けるためです。
事前に準備をし、必要な知識を学んでください。

lyric = 'The night begin to shine, the night begin to shine' 
words = lyric.split()

次に、spIit メソッドを使用して文字列内の各単語を分離し、個々の単語を取得します。

['The', 'night', 'begin', 'to', 'shine']	

次は単語の頻度統計です。count メソッドを使用して、繰り返された単語をカウントします。

path = '/Users/Hou/Desktop/Walden.txt'
with open(path,'r') as text: 
words = text.read().split() 
print(words)
for word in words:
print('{}-{} times'.format(word,words.count(word)))

結果は出ましたが、いつも違和感を感じていましたが、注意深く観察した結果、次のような結論に達しました。

  1. 句読点のある一部の単語は個別にカウントされました。
  2. 一部の単語は複数回出現する回数を示します。
  3. Python では大文字と小文字が区別されるため、大文字で始まる単語は個別にカウントされます。
    次に、これらの点に従って統計手法を調整し、単語に対して前処理を実行しましょう。
1.import string
2.path = '/Users/Hou/Desktop/Walden.txt' 3.with open(path,'r') as text:
4.words = [raw_word.strip(string.punctuation).lower() for raw_word in text.read().split()]
5.words_index = set(words)
6.counts_dict = {
    
    index:words.count(index) for index in words_index}

7.for word in sorted(counts_dict,key=lambda x: counts_dict[x],reverse=True):
8.print('{} -- {} times'.format(word,counts_dict[word]))

ここに画像の説明を挿入

第 7 章ではサードパーティ ライブラリの使用を開始します

7.1 素晴らしいサードパーティライブラリ

プログラミング言語のメタファーとして携帯電話を使用する場合、Python はスマートフォンに相当します。多数の携帯電話アプリケーションが iOS および Android プラットフォームに登場するのと同様に、Python 開発者に大きな利便性を提供するさまざまなサードパーティ ライブラリもあります。
Web サイトを構築したい場合は、機能が充実した Django や軽量な Flask などの Web フレームワークを選択でき、ちょっとしたゲームを作成したい場合は PyGame フレームワークを使用でき、クローラを作成したい場合は、 Scrapy フレームワーク; データの統計分析を行う場合は、Pandas データ フレームを使用できます...非常に多くの豊富なリソースが、やりたいことを効率的かつ迅速に実行するのに役立ち、車輪を再発明する必要はありません。では、ニーズに応じて対応するライブラリを見つけるにはどうすればよいでしょうか? awesome-python.com
Web サイトでカテゴリ別に検索できます。この Web サイトには、より包括的なサードパーティ ライブラリが含まれています。たとえば、クローラー ライブラリを見つけたい場合、Web クローリング カテゴリをチェックして、対応するサードパーティ ライブラリの Web サイトと紹介を表示できます。ライブラリ Web サイトにアクセスして、より詳細な紹介を表示し、ライブラリは Python 2 または Python 3 をサポートしていますが、最も一般的に使用されているライブラリはすでに両方をサポートしています。さらに、検索エンジンを通じて直接検索することもできます。たとえば、英語で検索してみると、stackoverlow での質の高いディスカッションなど、より広い世界が見つかります。
ここに画像の説明を挿入


ここに画像の説明を挿入

ここに画像の説明を挿入

7.2 サードパーティライブラリのインストール

どのライブラリをインストールする場合でも、その方法は基本的に普遍的です。サードパーティ製ライブラリをインストールする方法を紹介していきます。

7.2.1 最も簡単な方法: PyCharm にインストールする

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

7.2.2 最も直接的な方法: ターミナル/コマンドラインにインストールする

ここに画像の説明を挿入
ここに画像の説明を挿入

7.2.3 最も原始的な方法: 手動インストール

ここに画像の説明を挿入
ここに画像の説明を挿入

7.3 サードパーティライブラリの使用

PyCharm にライブラリの名前を入力すると、自動的に完了を求めるプロンプトが表示されます:
ここに画像の説明を挿入
入力後、灰色の状態になっていることがわかりますimport pandas。これは、ライブラリがプログラムで使用されていないためではなく、ライブラリが使用されていないためです。 (ライブラリがインストールされているかどうかを確認したい) インストールされている場合は、前述の PyCharm または pip メソッドを使用して確認できます。これで、ライブラリの使用に関するチュートリアルは終了です。

おすすめ

転載: blog.csdn.net/weixin_45529272/article/details/128044581