【ChatGPT】AI先生と学ぶ！初心者向け Python プログラミングレッスン


# 1. はじめに

　経歴10年くらいのソフトウェアエンジニアです！

プログラミングを始めたい人たちから、よく
「Pythonやってみたいんですけど、何から始めればいいですか？」
と相談を受けます。

最近は「ChatGPTと遊んでみたら」と答えているのですが、ChatGPTに本格的な Python 教育をお願いしたらどうなるか気になって試してみました。

もう散々ChatGPTで遊んでいるので、ChatGPTがすごいのは分かっていましたが、何だこのクオリティは...と、私も一緒に受けて楽しかったので、ぜひ皆様も遊んでみてください！

:::note info
ここではPythonプログラミングをターゲットにしていますが、なんにでも応用できると思います。
:::

ChatGPT-4 を使用しています。

# 2. AI先生と Python レッスンを始めよう！

## 2.1. Python のレッスン内容を提案してもらう

　まず、ChatGPTにどのようなレッスン内容にするか、提案してもらいます。

![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/40b679de-3a0f-f69e-eb1f-d4e9f7efd5a0.png)

<details>
<summary>プロンプトのコピペ用(折りたたんでいます)</summary>

内容が良ければ，**いいねください！**

```
あなた（AI）は優秀なプログラマです。今から私のPythonのプログラミング講師として、私に対して授業（レッスン）を行ってください。

# レッスン内容について

* 私はプログラミングについては初心者です。プログラミングは基礎が大事と聞いたので、基礎から説明してください
* 私は飽きやすいので、ときどき文章で答えられる問題を出してください。私が間違ったときは、解説をしてください。
* 私があなたの話を聞くばかりだと、私のプログラミング能力がついているかわからないので、学習レベルに応じて、私がプログラミングを書く課題を出してください。
* 1レッスン30分程度の内容で、全15レッスンでお願いしたいです。
* あとでレッスンの結果をまとめたいので、レッスンのはじめに「# レッスン1 ...」のように始まりがわかるように始めてほしいです。

まずは、あなたが予定しているレッスン内容を見てみたいです。一覧で出してもらえますか？
```

</details>

ChatGPT の話を聞くだけだと楽しくないので、手を動かす問題を定期的に出してもらいます。

以下、ChatGPTからの回答です。

![image02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/14023022-80de-882c-9cc1-928fa0fd3412.png)

12.あたりがちょっと難しい気がしますが、それ以外はプログラミングレッスンとしてすごくいいんじゃないでしょうか。

では始めましょう！

![image03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/bce70f54-f8e1-711d-4763-d7f97a433a1f.png)

:::note info
以下ChatGPTからの回答を、Qiitaに貼り付けて表示させています。
:::

## レッスン1: Pythonの基本と環境設定

### Pythonの基本

Pythonは、シンプルで読みやすいコードが特徴のプログラミング言語です。多くの分野で使われており、特にデータ解析や機械学習、ウェブ開発などで人気があります。Pythonはインタプリタ言語なので、コンパイルすることなく実行できます。

### 環境設定

Pythonを使い始めるには、まずPythonのインタプリタをインストールする必要があります。以下の手順でインストールしましょう。

