京都大学のPython講義資料から見る重要単元

# はじめに
2月13日
京都大学がPythonの講義資料を**無料公開**しました。
関連:
[講義資料リポジトリ](https://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698)
[紹介記事-Qiita](https://qiita.com/tmdoi/items/9b56984ef29fdf6bc6a6)
[紹介記事-CodeZine](https://codezine.jp/article/detail/11999)

かなり充実した内容となっています。（完璧ではありませんが。。。）
COVID-19のせいもあり自宅での学習が今後の鍵になると思われますので、有効活用させていただきましょう。
私自身、Pythonの基礎がうやむやなまま使っているので、これを機にしっかりと理解しておきたいと思います。

ちなみに**`講義資料`**と**`コラム編`**の二つに分かれていて、本記事では講義資料のみ取り扱います。
Pythonなんとなく使えるぜって人は`コラム編`を読んでみてください。面白いですよ。

>コラム編もおまけ程度に書いたので暇すぎて死にそうな人は見てみてください。
[京都大学のPython講義資料：コラム編の紹介](https://qiita.com/H_Ny/items/a822a1b2f46a330bb266)

# この記事で何をするか
この記事では、京都大学様の講義資料の中から、私の個人的な見解でランク付けを行いたいと思います。
私も初学者ですので、ご意見があればコメントお願いします。
# 記事の対象
Pythonの概要および中身について学びたい方が対象です。(for文if文など)

・Pythonの環境構築したけど何したらいいんだ！
・プログラミングやったことないよ！！
・雑に勉強してたから基礎をおさらいしたい！

周辺ソフトの部分は省きます。
# ランク付け
基本的に単元（章）ごとにランク付けします

例 : **1.コンピュータとプログラミング（☆☆☆）**

ランクの意味付けとしては

|ランク|意味|
|---|---|
|☆☆☆|必須知識、頻出内容、基礎の基礎など絶対的な部分|
|☆☆|コードの幅が広がる、知っていれば便利。知識部分|
|☆|知らなくてもいいかなと思える部分|

**この講義資料自体「基本」なので、すべて読めるなら読むべきです。その中でランク付けするならば、という感覚でお願いします。**

# 0. まえがき(☆)
目的や表記について。面倒なら読まなくていいです。
**0.5 コピペに注意**だけ一応見ておきましょう。コピペだと動かない恐れがあるという注意書きです。3行だけ。

# 以下本編


# 1. コンピュータとプログラミング(☆☆)
前提知識の章です。知っていれば理解しやすくなります。できれば読みましょう。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|1.1|この章の目的|☆|章の内容を箇条書きしています。資料構成を知りたい方は見ておきましょう。|
|1.2|コンピュータとプログラム|☆|歴史です|
|1.3|コンピュータの仕組み|☆|理論です。なくても大丈夫|
|1.4|プログラミング言語|☆☆|Pythonスタートの人は読んでおきましょう。|
|1.5|プログラミング言語Python|☆☆|Pythonの基礎知識です。読んでおきましょう。|
|1.6|さまざまな応用|☆☆|Pythonの応用先です。発見があるかもしれません。|
|1.7|プログラミングの学び方|☆☆☆|「プログラミング学習」の心得的なもの。読むことをおすすめします。|
|1.8|プログラムを構成の基礎的概念|☆☆|プログラムの構成について知っておくとスムーズかもしれないですね。|
|1.9|プログラムのどこを作るか|☆☆☆|プログラミングと言ってもすべて自力で書き上げるわけではありません。|


# 2. Pythonの実行環境と使い方(☆☆)
読まなくていいです。ググった方がいいです。

# 3.変数と演算、代入(☆☆☆)
変数に関する知識はプログラムの流れを理解するためにも必須です。
変なところで躓かないようにちゃんと確認しましょう。


|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|3.1|本章の学習の目標|☆☆|見ておきましょう。|
|3.2|プログラムの実行の流れと情報の流れ|☆☆|プログラム未経験の人は読みましょう。|
|3.3|変数の名前|☆☆☆|変数に関する基礎です。|
|3.4|変数の代入と値の評価|☆☆☆|上に同じ|
|3.5|代入演算子|☆☆|演算は省略して書くことができます。|
|3.6|Pythonで使えるデータ型|☆☆☆|データ型の知識は必須です。
|3.7|Pythonの変数のより正しい見解|☆☆|短いので読んでおきましょう。|
|3.8|例題：平方根を求める|☆☆☆|とにかく手を動かすのが大事です。|
|3.9|読み易い式の表記|☆|見なくてもいいです。|


# 4. 制御構造(☆☆☆)
基礎の基礎です。プログラムの前提知識なので必ず確認しましょう。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|4.1|本章の学習の目標|☆☆|いきなり用語がたくさん。一応見ておきましょう。|
|4.2|for 文と range() 関数を用いた一定回数の繰り返し|☆☆☆|基礎 of 基礎|
|4.3|for文の書き方|☆☆☆|上に同じ|
|4.4|Pythonでのブロック|☆☆☆|必須|
|4.5|for文内での処理の制御|☆☆☆|制御の基礎|
|4.6|range()関数|☆☆☆|基礎です。for文とセット。|
|4.7|for文の入れ子|☆☆|ちょっと難しい基礎。慣れてからでもOK|
|4.8|while文による繰り返し|☆☆|for+ifみたいな。存在は知っておきたい|
|4.9|if文による分岐|☆☆☆|基礎 of 基礎。|
|4.10|条件式の書き方|☆☆☆|ちょっと複雑な部分もありますが基礎です。|
|4.11|if文の入れ子|☆☆|複合表記のほうがいいと思います。|
|4.12|端末からの入力|☆☆☆|基礎です。|
|4.13|エラーへの対処|☆☆|基礎ですが最悪飛ばしても構いません。|
|4.14|Pythonでの数学関数|☆☆|基本関数です。後から確認でもOK|
|4.15|数値を表示する際のフォーマット指定|☆☆|知っておくと見やすくなる|
|4.16|力試し|☆|ここの問題通りじゃなくてもいいです。|

# 5. 関数を使った処理のカプセル化(☆☆)
関数は使わなくても同じ処理が書けますが、見やすく分かりやすいコーディングに必須です。
簡単な使い方から少しずつ構造化していければよいと思います。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|5.1|本章の学習の目標|☆|一応読んでおきましょう。|
|5.2|前章の例題から|☆☆|関数の簡単な例です。|
|5.3|関数square_root()を実装する|☆☆|↑の実際のコードです。|
|5.4|関数定義の書式|☆☆☆|関数の構文です。最低限関数だと分かるように。|
|5.5|仮引数と実引数|☆☆☆|関数で使う変数の説明。使えるようにしましょう|
|5.6|関数内の変数の扱い|☆☆|ちょっとだけ複雑になります。引数を減らせます。|
|5.7|関数の利用パターン|☆☆☆|関数の使い方です。必要に応じて5.6を参照|
|5.8|関数の呼び出しと関数オブジェクトの引き渡し|☆☆|よくやります|
|5.9|デフォルト引数値とキーワード引数|☆☆☆|必須です|

# 6. Turtleで遊ぶ(☆)
ざっと見て面白そうだと思ったら触ってみてください。
別にやらなくてもいいです。

# 7. 8. Tkinterで作るGUIアプリケーション(1)(2) (☆☆)
GUIに興味ある人は触ってみてください。
Tkinterである必要はないですし、やりたいことが決まってからでいいと思います。

# 9. クラス(☆☆)
関数のグレードアップ版です。理解が追い付かない人はとりあえず飛ばしても大丈夫です。
関数を扱えるようになったら確認しましょう。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|9.1|本章の学習の目標|☆||
|9.2|オブジェクト指向プログラミング|☆☆|イメージをつかみましょう。|
|9.3|Pythonでのクラスの書き方|☆☆☆|書けなくても読むのに必要です。|
|9.4|クラスの変数とアクセスの制限|☆☆☆|同上。|
|9.5|継承|☆|飛ばしても大丈夫です。|
|9.6|インスタンスを起点にクラスを設計する|☆☆|短いので読みましょう。|

# 10. リスト(☆☆☆)
必須です。変数の次に置くべきだと思いました。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|10.1|本章の学習の目標|☆|一応読んでおきましょう。|
|10.2|Python Shellを用いた学習|☆☆|コマンドラインで実行する場合読んでおきましょう。|
|10.3|リストとは|☆☆☆|必須です。クラスより大事だと思います。|
|10.4|リストの生成|☆☆☆|必須です。|
|10.5|リストの要素へのアクセス|☆☆☆|必須です。|
|10.6|リストを操作するfor文|☆☆☆|よく使います。|
|10.7|負の添え字とスライス|☆☆☆|よく使います。|
|10.8|リストへの追加、結合|☆☆☆|よく使います。|
|10.9|リストのリスト|☆☆☆|ちょっと複雑ですが必須です。|
|10.10|内包表記|☆☆|見やすさ、処理速度が向上します。|
|10.11|リストの代入と複製|☆☆|ちょっとややこしいですが覚えておきましょう。|
|10.12|イミュータブルとミュータブル|☆☆|同上。ふと躓いたりします。|
|10.13|浅いコピー、深いコピー|☆☆|ややこしいですが大切です。|


# 11. ファイル入出力
必須です。やり方はいろいろあるので調べてみることをおすすめします。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|11.1|本章の学習の目標|☆||
|11.2|データを永続的に利用するには|☆☆|前置き。読んでおきましょう。|
|11.3|ファイルについて|☆☆☆|必須です。|
|11.4|まずは動かしてみよう|☆☆☆|書いてみることが大切です。|
|11.5|Pythonでのファイルの読み書き|☆☆☆|詳しい説明です。|
|11.6|例題1 波の近似|☆|Tkinterも触る人はやってみましょう。|
|11.7|例題2|☆|同上。|

# 12. 三目並べで学ぶプログラム開発(☆☆)
アルゴリズム設計の練習は必要です。しかしちょっとボリュームが大きい。。。
ネットで簡単なアルゴリズム問題を探すと良いと思います。
例:「*によるピラミッド出力」、「様々なソートアルゴリズム」

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|12.1|本章の学習の目標|☆||
|12.2|プログラムを開発するということ|☆☆☆|プログラム開発に重要なお話。|
|12.3|設計手順-コンピュータを使う前にすることがある|☆☆☆|基本です。|
|12.4|三目並べを例にしたプログラムの設計|☆☆|ボリューミーです。読むだけでも構いません。|
|12.5|プログラムの実装|☆☆|同上。コピペで動かしてみたり。|
|12.6|力試し|☆|暇な人はやってみましょう。|
|12.7|プログラムの開発に関連するいくつかの話題|☆☆|知識として読んでおきましょう。|

# 13. Pythonの学術利用(☆☆☆)
これらも必須です。Pythonが人気な理由の一つがライブラリの豊富さです。
ここでは最も有名なものが紹介されていますが、調べれば色々あります。
例:Matplotlibよりseaborn派という人は多いです。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|13.1|本章の学習目標|☆☆☆|頻出ライブラリの紹介です。|
|13.2|import時の別名|☆☆☆|必須です。|
|13.3|NumPy|☆☆☆|必須です。|
|13.4|Matplotlib|☆☆☆|グラフが扱えるかは大きな差です。|
|13.5|pandas|☆☆☆|Pythonデフォルトより使います。必須です。|
|13.6|課題|☆☆|実際に書いてみましょう。|
||参考文献|☆☆|解説ブログも良いですが、公式リファレンスを読むことをおすすめします。|

# 14. 振り返りとこれから(☆☆)
あとがきです。詳しく書いてないので自分でも調べたほうがいいです。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|14.1|本章の学習の目標|☆||
|14.2|振り返り|☆||
|14.3|Pythonの利用環境|☆☆|別で調べたほうが良いです。|
|14.4|モジュール等の追加|☆|同上。|
|14.5|本書で紹介しなかった話題|☆☆|今後の方針に役立ちます。|
|14.6|感謝と恩返し|☆|あとがき。いいこと書いてます。|

# 15. IDLE Python 便利帳(☆☆)
この章は`Tips`的な内容ですね。**コラム編**にはもっといろいろな`Tips`が乗っています。ぜひ見てみましょう。

|章|タイトル|ランク|概要|
|:---|:---|:---|:---|
|15.1|Python便利メモ|☆☆|Python内で使えるHELP集的なもの。|
|15.2|ファイル名に注意|☆☆|注意事項です。|
|15.3|IDLEメモ-Python Shell|☆☆☆|汎用的なコマンドです。便利です。|
|15.4|IDLEメモ-エディタ|☆☆☆|同上。|

# おわりに
最後までご覧いただきありがとうございました。
Pythonの基礎について丁寧に作られた教材だと思います。京都大学様に感謝します。

しかしながら、基礎ばかりですので自分のやりたいことに沿ってさらに学習することが必要です。
特にアルゴリズム設計が重要ですので、人のコードを見たり、競プロの過去問に挑戦することをおすすめします。

こちらの教材には`コラム編`があります。そちらでは**重要だけど講義では省かれる**ような内容が豊富にまとまっています。
ぜひ読むことをおすすめします。

**こちらの記事は以上となります。もし質問があればコメントを頂ければ対応します。ありがとうございました。**