中央値: プログラムちょい替え(5) docker(87) pyhon(36)

数学オンチのプログラマが数学を学習し直すらしいです【統計その1】
https://qiita.com/manzyun/items/833ae7fba582d899c618

```python:median.py
# https://qiita.com/manzyun/items/833ae7fba582d899c618
data = [100, 300, 423, 328, 516, 412]

data.sort() # **超大事**

if len(data) % 2 == 0: # リストの要素の数の奇数・偶数判定
    # 偶数でした
    m1 = len(data) / 2
    m2 = (len(data) / 2) + 1
    # 整数に変換して位置合わせ
    m1 = int(m1) - 1
    m2 = int(m2) - 1
    print(data[m1] + data[m2]) / 2
else:
    # 奇数でした
    m = (len(data) + 1) / 2
    m = int(m) - 1
    print(data[m])
```
pythn3で実行

```shell-session
$ python
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 13:19:00) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
$ python median.py
740
Traceback (most recent call last):
  File "median.py", line 12, in <module>
    print(data[m1] + data[m2]) / 2
TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
```
変更してみた。

```python:median2.py
#!/usr/bin/env python
# coding: utf-8
# https://qiita.com/manzyun/items/833ae7fba582d899c618
# @imanzyun 2018年10月30日 11時31分 (JST)
# https://qiita.com/kaizen_nagoya/items/2f02d5f8af808e322e3c
# @kaizen_nagoya 2019 05 21/ 2019 12 30

data = [100, 300, 423, 328, 516, 412]

data.sort() # **超大事**

if len(data) % 2 == 0: # リストの要素の数の奇数・偶数判定
    # 偶数でした
    m1 = int(len(data) / 2)-1
    print((data[m1] + data[m1+1]) / 2)
else:
    # 奇数でした
    m = int((len(data) + 1) / 2)-1
    print(data[m])
```
ついでに、おまじない、処理の変更も。

直したところと付け加えたこと

##1 print の()
print文の後ろに/2があった。/2も括弧でくくった。

#2 #!/usr/bin/env python

```
chmod +x median2.py
```
とすれば、./median2.py
で実行できる。

#3  # coding: utf-8
ファイルがutf-8であれば不要なのかもしれないが、Webで公開すると、どういう文字コードで保存するシステムがあるかわからないため、おまじないとして書いておく。

```
# python2.7 median8.py 
  File "median8.py", line 5
SyntaxError: Non-ASCII character '\xe8' in file median8.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
# python2.7 median8.py 
370
```
２回目の実行は# coding: utf-8を加えたあとのファイル。
環境や状況によってはあった方がいい場合があるかも。


#4 m2
m1-1で済むので途中の計算はしない。

#5 mの計算
２つの式を１つに。
みにくくなるかもしれない。
好みかも。

# python2, python3の違い

```shell-session:docker/ubuntu
# python2.7 median2.py
370
# python3.8 median2.py
370.0
```

# docker

```
$ docker run -v /tmp/docker:/tmp/docker -it kaizenjapan/python23 /bin/bash
```
dockerを起動するOSで事前に/tmpの下に/dockerというフォルダを共有用に作成してある場合。

dockerを起動したOSで作ったファイルをそのままdocker側でも利用するため。

```
# cd /home/python2
# ls
```
# Reference
Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding Rules(0) C Secure , MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

小川清最終講義、最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
### 文書履歴(document history)
ver. 0.01 初稿 20190521
ver. 0.02 加筆 201901229
ver. 0.03 docker加筆 201901230
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.