よちよち歩きのpython3 : pycharm-edu 、数値計算 ( SciPy NumPy)


紅茶のように 緑茶に砂糖をいれて飲んでみた、結構いけてる。なお archman で以下はしました。 C言語は難しいので 大工の棟梁のもとで修行しないと一人前になれない。しかしPythonは日曜大工DIYの世界なのでTV講座でなんとかなる、一人でもいける。

攻撃者になったつもりで考えることです。 攻撃者がどうやったらコードを悪用するだろうか
攻撃者のかわりに ヤクザといってもいいですね
彼らは善意なる考えはすべて却下。 悪意に満ちた考えの中で おばかなものは採用せず、 よく考え練られたもののみを採用する。 つまり 高度に知的レベルの高い悪魔的存在

1)アイドルを探せ

idle-python3.7-assets 1.0-1
をAURでいれると

Developmentのところに IDLEがでてくる、でも使わないほうがいい、でも一応次図。

使うべきは ずっと下の C)に書いた pycharm-edu と思う 

2) 簡易計算機

単なる端末での上で

3) よちよち歩きには

七転び 八転びでやってます
独学プログラマー (日経BP)は とっつきやすくて クラスをも含む全体像はながめられるけど、 英語がOkなら  https://automatetheboringstuff.com/ のほうがはるかに懇切丁寧でいい。なお独学プログラマーの正誤表は http://public-errata.appspot.com/errata/book/9784822292270/ にある 

この本の良さは例えば

4)関数

>>> def f(x):
...     return x**3
...           注:一行空けてね
>>> y=f(5)
>>> print (y)
125

5)input

>>> age = input("irete:")   注:末尾の「:」忘れないでね
irete:20
>>> int_age=int(age)
>>> if int_age < 30:
...     print("young")
... else:
...     print("old")
... 
young

>>> def even_odd(x):
...     if x % 2 == 0:
...         print("even")
...     else:
...        print("odd")
...                   注:一行空けてね
>>> even_odd(2)
even
>>> even_odd(3)
odd
#!/bin/python3
def even_odd():
    n = input("type a number")
    n = int(n)
    if n % 2 == 0:
        print("n is even.")
    else:
        print("n is odd.")

even_odd()
even_odd()
even_odd()

---------

./1.py 
type a number15
n is odd.
type a number18
n is even.
type a number


6) scope

cat scope.py 
#!/usr/bin/python3

x = 1
y = 2
z = 3


def f():
    print(x)
    print(y)
    print(z)


f()

-----------
$ ./scope.py 
1
2
3

7) module

https://docs.python.org/ja/3/py-modindex.html にmathなどのモジュールが載ってる
open@t620 tstp $ pwd
/home/open/tstp



open@t620 tstp $ cat hello.py 
#!/bin/python3

def print_h():
    print("hellow")



open@t620 tstp $ cat project.py 
#!/bin/python3
import hello
hello.print_h()  注:左詰め!



open@t620 tstp $ ./project.py 
hellow

 無料でも英語でんねん)

A) youtube 上で講義がある

B) anaconda がAURにある

https://knowledge.sakura.ad.jp/17235/
によると 
科学技術計算においてはCやC++、Fortranといったプログラミング言語のほか、
Matlab やその互換環境、Mathematica、Rといったソフトウェアが多く用いられていた。

Anacondaの特徴としては、デフォルトでPythonに加えて科学計算に必要なライブラリやさまざまなユーティリティがインストールされることが挙げられる。これをインストールするだけで、とりあえずすぐにPythonや科学計算のための主要ライブラリが利用できるようになる。GUIでパッケージのインストールやアップデート、検索を行えるツールも同梱されている。
 pacman -U anaconda-2019.03-1-x86_64.pkg.tar.xz 
loading packages...
resolving dependencies...
looking for conflicting packages...

Package (1)  New Version  Net Change 

anaconda     2019.03-1    3285.96 MiB

Total Installed Size:  3285.96 MiB

:: Proceed with installation? [Y/n]

Please run

    $ source /opt/anaconda/bin/activate root
    $ source /opt/anaconda/bin/deactivate root

でも ここからはCUIだねえ、 よちよち歩きには到底無理

C) pycharm-professional 2019.1.3-1 もAURにある

こっちは GUIだね

しかしpycharm-professionalは優良なので
pycharm-edu.tar.gz を利用してみることとした。

で親切なマニュアルは https://pleiades.io/help/pycharm/guided-tour-around-the-user-interface.html
 にある

以下のスクリプトで 先頭行に #!/bin/python3 がつく

for x in `ls *.py`
do
echo '#!/bin/python3' >p.py
cat $x >> p.py
cp p.py 1-$x
chmod +x 1-$x
done

でたとえば 

cat 1-hello.py

#!/bin/python3
# This program says hello and asks for my name.

