/python_exercises

short exercises for Python

Primary LanguagePythonMIT LicenseMIT

python exercises

Pythonの基礎的な処理を学ぶためのリポジトリです。

Setup

以下のソフトウェアをインストールしておいてください

How to begin

以下が、Exerciseの手順です。GitもPythonも初めて、という方はWarming-upを参照してください。

  1. 右上にある「Fork」というボタンから、本リポジトリをFork(=コピー)してください。
  2. forkしたリポジトリを、git cloneによって手元の端末に取ってきます。これで準備は完了です。
  3. 各フォルダの中にあるREADMEには、そのエクササイズで達成すべき課題が書かれています。Pointで示されているヒントをもとに、処理を完成させてください。
  4. エクササイズで実装したコードは、好きな名前で保存してください(なお、ex始まりのファイルは.gitignoreされています)。
  5. 各フォルダには、解答例が配置されています。わからない場合は、そちらを参考にしてください。

Exercises

  • Let's Execute Python
    • Pythonプログラムを実行してみよう
  • Collections
    • Pythonで配列のデータを処理してみよう
  • Find Pattern
    • 文字列の中から特定のパターンを見つけてみよう
  • Class
    • Pythonのクラスと単体テストについて知ろう
  • Use Packages
    • 便利なライブラリを使って処理を実装してみよう
  • Exception & logging
    • 例外を処理し、記録しよう

Warming-up

本項はGitもPythonも初めて、という方のためにHow to beginの内容をより詳細に解説します。解説は以下の通りとなります。

  1. Gitを理解する
  2. Pythonのコードを書く
  3. Gitでバージョン管理をする

Gitを理解する

本節の目標は、Gitというソフトウェアの機能とメリットを理解することです。

Gitはファイルのバージョン管理を行うソフトウェアです。Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼び、リポジトリ配下のフォルダ/ファイルのバージョンを管理することができます。Gitリポジトリを共有するサービスは様々ありますが、その一つが「GitHub」です。

「バージョン管理」を行うメリットは多くあります。例えば、バージョン間の差分を比較したり、あるバージョンに戻したりするなどです。「バージョン」は好きなタイミングで作成することができます。Gitでは、最小のバージョン管理の単位を「コミット(commit)」と呼びます。コミットは、好きなタイミングで作成できます。以下は、本リポジトリのあるコミットの内容です。前回のコミットと、今回のコミットとの間の差分を見ることができます。

diff

バージョン管理を行うことで、複数人での作業も行いやすくなります。AさんとBさんが一緒に開発する場合、Aさんの修正とBさんの修正を両方反映したい、というケースが当然考えられます。完全に別々のパートを修正していれば簡単ですが、AさんとBさんが同じファイルを修正していた場合、互いの修正が反映されるよう注意深く作業する必要があります。Gitを使えば、この「注意深い作業」はGitが行ってくれます。異なるバージョンの修正を取り込むことを、「マージ(merge)」と呼びます。以下は、私が送られてきた修正をマージした例です。

pull request

icoxfog417 merged 2 commits into icoxfog417:master from JeffpanUK:masterと書いてあります。これは、私のバージョン(icoxfog417:master)に、修正を送ってきてくれたJeffpanUKさんのバージョン(JeffpanUK:master)を取り込んだ(=マージした)ことを意味しています。GitHubでリポジトリを公開していると、このように他の人から修正を送ってもらえることがあります。これはオープンソースのメリットです。

修正を行う際はあるバージョンから分岐してそれぞれの修正を行います。先ほどの例ではAさんの修正、Bさんの修正、上の実際のマージの例ではJeffpanUKさんの修正、といった形です。このような、あるバージョンから分岐した修正内容をその名の通り「ブランチ(branch)」と呼びます。Gitでは、どのブランチがいつ分岐し、どうマージされてきたのかという歴史を参照することが可能です。

branch

GitHubでは、ブランチから行われる修正を「プルリクエスト(Pull Request)」と呼びます。

