pythonで遊んだ

遊びました。Python歴2時間くらいです。

##環境構築

Pythonは [Colab](https://colab.research.google.com/)というサービスを使えばブラウザ上でも簡単に動かすことができるようですが今回はちゃんと環境構築からします。

こちらのサイトを参考にさせて頂きました。
[Pythonの開発環境を用意しよう！（Mac）](https://prog-8.com/docs/python-env)

まずはHomebrewをインストールします。

```sh
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

インストールできたらHomebrewのコマンドを使ってpyenvをインストールします。

```sh
brew install pyenv
```
「.bash_profile」ファイルに設定用のコードを追加します。

```sh
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

touch ~/.profile
```

これでpyenvコマンドが使えるようになったので

```sh
pyenv install --list
```
で、最新のPythonのバージョンを確認して、インストールします。

```sh
pyenv install 3.XX.XX (使用するバージョンを入力する)
```
最後に

```sh
pyenv global 3.XX.XX
```

で先程インストールしたバージョンのPythonを使うようにします。
これで環境構築は終了です。
拡張子が`.py`のファイルを作成してVSCodeなどで開いてみましょう。

なお、コードを実行する方法はターミナルで

```sh
python XXXXX.py (ファイル名)
```
です

##あそぶ
環境ができたので適当にコードを書いてみます。
今回はPythonの機能の一つである辞書を使ってみました。

```python
dics = {'りんご': 'Apple', 'オレンジ': 'Orange'}
```

辞書はこのように記述すれば作成することができるようです。
valuesの方にまた新たに辞書を指定してどんどん入れ子の形にすることも可能です。

```python
dics = {
   'りんご': {
      '色': '赤',
      '形': '丸'
   }, 
   'オレンジ': 'Orange'
}
```

この機能を使って簡単なゲームを作ってみます。
問診を行って腹痛を訴える患者の病気を特定するゲームです。

```python
stomachache = {
  '腹膜炎': {
    1: '今朝からです。',
    2: 'お腹が全体てきに痛いです。',
    3: '下痢はしていませんが、嘔吐しています。'
  },
  '胃腸炎': {
    1: '朝起きてからずっとです。',
    2: '下の方、腸のあたりです。',
    3: 'はい、しています。吐き気もあります。'
  },
  '肺炎': {
    1: '一昨日の夜からです。',
    2: '上の方です。',
    3: 'していません。少し熱っぽい気がします。'
  },
  'ストレス': {
    1: 'もう何ヶ月も前からです。',
    2: 'わからないです。胃のあたりな気がします。',
    3: '偶にします。'
  }
}
```

このような感じで辞書を作成しました。
私は医者ではないので内容はかなり適当です。本気にしないでください。

```python
import random

num = random.randint(0,3)
lis = list(stomachache.values())
```

```python
import random

num = random.randint(0,3)
list = list(stomachache.values())

def question():
      print('質問内容を選ぶ (1, 2 or 3)')
      print(
        '1: いつごろから痛みますか？\n2: どの辺りが痛みますか？\n3: 下痢はしていますか？')
      question = input('>> ')

      if question == '1':
        print(list(list[num].values())[0])
      elif question == '2':
        print(list(list[num].values())[1])
      elif question == '3':
        print(list(list[num].values())[2])
      else:
        print("数字を選択して入力してください")
```
0から3のランダムな数字を取得して、上で作成した辞書から質問部分のみをリスト化します。
プレイヤーに入力してもらった値を元に、listから患者の回答を表示します。

```python
print('病気を特定する (1, 2, 3 or 4)')
print(
  '1: 腹膜炎\n2: 胃腸炎\n3: 肺炎\n4: ストレス')
answer = input('>> ')

if int(answer) == num + 1:
  print('正解です')
else:
  print('不正解です')
```
問診内容を元にプレイヤーに病名を特定させます。ランダムな数字は0..3なのでnumに+1しています。

最終的なコードはこのような形になりました。

```python
import random

stomachache = {
  '腹膜炎': {
    1: '今朝からです。',
    2: 'お腹が全体てきに痛いです。',
    3: '下痢はしていませんが、嘔吐しています。'
  },
  '胃腸炎': {
    1: '朝起きてからずっとです。',
    2: '下の方、腸のあたりです。',
    3: 'はい、しています。吐き気もあります。'
  },
  '肺炎': {
    1: '一昨日の夜からです。',
    2: '上の方です。',
    3: 'していません。少し熱っぽい気がします。'
  },
  'ストレス': {
    1: 'もう何ヶ月も前からです。',
    2: 'わからないです。胃のあたりな気がします。',
    3: '偶にします。'
  }
}

num = random.randint(0,3)
lis = list(stomachache.values())

def question():
      print('質問は二回までできます。質問内容を選ぶ (1, 2 or 3)')
      print(
        '1: いつごろから痛みますか？\n2: どの辺りが痛みますか？\n3: 下痢はしていますか？')
      question = input('>> ')

      if question == '1':
        print(list(lis[num].values())[0])
      elif question == '2':
        print(list(lis[num].values())[1])
      elif question == '3':
        print(list(lis[num].values())[2])
      else:
        print("数字を選択して入力してください")

question()
question()

print('病気を特定する (1, 2, 3 or 4)')
print(
  '1: 腹膜炎\n2: 胃腸炎\n3: 肺炎\n4: ストレス')
answer = input('>> ')

if int(answer) == num + 1:
  print('正解です')
else:
  print('不正解です')

```

```
質問は二回までできます。質問内容を選ぶ (1, 2 or 3)
1: いつごろから痛みますか？
2: どの辺りが痛みますか？
3: 下痢はしていますか？
>> 1
今朝からです。
質問は二回までできます。質問内容を選ぶ (1, 2 or 3)
1: いつごろから痛みますか？
2: どの辺りが痛みますか？
3: 下痢はしていますか？
>> 2
お腹が全体てきに痛いです。
病気を特定する (1, 2, 3 or 4)
1: 腹膜炎
2: 胃腸炎
3: 肺炎
4: ストレス
>> 1
正解です
```

もう少し細部をこだわればもっとまともな問診ゲームが作れそう。