print('Hello world!')
print('What is your name?') # ask for their name
myName = input()
print('It is good to meet you, ' + myName)
print('The length of your name is:')
print(len(myName))
print('What is your age?') # ask for their age
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')


X1) 科学計算


yayを pacman -Sy yay で入れたあと

$ yay pip-tools

1 aur/pip-tools 4.1.0-1 (+9 1.29%) 
    A set of tools to keep your pinned Python dependencies fresh.
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 1

:: Checking for conflicts...
:: Checking for inner conflicts...
[Repo: 21]  python-click-7.0-1  python-msgpack-0.6.1-1  python-urllib3-1.25.3-1  python-chardet-3.0.4-2  python-idna-2.8-1  python-requests-2.22.0-1  python-cachecontrol-0.12.5-4  python-colorama-0.4.1-1  python-distlib-0.2.9-1  python-distro-1.4.0-1  python-webencodings-0.5.1-2  python-html5lib-1.0.1-3  python-lockfile-0.12.2-4  python-pytoml-0.1.21-1  python-more-itertools-4.3.0-1  python-zipp-0.6.0-1  python-importlib-metadata-0.19-1  python-pep517-0.6.0-1  python-progress-1.5-1  python-retrying-1.3.3-4  python-pip-19.0.3-1
[Aur: 1]  pip-tools-4.1.0-1

:: Downloaded PKGBUILD (1/1): pip-tools
  1 pip-tools                        (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> N

:: Parsing SRCINFO (1/1): pip-tools
[sudo] password for fujitsu: 

resolving dependencies...
以下省略で
(1/1) installing pip-tools                         [----------------------] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

確かに
$ pacman -Q| grep pip
libpipeline 1.5.1-1
pip-tools 4.1.0-1
pipewire 0.2.6+1+g37613b67-1
python-pip 19.0.3-1
と入った

# pip install numpy
# pip install matplotlib

python3して

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.arange(0, 5, 0.1)
>>> y = np.sin(x)
>>> plt.plot(x,y)
>>> plt.show()

したら 以下のグラフがでます。

その後

# pip install scipy

して

科学計算の力を Python にインポートする.Python で使用することになる強力な科学計算モジュールとしては、NumPy と SciPy の 2 つが挙げられます。NumPy には多数の強力な機能が含まれていますが、なかでも、ここで特に興味深いのは、同じデータ型の数値の集合を作成して、array という名前の単一の変数に割り当てることができる機能です。また、このモジュールには線形代数、フーリエ変換、乱数を処理する機能も幅広く揃っています。SciPy は、NumPy に加え、他の多数のパッケージからなる包括的な科学計算エコシステムです。

となりました。

# pip install sympy
Collecting sympy
  Downloading https://files.pythonhosted.org/packages/21/21/f4105795ca7f35c541d82c5b06be684dd2f5cb4f508fb487cd7aea4de776/sympy-1.4-py2.py3-none-any.whl (5.3MB)
     |████████████████████████████████| 5.3MB 3.1MB/s 
Collecting mpmath>=0.19 (from sympy)
  Downloading https://files.pythonhosted.org/packages/ca/63/3384ebb3b51af9610086b23ea976e6d27d6d97bf140a76a365bd77a3eb32/mpmath-1.1.0.tar.gz (512kB)
     |████████████████████████████████| 522kB 1.7MB/s 
Installing collected packages: mpmath, sympy
  Running setup.py install for mpmath ... done
Successfully installed mpmath-1.1.0 sympy-1.4
# exit
exit

$ cat k-sosuu.py 
from sympy import sieve
print([i for i in sieve.primerange(10000,11000)])
として

$ python3 k-sosuu.py 
[10007, 10009, 10037, 10039, 10061, 10067, 10069, 10079, 10091, 10093, 10099, 10103, 10111, 10133, 10139, 10141, 10151, 10159, 10163, 10169, 10177, 10181, 10193, 10211, 10223, 10243, 10247, 10253, 10259, 10267, 10271, 10273, 10289, 10301, 10303, 10313, 10321, 10331, 10333, 10337, 10343, 10357, 10369, 10391, 10399, 10427, 10429, 10433, 10453, 10457, 10459, 10463, 10477, 10487, 10499, 10501, 10513, 10529, 10531, 10559, 10567, 10589, 10597, 10601, 10607, 10613, 10627, 10631, 10639, 10651, 10657, 10663, 10667, 10687, 10691, 10709, 10711, 10723, 10729, 10733, 10739, 10753, 10771, 10781, 10789, 10799, 10831, 10837, 10847, 10853, 10859, 10861, 10867, 10883, 10889, 10891, 10903, 10909, 10937, 10939, 10949, 10957, 10973, 10979, 10987, 10993]

と 10000と11000の間の素数がでてくる。
面白い