{"id":18349000,"url":"https://github.com/icoxfog417/python_exercises","last_synced_at":"2025-10-05T22:45:24.108Z","repository":{"id":145819394,"uuid":"66055533","full_name":"icoxfog417/python_exercises","owner":"icoxfog417","description":"short exercises for Python","archived":false,"fork":false,"pushed_at":"2019-01-17T08:54:35.000Z","size":28,"stargazers_count":59,"open_issues_count":1,"forks_count":340,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-09T12:43:58.343Z","etag":null,"topics":["python","python-exercises"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icoxfog417.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-19T05:34:33.000Z","updated_at":"2025-07-19T09:07:56.000Z","dependencies_parsed_at":"2023-04-07T14:00:45.825Z","dependency_job_id":null,"html_url":"https://github.com/icoxfog417/python_exercises","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/icoxfog417/python_exercises","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icoxfog417%2Fpython_exercises","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icoxfog417%2Fpython_exercises/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icoxfog417%2Fpython_exercises/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icoxfog417%2Fpython_exercises/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icoxfog417","download_url":"https://codeload.github.com/icoxfog417/python_exercises/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icoxfog417%2Fpython_exercises/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278532356,"owners_count":26002345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","python-exercises"],"created_at":"2024-11-05T21:19:57.899Z","updated_at":"2025-10-05T22:45:24.061Z","avatar_url":"https://github.com/icoxfog417.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# python exercises\n\nPythonの基礎的な処理を学ぶためのリポジトリです。\n\n## Setup\n\n以下のソフトウェアをインストールしておいてください\n\n* [Git](https://git-scm.com/)\n* [Python (Miniconda)](https://conda.io/miniconda.html)\n  * Pythonは3系を使います。\n  * [Python公式](https://www.python.org/downloads/)もありますが、Minicondaでのインストールを推奨します。\n* プログラムを開発するための、好きなエディタ。以下がおすすめです。\n  * [Visual Studio Code](https://code.visualstudio.com/)\n  * [PyCharm](https://www.jetbrains.com/pycharm/)\n\n## How to begin\n\n以下が、Exerciseの手順です。GitもPythonも初めて、という方は[Warming-up](https://github.com/icoxfog417/python_exercises#warming-up)を参照してください。\n\n1. 右上にある「Fork」というボタンから、本リポジトリをFork(=コピー)してください。\n2. forkしたリポジトリを、`git clone`によって手元の端末に取ってきます。これで準備は完了です。\n3. 各フォルダの中にあるREADMEには、そのエクササイズで達成すべき課題が書かれています。Pointで示されているヒントをもとに、処理を完成させてください。\n4. エクササイズで実装したコードは、好きな名前で保存してください(なお、`ex`始まりのファイルは`.gitignore`されています)。\n5. 各フォルダには、解答例が配置されています。わからない場合は、そちらを参考にしてください。\n\n## Exercises\n\n* [Let's Execute Python](https://github.com/icoxfog417/python_exercises/tree/master/01_execute_python)\n  * Pythonプログラムを実行してみよう\n* [Collections](https://github.com/icoxfog417/python_exercises/tree/master/02_collections)\n  * Pythonで配列のデータを処理してみよう\n* [Find Pattern](https://github.com/icoxfog417/python_exercises/tree/master/03_find_pattern)\n  * 文字列の中から特定のパターンを見つけてみよう\n* [Class](https://github.com/icoxfog417/python_exercises/tree/master/04_class)\n  * Pythonのクラスと単体テストについて知ろう\n* [Use Packages](https://github.com/icoxfog417/python_exercises/tree/master/05_use_packages)\n  * 便利なライブラリを使って処理を実装してみよう\n* [Exception \u0026 logging](https://github.com/icoxfog417/python_exercises/tree/master/06_exception_logging)\n  * 例外を処理し、記録しよう\n\n## Warming-up\n\n本項はGitもPythonも初めて、という方のためにHow to beginの内容をより詳細に解説します。解説は以下の通りとなります。\n\n1. [Gitを理解する](https://github.com/icoxfog417/python_exercises#git%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B)\n2. [Pythonのコードを書く](https://github.com/icoxfog417/python_exercises#python%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F)\n3. [Gitでバージョン管理をする](https://github.com/icoxfog417/python_exercises#git%E3%81%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%92%E3%81%99%E3%82%8B)\n\n### Gitを理解する\n\n本節の目標は、Gitというソフトウェアの機能とメリットを理解することです。\n\nGitはファイルのバージョン管理を行うソフトウェアです。Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼び、リポジトリ配下のフォルダ/ファイルのバージョンを管理することができます。Gitリポジトリを共有するサービスは様々ありますが、その一つが「GitHub」です。\n\n「バージョン管理」を行うメリットは多くあります。例えば、バージョン間の差分を比較したり、あるバージョンに戻したりするなどです。「バージョン」は好きなタイミングで作成することができます。Gitでは、最小のバージョン管理の単位を「コミット(commit)」と呼びます。コミットは、好きなタイミングで作成できます。以下は、[本リポジトリのあるコミットの内容です](https://github.com/icoxfog417/python_exercises/commit/2425c0c41b966fd9f30ec1144a668324b73a185b)。前回のコミットと、今回のコミットとの間の差分を見ることができます。\n\n![diff](https://user-images.githubusercontent.com/544269/51301442-916dd900-1a72-11e9-98f8-6f608e58295e.png)\n\nバージョン管理を行うことで、複数人での作業も行いやすくなります。AさんとBさんが一緒に開発する場合、Aさんの修正とBさんの修正を両方反映したい、というケースが当然考えられます。完全に別々のパートを修正していれば簡単ですが、AさんとBさんが同じファイルを修正していた場合、互いの修正が反映されるよう注意深く作業する必要があります。Gitを使えば、この「注意深い作業」はGitが行ってくれます。異なるバージョンの修正を取り込むことを、「マージ(merge)」と呼びます。以下は、私が送られてきた修正をマージした例です。\n\n![pull request](https://user-images.githubusercontent.com/544269/51302740-97fe4f80-1a76-11e9-9117-4811d4f33770.png)\n\n`icoxfog417 merged 2 commits into icoxfog417:master from JeffpanUK:master`と書いてあります。これは、私のバージョン(`icoxfog417:master`)に、修正を送ってきてくれた`JeffpanUK`さんのバージョン(`JeffpanUK:master`)を取り込んだ(=マージした)ことを意味しています。GitHubでリポジトリを公開していると、このように他の人から修正を送ってもらえることがあります。これはオープンソースのメリットです。\n\n修正を行う際はあるバージョンから分岐してそれぞれの修正を行います。先ほどの例ではAさんの修正、Bさんの修正、上の実際のマージの例では`JeffpanUK`さんの修正、といった形です。このような、あるバージョンから分岐した修正内容をその名の通り「ブランチ(branch)」と呼びます。Gitでは、どのブランチがいつ分岐し、どうマージされてきたのかという歴史を参照することが可能です。\n\n![branch](https://user-images.githubusercontent.com/544269/51303246-232c1500-1a78-11e9-9ecc-03b73dc4c387.png)\n\nGitHubでは、ブランチから行われる修正を「プルリクエスト(Pull Request)」と呼びます。\n\nGitには他にも多くの機能がありますが、基本的な機能は以上となります。学んだことを振り返ってみましょう。\n\n* Gitは、バージョン管理を行うためのツールである。\n  * Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼ぶ。\n  * GitHubは、リポジトリ共有サービスの一つである。\n* バージョンの最小単位を「コミット(commit)」と呼ぶ。コミットは、好きなタイミングで作成することができる。\n  * コミットを作成しておくと、コミット間の差異を確認できる。\n* あるバージョンから分岐した修正のまとまり(コミットのまとまり)を「ブランチ(branch)」と呼ぶ。\n  * ブランチを分岐元に統合することを「マージ(merge)」と呼ぶ。\n  * GitHub上ではブランチから行われる修正を「プルリクエスト(Pull Request)」と呼ぶ。\n\n以上が、Gitの解説となります。本節の最後に、実際にGitHubで公開されているリポジトリを手元にダウンロードしてみましょう。\n\n最初に、Gitの設定を行っておきます。これは、変更したのが誰なのかを明らかにするための設定です。名前とメールアドレスを登録しておきましょう。\n\n```\ngit config --global user.name \"git taro\" \ngit config --global user.email git.taro@example.com\n```\n\nまず、本リポジトリをコピーしてあなた専用のリポジトリを作成します。これは、GitHub上では\"Fork\"というボタンを押すことで実行できます。\n\n![fork button](https://user-images.githubusercontent.com/544269/51303835-e4975a00-1a79-11e9-9632-7efde8140a6a.png)\n\n\n次に、コピーしたリポジトリをダウンロードします。これは、`git clone`というコマンドで行うことが可能です。`git clone`で指定するURLは、コピーしたリポジトリの以下のボタンから確認できます。\n\n![clone](https://user-images.githubusercontent.com/544269/51303908-1a3c4300-1a7a-11e9-980a-d4fbe6769d24.png)\n\n実行が完了すれば、`python_exercises`というフォルダが作成されており、その中にダウンロードされたソースコードが格納されているはずです。このフォルダはGitによるバージョン管理の対象となっているため、コミットを行うことでバージョンを作成することが可能です。\n\n次節では実際にPythonのコードを書いてみて、コミットにより書いたコードを含む「バージョン」を作成してみます。\n\n### Pythonのコードを書く\n\n本節の目標は、実際にPythonのコードを書くことです。\n\n実際に書くPythonのコードの解説については、[Exercise 1](https://github.com/icoxfog417/python_exercises/tree/master/01_execute_python)の解説を参照してください。実装したコードを、`my_answer_ex01.py`として保存してみましょう。\n\nPythonの書き方についての気になる点がある場合は、以下資料を参考にしてください。\n\n* [Python チュートリアル](http://docs.python.jp/3/tutorial/index.html)\n* [Pythonを書き始める前に見るべきTips](http://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0)\n\n\n### Gitでバージョン管理をする\n\n本節の目標は、実装した内容をコミットでバージョン管理することです。\n\nPythonのコードを書いたファイルを作成したら、以下のコマンドを実行してみてください。\n\n`git status`\n\nすると、作成したファイルが表示されると思います。`git status`は、バージョン管理の対象で、変更が行われたファイルを表示してくれます。なお、バージョン管理したくないファイルは`.gitignore`で指定することができます。本リポジトリでは、`ex`で始まるPythonのファイルはバージョン管理をしないようにしています。\n\nでは、実際コミットをしてみましょう。コミットの前に、コミットの対象とする変更(=バージョンに含める変更)を指定できます。つまり、複数の変更を行っていても「この変更はこのバージョン(コミット)に含める」「これは含めない」といった切り分けができるということです。以下のコマンドを実行してみましょう。\n\n`git add -A`\n\n`-A`のオプションは、全ての変更をコミット対象とすることを意味します。ファイルを指定したい場合は、`git add`の後に対象のファイルを指定します。`add`によりコミット対象とされたものは「staged (cached)」されたファイルと呼ばれます。`add`したファイルでバージョンを作成する(=コミットを行う)には以下のコマンドを実行します。なお、コマンド中の`commit message`は、このバージョンで行った変更の内容を簡単に記載します。\n\n`git commit -m \"commit message\"`\n\nコミットメッセージの書き方については、[こちら](https://qiita.com/kawasima/items/feac49a299213e2c8ba6)が参考になります。これでコミットが作成できました！ただ、この変更はあなたの手元でだけ行われており、GitHub上には反映されていません。これを反映するには、`push`を行います。\n\n`git push origin master`\n\n`origin`はGitHub上のリポジトリを表し、`master`はブランチを表しています。`push`は送る操作ですが、送られた変更をローカルにダウンロードしたい場合は`pull`を実行します。他のPCで作業した内容を`push`し、別のPCで作業する際に`pull`する、というのはよく行う処理です。\n\n`git pull origin master`\n\n変更が`push`されているか、ぜひGitHub上で確認してみてください。変更の取り消しなど、より詳細な内容は以下の資料をご参考ください。\n\n* [Git チュートリアル](https://www.atlassian.com/ja/git/tutorial/git-basics)\n* [使い始める Git](http://qiita.com/icoxfog417/items/617094c6f9018149f41f)\n\n以上でWarming-upは終了です。この後もExerciseを進めて行ってみてください！\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficoxfog417%2Fpython_exercises","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficoxfog417%2Fpython_exercises","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficoxfog417%2Fpython_exercises/lists"}