Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import Answer from "@site/src/components/Answer";

プログラミングの世界では、まず画面上に `Hello World!` と表示させるのが慣例になっています。以下のコードが画面上に `Hello World!` と表示するプログラムです。以下のコードを Google Colaboratory 上で実行してみましょう。

<ViewSource path="/get-started/hello-world.ipynb" />
<ViewSource path="/hello-world/hello-world.ipynb" />

`Hello World!` と表示されましたか
`Hello World!` と表示されたら成功です

`print` は画面に文字列を表示させる命令です。`"` と `"` で括った文字列が画面に表示されます。

Expand All @@ -25,20 +25,16 @@ import Answer from "@site/src/components/Answer";

<Answer>

`"` と `"` で括られた文字列を `Hello World!` から次のように `Hello from Python` に変えれば、完成です。
`"` と `"` で括られた文字列を `Hello World!` から次のように `Hello from Python!` に変えれば、完成です。

<ViewSource path="/get-started/hello-from-python.ipynb" />
<ViewSource path="/hello-world/hello-from-python.ipynb" />
</Answer>

## コメント

`#` から文末まではコメントとして扱われます。
プログラムを読みやすくするために説明を書くときや一時的にあるコードを実行しないようにするときなどによく使われます。

<ViewSource path="/get-started/comment.ipynb" />
<ViewSource path="/hello-world/comment.ipynb" />

<ViewSource path="/get-started/comment2.ipynb" />

ダブルクォーテーション 3 つ(`"""`)を使って、複数行のコメントを書くこともできます。

<ViewSource path="/get-started/comment3.ipynb" />
<ViewSource path="/hello-world/comment2.ipynb" />
8 changes: 4 additions & 4 deletions docs/01python/03expressions/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ sidebar_position: 3
import ViewSource from "@site/src/components/ViewSource";
import Answer from "@site/src/components/Answer";

# 式と演算子
# 算術演算子

## 式と演算子
## 算術演算子

Python で計算をしてみましょう。次のように書くと、$1+1$ を Python で計算し、その結果を表示することができます。
Python を使って計算をしてみましょう。次のように書くと、$1+1$ を Python に計算させて、その結果を表示することができます。

<ViewSource path="/expressions/sum.ipynb" />

Expand Down Expand Up @@ -44,7 +44,7 @@ Python では足し算以外にも次のように様々な計算をすること

<ViewSource path="/expressions/golden-ratio.ipynb" />

:::info
:::tip
平方根は 0.5 乗とすることで計算できます。
:::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,31 @@ import Answer from "@site/src/components/Answer";

## 変数

前項のようにして、10℃ での音速を求めてみましょう。$V$ を音速、$t$ を摂氏温度とすると、音速は次のようにして求められるとします
前項のようにして、10℃ での音速を求めてみましょう。$V$ を音速、$t$ を摂氏温度とすると、音速は次のような式で求められるとします

$$
V=331.5+0.6t
$$

<ViewSource path="/variables/sound-velocity.ipynb" />
<ViewSource path="/variable/sound-velocity.ipynb" />

一応できましたが、 $t$ を変えようとすると、(これぐらいならすぐできますが)いちいちプログラムを全て読み直さないといけません。

しかし、Python では変数が使えます。変数は数値や文字列を入れられる箱のようなもので、任意の数値や文字列を格納することができます。そのため、変数を使うと、次のようにより簡単に記述できます。

<ViewSource path="/variables/sound-velocity2.ipynb" />
<ViewSource path="/variable/sound-velocity2.ipynb" />

このようにすれば、例えば 10℃ ではなく 20℃ のときの音速を求めたくなったときに `t = 20` とするだけでよくなり、より簡単にプログラムを変更することができます。

:::info
:::tip
Python では、数学とは違い `=` は右の結果を左の変数に代入するという意味です。
そのため、次のようなプログラムを実行すると 2 が出力されます。

<ViewSource path="/variables/substitution.ipynb" />
<ViewSource path="/variable/substitution.ipynb" />
:::

:::note 命名規則
複数の語を一語につなげて表す場合、様々な命名方法があります。下に主なものの名称と例を示します。
:::info 命名規則
複数の語を一語につなげて表す場合、様々な命名規則があります。下に主なものの名称と例を示します。

| 名称 | 例 |
| -------------- | ------------ |
Expand All @@ -43,21 +43,20 @@ Python では、数学とは違い `=` は右の結果を左の変数に代入
| ケバブケース | `kebab-case` |

Python では、スネークケースを使うことが多いようです。
(ただし、クラス(後で出てきます)の命名には、パスカルケースを使うようです。)