Gitには他にも多くの機能がありますが、基本的な機能は以上となります。学んだことを振り返ってみましょう。

  • Gitは、バージョン管理を行うためのツールである。
    • Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼ぶ。
    • GitHubは、リポジトリ共有サービスの一つである。
  • バージョンの最小単位を「コミット(commit)」と呼ぶ。コミットは、好きなタイミングで作成することができる。
    • コミットを作成しておくと、コミット間の差異を確認できる。
  • あるバージョンから分岐した修正のまとまり(コミットのまとまり)を「ブランチ(branch)」と呼ぶ。
    • ブランチを分岐元に統合することを「マージ(merge)」と呼ぶ。
    • GitHub上ではブランチから行われる修正を「プルリクエスト(Pull Request)」と呼ぶ。

以上が、Gitの解説となります。本節の最後に、実際にGitHubで公開されているリポジトリを手元にダウンロードしてみましょう。

最初に、Gitの設定を行っておきます。これは、変更したのが誰なのかを明らかにするための設定です。名前とメールアドレスを登録しておきましょう。

git config --global user.name "git taro" 
git config --global user.email git.taro@example.com

まず、本リポジトリをコピーしてあなた専用のリポジトリを作成します。これは、GitHub上では"Fork"というボタンを押すことで実行できます。

fork button

次に、コピーしたリポジトリをダウンロードします。これは、git cloneというコマンドで行うことが可能です。git cloneで指定するURLは、コピーしたリポジトリの以下のボタンから確認できます。

clone

実行が完了すれば、python_exercisesというフォルダが作成されており、その中にダウンロードされたソースコードが格納されているはずです。このフォルダはGitによるバージョン管理の対象となっているため、コミットを行うことでバージョンを作成することが可能です。

次節では実際にPythonのコードを書いてみて、コミットにより書いたコードを含む「バージョン」を作成してみます。

Pythonのコードを書く

本節の目標は、実際にPythonのコードを書くことです。

実際に書くPythonのコードの解説については、Exercise 1の解説を参照してください。実装したコードを、my_answer_ex01.pyとして保存してみましょう。

Pythonの書き方についての気になる点がある場合は、以下資料を参考にしてください。

Gitでバージョン管理をする

本節の目標は、実装した内容をコミットでバージョン管理することです。

Pythonのコードを書いたファイルを作成したら、以下のコマンドを実行してみてください。

git status

すると、作成したファイルが表示されると思います。git statusは、バージョン管理の対象で、変更が行われたファイルを表示してくれます。なお、バージョン管理したくないファイルは.gitignoreで指定することができます。本リポジトリでは、exで始まるPythonのファイルはバージョン管理をしないようにしています。

では、実際コミットをしてみましょう。コミットの前に、コミットの対象とする変更(=バージョンに含める変更)を指定できます。つまり、複数の変更を行っていても「この変更はこのバージョン(コミット)に含める」「これは含めない」といった切り分けができるということです。以下のコマンドを実行してみましょう。

git add -A

-Aのオプションは、全ての変更をコミット対象とすることを意味します。ファイルを指定したい場合は、git addの後に対象のファイルを指定します。addによりコミット対象とされたものは「staged (cached)」されたファイルと呼ばれます。addしたファイルでバージョンを作成する(=コミットを行う)には以下のコマンドを実行します。なお、コマンド中のcommit messageは、このバージョンで行った変更の内容を簡単に記載します。

git commit -m "commit message"

コミットメッセージの書き方については、こちらが参考になります。これでコミットが作成できました!ただ、この変更はあなたの手元でだけ行われており、GitHub上には反映されていません。これを反映するには、pushを行います。

git push origin master

originはGitHub上のリポジトリを表し、masterはブランチを表しています。pushは送る操作ですが、送られた変更をローカルにダウンロードしたい場合はpullを実行します。他のPCで作業した内容をpushし、別のPCで作業する際にpullする、というのはよく行う処理です。

git pull origin master

変更がpushされているか、ぜひGitHub上で確認してみてください。変更の取り消しなど、より詳細な内容は以下の資料をご参考ください。

以上でWarming-upは終了です。この後もExerciseを進めて行ってみてください!