1.  Pythonの公式サイト ([https://www.python.org/](https://www.python.org/)) から最新版のPythonをダウンロードしてください。
2.  インストーラを実行し、指示に従ってインストールを行ってください。

インストールが完了したら、コマンドプロンプト（Windows）またはターミナル（Mac/Linux）を開き、`python --version`または`python3 --version`コマンドを入力してインストールが正常に完了したことを確認してください。

また、Pythonのコードを編集するために使いやすい統合開発環境（IDE）がいくつかあります。Visual Studio Code, PyCharm, Jupyter Notebookなどがありますが、初心者にはVisual Studio Code(https://code.visualstudio.com/) がおすすめです。ダウンロードしてインストールしてください。

### 最初のPythonプログラム

Pythonの環境が整ったら、最初のプログラムを書いてみましょう。Visual Studio Codeを開き、新しいファイルを作成し、以下のコードを書いてみてください。

```python
print("こんにちは、Python！")
```

ファイルを「hello.py」という名前で保存し、コマンドプロンプトまたはターミナルでそのファイルがあるフォルダに移動し、`python hello.py`または`python3 hello.py`コマンドを実行してください。"こんにちは、Python！"と表示されれば成功です。

### 問題1

次のコードをVisual Studio Codeに書いて、実行してみてください。

```python
print("私はPythonを学んでいます！")
```

実行結果を教えてください。
_________


おお、素晴らしい。
ちゃんとレッスンになっていますし，リクエストしたように、問題もあります。

問題に答えてみます。

![image04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/e8043393-2583-a19d-3381-353898f9f8d8.png)


この段階では質問は特にないので、次に進みます。

![image10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/0cce043d-ca0d-171e-bf0d-bd79b1634344.png)

##  レッスン2: データ型と変数


### データ型

Pythonでは、データはさまざまな型（データ型）で扱われます。主なデータ型は以下の通りです。

1.  整数型（int）: 1, 2, 3などの整数
2.  浮動小数点型（float）: 1.2, 3.14, -0.5などの小数
3.  文字列型（str）: "こんにちは", "Python", "123"などの文字列
4.  ブール型（bool）: True（真）またはFalse（偽）の2つの値

### 変数

変数は、データを格納するための名前付きの箱です。Pythonでは、変数にデータを代入するには`=`記号を使います。例えば、次のように書くことができます。

pythonCopy code

```python
x = 5
y = 3.14
name = "John"
is_happy = True
```

変数名は、アルファベット（大文字・小文字）、数字、アンダースコア(\_)を使って作成できますが、数字から始めることはできません。

また、Pythonでは変数のデータ型を宣言する必要はありません。代入されるデータに応じて、自動的にデータ型が決まります。

### 問題2

次の課題を試してみてください。

1.  整数型の変数`age`を作成し、自分の年齢を代入してください。
2.  文字列型の変数`city`を作成し、自分が住んでいる都市の名前を代入してください。
3.  以下のコードを使って、変数`age`と`city`の内容を表示してください。

```python
print("私は", age, "歳で、", city, "に住んでいます。")
```

実行結果を教えてください。

____

問題は、私は何歳...？何...

![image05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/350eed54-012f-3488-30a2-dc280c8b9f99.png)

ここでせっかくなので、質問してみましょう。

![image06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/b2378c67-7a81-8b4c-a0a3-b04fae570eb2.png)

___
おっしゃる通り、整数と小数の演算では、結果が異なることがあります。そのため、数字を代入するときに整数か小数かを意識することは重要です。

例えば、Python 3では、以下のような結果になります。


```python
a = 5 / 2     # aは2.5 (浮動小数点型) 
b = 5.0 / 2.0 # bは2.5 (浮動小数点型)
```

Python 3では、整数同士の除算でも自動的に浮動小数点型に変換されます。しかし、Python 2では異なる結果になります。

```python
a = 5 / 2     # Python 2ではaは2 (整数型) 
b = 5.0 / 2.0 # Python 2ではbは2.5 (浮動小数点型)
```

Python 2では、整数同士の除算で小数部分が切り捨てられます。Python 3を使用している場合は、整数同士の除算でも浮動小数点型が得られますが、Python 2のような挙動を望む場合は、`//`演算子を使用してください。

```python
c = 5 // 2 # cは2 (整数型)
```

このように、整数と小数の違いによって結果が変わることがありますので、意識しておくことが重要です。

___

初心者の質問じゃなかったような気がしますが、いつも「5でいいんだっけ、5.0って書かないといけないんだっけ」と悩んでいた原因がわかりました。ありがとうございます。

ではつぎに行きます（レッスン3で終わりです！）

![image07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/ac3f3b1a-0ecb-c09e-ef34-2c6d9f7b7b3c.png)


##  レッスン3: 演算子と条件分岐

### 演算子

Pythonでは、さまざまな演算子を使用してデータを操作できます。主な演算子は以下の通りです。

1.  算術演算子: `+`, `-`, `*`, `/`, `//`, `%`, `**`
2.  比較演算子: `==`, `!=`, `<`, `>`, `<=`, `>=`
3.  論理演算子: `and`, `or`, `not`

算術演算子は、数値データの計算に使用されます。比較演算子は、データの比較に使用され、結果はブール型（TrueまたはFalse）になります。論理演算子は、ブール型のデータを組み合わせるのに使用されます。

### 条件分岐

条件分岐は、ある条件が満たされた場合に特定の処理を行う制御構造です。Pythonでは`if`, `elif`, `else`を使って条件分岐を書くことができます。

```python
x = 5

if x > 10:     
    print("xは10より大きい") 
elif x > 0:     
    print("xは0より大きい")
else:     
    print("xは0以下")
```

この例では、`x`が10より大きい場合、`x`が0より大きい場合、そしてそれ以外の場合にそれぞれ異なるメッセージが表示されます。

### 問題3

次の課題を試してみてください。

1.  0から10までの整数を入力する変数`num`を作成してください。
2.  `num`が偶数か奇数かを判定し、それに応じて以下のように表示してください。

```python
# 偶数の場合 
print("numは偶数です。")  
# 奇数の場合 
print("numは奇数です。")
```

実行結果を教えてください。

________________


問題に対して、以下のようにコードを書いてみました。

```python
num = 3
if (num % 2) == 0:
    # 偶数の場合
    print("numは偶数です。")
if (num % 2) == 1:
    # 奇数の場合
    print("numは奇数です。")
```

コードと一緒に改善点を聞いてみます。

![image08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3130775/80557074-6324-7a99-3d04-5ac9d87c8719.png)


マンツーマンの先生みたいですね！
長くなるのでこのあたりでストップします。

## 2.2. 全体の感想

　レッスンを受けてみて，初歩的なことはちゃんと説明されているけど内容が薄くないかなと個人的には気になったのですが、ちょうどPythonを勉強している人に聞いてみたところ、分厚いとやりきれないから始めるならこの程度がちょうどいい、と言われました。

気になる人は、たくさん質問したり、もっと問題を出して！とお願いすると、ボリュームアップします。

ぜひ遊んでみてください！

# 3. まとめ

　これからの時代は「AIへの質問力+プログラミング能力」の総合力の戦いになるのではと考えると、ChatGPTに質問しつつプログラミングも学ぶ、AI先生と学ぶ今回の方式が、いいとこどりで最強なのではないかと思いました。

　ただもちろんそれぞれの人にあった学習方法があると思うので、ぜひ皆さん楽しいプログラミング学習方法を見つけてみてください。