複数の語を一語につなげる場合は、上記のように `_`(アンダーバー)を使って文節が分かるようにすると良いでしょう。
(ただし、クラス(ここでは説明しません)の命名には、パスカルケースを使うようです。)
そのため、複数の語を一語につなげる場合は、上記のように `_`(アンダーバー)を使って文節が分かるようにすると良いでしょう。
:::

:::note 定数(他の言語の学習者へ)
:::info 定数(他の言語の学習者へ)
Python では定数は使えないようです。慣習的に定数は大文字のみの変数として表すようです。例: `SAMPLE_CONST`
:::

### 練習問題 1

[式と演算子の項](/docs/01python/03expressions/#問題)の摂氏温度から華氏温度を求める練習問題を変数を使って解いてみましょう。
[演算子の項](/docs/01python/03expressions/#問題)の摂氏温度から華氏温度を求める練習問題を変数を使って解いてみましょう。

<Answer>
<ViewSource path="/variables/fahrenheit.ipynb" />
<ViewSource path="/variable/fahrenheit.ipynb" />
</Answer>

### 練習問題 2
Expand All @@ -75,5 +74,5 @@ y

3 行目では、`x + y` の値が評価されてその結果が `y` に代入されます。そのため、$2+3=5$ が `y` に代入され `5` が出力されます。

<ViewSource path="/variables/substitution2.ipynb"/>
<ViewSource path="/variable/substitution2.ipynb"/>
</Answer>
16 changes: 7 additions & 9 deletions docs/01python/05function/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Answer from "@site/src/components/Answer";

## 関数

$f(x)=x^2$ としたときの、$f(2)+f(3)$ を求めてみましょう。
$f(x) = x^2$ としたときの、$f(2) + f(3)$ を求めてみましょう。

<ViewSource path="/function/x2.ipynb" />

Expand Down Expand Up @@ -48,10 +48,8 @@ Python では、きちんとインデント(字下げ)をしないとエラ

<ViewSource path="/function/introduce_self.ipynb" />

:::note
上のプログラムは、下と同じ意味です。下のプログラムでも問題ないのですが、少し格好悪いので、`f-string` を使ってしまいました。気にしないでください。

`+` 記号を使うと、文字列をつなげることができます。
:::info
上のプログラムでも問題ないのですが、実際には次のプログラムのように `f-string` を使った表記の方が可読性が高くなって良さそうです。

<ViewSource path="/function/introduce_self2.ipynb" />
:::
Expand All @@ -60,8 +58,8 @@ Python では、きちんとインデント(字下げ)をしないとエラ

<ViewSource path="/function/introduce_self3.ipynb" />

:::note
先ほどと同様の理由で `f-string` を使ってしまいました。`f-string` を使わないと、次のようになります。
:::info
`f-string` を使うと、次のようになります。

<ViewSource path="/function/introduce_self4.ipynb" />
:::
Expand Down Expand Up @@ -91,8 +89,8 @@ $G=6.7\times 10^{-11}$、$r=2$、$M=60$、$m=20$ とします。
<Answer>
<ViewSource path="/function/introduce_language.ipynb" />

:::note
`f-string` を使わないと次のようになります
:::info
`f-string` を使うと次のようになります

<ViewSource path="/function/introduce_language2.ipynb" />
:::
Expand Down
12 changes: 9 additions & 3 deletions docs/01python/06library/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ import math

`math` ライブラリにはこれ以外にも多くの関数が定義されています。その一部を紹介します。

:::caution

下に示した `math` ライブラリの関数をすべて覚えようとしなくて構いません。必要なときに、調べれば十分です。`math` ライブラリのドキュメントは[こちら](https://docs.python.org/ja/3/library/math.html)です。よく使う関数は自然に覚えます。

:::

| 関数名 | 説明 | 例 |
| ------------------ | ------------------------------------ | ------------------------------------------ |
| `math.pi` | $\pi$ を返す。 | <ViewSource path="/library/pi.ipynb" /> |
Expand All @@ -45,7 +51,7 @@ import math
また、`math` ライブラリ以外にも便利なライブラリはたくさんあるので、それについても調べてみましょう。

:::note 調べ方
まず、やりたいことを[Google](https://www.google.co.jp/)や[Yahoo Japan!](https://www.yahoo.co.jp/)、[Bing](https://www.bing.com/?cc=jp)などの検索エンジンを用いて調べてみましょう。Python に関する情報は豊富にあるので、きっと見つかるはずです。そこで、どのような方法を使えば良いのかわかったら、公式のドキュメントを読んで詳しい使い方を学びましょう。インターネットには古い情報や間違った情報も多くあるので、公式ドキュメントを読むとよく分かることも多いです。
まず、やりたいことを[Google](https://www.google.co.jp/)や[Yahoo! Japan](https://www.yahoo.co.jp/)、[Bing](https://www.bing.com/?cc=jp)などの検索エンジンを用いて調べてみましょう。Python に関する情報は豊富にあるので、きっと見つかるはずです。そこで、どのような方法を使えば良いのかわかったら、公式のドキュメントを読んで詳しい使い方を学びましょう。インターネットには古い情報や間違った情報も多くあるので、公式ドキュメントを読むとよく分かることも多いです。

Python の公式ドキュメントは、<https://docs.python.org/ja/3/>を見ると良いでしょう。
:::
Expand All @@ -71,8 +77,8 @@ Python の公式ドキュメントは、<https://docs.python.org/ja/3/>を見る

<ViewSource path="/library/e.ipynb" />

:::note
$e^1=e$ であることを利用して下のようにすれば調べなくてもできますが(笑)、上のようにした方が良いでしょう。
:::info
$e^1 = e$ であることを利用して下のようにすれば調べなくてもできますが(笑)、上のようにした方が良いでしょう。

<ViewSource path="/library/e2.ipynb" />
:::
Expand Down
10 changes: 8 additions & 2 deletions docs/01python/07pip/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,24 @@ import Answer from "@site/src/components/Answer";

## pip

前項で、Python では様々なライブラリを使用することができると書きました。一部のプリインストールされているライブラリは先程のようにただファイルの先頭で `import ライブラリ名` のように書くだけでライブラリを使用することができますが、多くのライブラリはこれだけでは使用することができません。
前項で、Python では様々なライブラリを使用することができると書きました。一部のプリインストールされているライブラリは先程のようにただファイルの先頭で `import ライブラリ名` のように書くだけでライブラリを使用することができますが、多くのライブラリはこれだけでは使用することができません。パッケージをインストールする必要があります。

Python では、パッケージのインストールを行うユーティリティとして、pip(Pip Installs Packages, Pip Installs Python) が使われます。

## pip の使い方

Google Colaboratory で pip を使ってパッケージをインストールするには、`!pip install ライブラリ名` のように書いてから、前項のように `import ライブラリ名` と書くことで任意のライブラリを使用することができます。
Google Colaboratory で pip を使ってパッケージをインストールするには、`!pip install ライブラリ名` のように書くだけです。その後は、前項のように `import ライブラリ名` と書くことで任意のライブラリを使用することができます。

例として、Python の代表的なデータ解析を支援するパッケージである `pandas` パッケージを使ってみましょう。

次のようにすると、確かに `pandas` パッケージを使うことができたことが確認できます。`import pandas as pd` というのは、`pandas` パッケージを `pd` という名前でインポートするという意味です。

:::note

ここで `pandas` パッケージを使った意味は特にありません。使い方を覚える必要も特にはありません。

:::

<ViewSource path="/pip/pandas.ipynb" />

:::info
Expand Down
10 changes: 6 additions & 4 deletions docs/01python/08for/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ for 文を用いると、このように簡単に書くことができます。

<ViewSource path="/for/for_sum_1to1000.ipynb" />

:::info
:::tip
`sum += i` は、`sum = sum + i` と同じ意味です。累算代入演算子と呼ばれます。
次のように、様々なものがあります。

Expand Down Expand Up @@ -65,11 +65,13 @@ for 文は同じ処理をただ繰り返したいときにも用いることが

<ViewSource path="/for/for_hello.ipynb" />

:::note
上記のプログラムは、次のようにしても実行できます
:::tip
上記のプログラムは、次と同じです

<ViewSource path="/for/for_hello2.ipynb" />

Python では、変数を使わないときは、アンダーバー(`_`)を使用します。

次のプログラムを見れば分かるように、 `range` 関数に引数を一つだけ渡すと、`i` には $[0, a)$ ($a$ を引数とする)となるような整数が順番に渡されます。

<ViewSource path="/for/range.ipynb" />
Expand Down Expand Up @@ -109,7 +111,7 @@ $n$ の階乗を求める関数を作って、実際に 10 の階乗を求めて
<Answer>
<ViewSource path="/for/factorial.ipynb" />

ちなみに、`math` ライブラリに階乗を計算するプログラムが入っているようです。[公式ドキュメントはこちら](https://docs.python.org/ja/3/library/math.html#math.factorial)
ちなみに、`math` ライブラリに階乗を計算するプログラムが入っているようです。公式ドキュメントは[こちら](https://docs.python.org/ja/3/library/math.html#math.factorial)

これを使えば、次のようになります。

Expand Down
4 changes: 2 additions & 2 deletions docs/01python/10multi-array/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,10 @@ A、B、C の 3 人の生徒がいて、それぞれの国語、数学、英語
| **C** | 24 | 92 | 34 |
| **D** | 28 | 44 | 19 |

三次元配列を用いて、これの合計点を求めてみましょう
三次元配列を用いて、これの合計点を求めると次のようになります

<ViewSource path="/multi-array/3_dim_array_sample.ipynb" />

## 多次元配列

さらに発展させて、多次元配列を考えることもできます
さらに発展させて、四次元配列、五次元配列、…を考えることもできます
2 changes: 1 addition & 1 deletion docs/01python/11if/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Python では、次のように比較演算子を用いて真偽を判定する
| `>` | 大なり | <ViewSource path="/if/greater.ipynb" /> |
| `>=` | 以上 | <ViewSource path="/if/over.ipynb" /> |

実は、Python では数学のように複数の比較演算子を使った条件も書くことができます。他の多くのプログラミング言語はこのような表記はできません
他の多くのプログラミング言語はできませんが、実は、Python では数学のように複数の比較演算子を使った条件も書くことができます。

<ViewSource path="/if/comparison_operator2.ipynb" />

Expand Down
4 changes: 2 additions & 2 deletions docs/01python/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
sidebar_position: 2
---

# Python
# Python の基礎

ここでは、 Python について説明します。
ここでは、Python について説明します。この内容を理解すれば Python の基本的な使い方は十分理解できます
12 changes: 5 additions & 7 deletions docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,21 @@ sidebar_position: 1

# Introduction to Algorithms

これは、2022 年度アルゴリズム入門のシケプリのようなものを目指して作成されました。

Python やアルゴリズムについて簡単にまとめていこうかなと思っています。
これは、2022 年度アルゴリズム入門のシケプリです。

<img
src="https://colab.research.google.com/assets/colab-badge.svg"
alt="Open In Colab"
width="150"
/>

上のようなボタンをクリックすると、コードを Google Colaboratory 上で実行できるようになっています
上のようなボタンをクリックすると、サンプルコードを Google Colaboratory 上で実行できます

誤植や要望などがありましたら、どんな些細なことでも下記の Google Form などで気軽に連絡してください。

特に誤植などは見つけたら、ぜひ教えてください。(その場ですぐに直せるようにしたので)
「てにをは」の間違いなどどんな些細なことでも是非ご報告ください。

[誤植の訂正、感想等入力フォーム](https://forms.gle/QrtQh7TLPPF6dGci7)
[誤植、要望等報告フォーム](https://forms.gle/QrtQh7TLPPF6dGci7)

## 更新履歴

Expand Down Expand Up @@ -56,4 +54,4 @@ Python やアルゴリズムについて簡単にまとめていこうかなと

10/10 練習問題を追加

10/10 第一周の分を執筆 環境構築、はじめての Python、式と演算子、変数
10/10 第一周の分を執筆 環境構築、はじめての Python、演算子、変数
2 changes: 1 addition & 1 deletion static/for/for_hello.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"metadata": {},
"source": [
"for i in range(10):\n",
"for _ in range(10):\n",
" print(\"Hello!\")"
],
"cell_type": "code",
Expand Down
2 changes: 1 addition & 1 deletion static/function/introduce_language.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"metadata": {},
"source": [
"def introduce_self(name, language):\n",
" print(f\"\u79c1\u306e\u540d\u524d\u306f\u3001{name}\u3067\u3059\u3002{language}\u9078\u629e\u3067\u3059\u3002\")\n",
" print(\"\u79c1\u306e\u540d\u524d\u306f\u3001\" + name + \"\u3067\u3059\u3002\" + language + \"\u9078\u629e\u3067\u3059\u3002\")\n",
"\n",
"\n",
"introduce_self(\"\u6771\u5927\u592a\u90ce\", \"\u4e2d\u56fd\u8a9e\")"
Expand Down
2 changes: 1 addition & 1 deletion static/function/introduce_language2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"metadata": {},
"source": [
"def introduce_self(name, language):\n",
" print(\"\u79c1\u306e\u540d\u524d\u306f\u3001\" + name + \"\u3067\u3059\u3002\" + language + \"\u9078\u629e\u3067\u3059\u3002\")\n",
" print(f\"\u79c1\u306e\u540d\u524d\u306f\u3001{name}\u3067\u3059\u3002{language}\u9078\u629e\u3067\u3059\u3002\")\n",
"\n",
"\n",
"introduce_self(\"\u6771\u5927\u592a\u90ce\", \"\u4e2d\u56fd\u8a9e\")"
Expand Down
2 changes: 1 addition & 1 deletion static/function/introduce_self.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"metadata": {},
"source": [
"def introduce_self(name):\n",
" print(f\"\u79c1\u306e\u540d\u524d\u306f\u3001{name}\u3067\u3059\u3002\")\n",
" print(\"\u79c1\u306e\u540d\u524d\u306f\u3001\" + name + \"\u3067\u3059\u3002\")\n",
"\n",
"\n",
"introduce_self(\"\u7530\u4e2d\")"
Expand Down
Loading