LoginSignup
0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-06-08
1 / 7

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

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

1)アイドルを探せ

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

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

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

##2) 簡易計算機

単なる端末での上で
1.png

##3) よちよち歩きには
https://pycamp.pycon.jp/textbook/1_install.html

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

この本の良さは例えば
1.jpg

##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

## 無料でも英語でんねん)
https://automatetheboringstuff.com/

##A) youtube 上で講義がある
https://www.youtube.com/watch?v=ZGHsG2hxJrY&list=PLwgFP6xz77Rxol-cydiwuJSeVFK61rGXP&index=1

##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だね

1.png

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

1.png

で親切なマニュアルは 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.')

1.png


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()

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

その後

# 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の間の素数がでてくる。
面白い




X-chatGPT)  恐ろしいことにchatGPTが pythonのプログラムを書いてくれる

例えば

あるフォルダにある画像を すべて640x480にする python3のプログラムを教えて

と言うと

以下は、Pillow(Python Imaging Library)を使用して、指定されたフォルダ内のすべての画像を640x480に変換するPython 3プログラムの例です。

python
Copy code
from PIL import Image
import os

folder_path = "path/to/folder"

# 指定されたフォルダ内のすべてのファイルをループ処理
for filename in os.listdir(folder_path):
    # ファイルが画像であることを確認
    if filename.endswith(".jpg") or filename.endswith(".png"):
        # 画像を開いてリサイズ
        img_path = os.path.join(folder_path, filename)
        with Image.open(img_path) as img:
            resized_img = img.resize((640, 480))
            # 元の画像を上書きしないように、新しいファイルに保存
            new_filename = os.path.splitext(filename)[0] + "_resized" + os.path.splitext(filename)[1]
            new_img_path = os.path.join(folder_path, new_filename)
            resized_img.save(new_img_path)
このプログラムは、指定されたフォルダ内のすべてのjpgまたはpngファイルをループし、各ファイルを開いて、画像を640x480にリサイズし、新しいファイル名で保存します。

だ。

これにちょっと手を加えて

ちょっとだけ変えます

cat 640x480.py

#!/usr/bin/python3


from PIL import Image
import os

folder_path = "./"

# 指定されたフォルダ内のすべてのファイルをループ処理
for filename in os.listdir(folder_path):
    # ファイルが画像であることを確認
    if filename.endswith(".jpg") or filename.endswith(".png"):
        # 画像を開いてリサイズ
        img_path = os.path.join(folder_path, filename)
        with Image.open(img_path) as img:
            resized_img = img.resize((640, 480))
            # 元の画像を上書きしないように、新しいファイルに保存
            new_filename = os.path.splitext(filename)[0] + "_resized" + os.path.splitext(filename)[1]
            new_img_path = os.path.join(folder_path, new_filename)
            resized_img.save(new_img_path)

こうして やってみます

$ ls -l *.jpg
-rw-r--r-- 1 jaro jaro  27060  3月 19 12:32 DAC-1.jpg
-rw-r--r-- 1 jaro jaro 108329  3月 19 12:32 DAC.jpg

$ ./640x480.py 
$ ls -l *.jpg
-rw-r--r-- 1 jaro jaro  27060  3月 19 12:32 DAC-1.jpg
-rw-r--r-- 1 jaro jaro  27971  3月 19 12:33 DAC-1_resized.jpg
-rw-r--r-- 1 jaro jaro 108329  3月 19 12:32 DAC.jpg
-rw-r--r-- 1 jaro jaro  21658  3月 19 12:33 DAC_resized.jpg

ということは トヨタあるいはハウスの下請けのつくる部品は chatGPTが作ってくれます
だから これからのプログラマーは全体を統合する 大工の棟梁の 力が必要です

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0