- 1. PythonスクリプトをWindows環境で動作するEXEにする方法
- 2. スライドバーを動かすタイプのImage Comparison
- 3. ジェネレータとイテレーターについてまとめる(備忘録)
- 4. Django の外部キー on_deleteの引数 DO_NOTHING は、「何もしない」のか…!?
- 5. OpenCV VideoCaptureをめっちゃ速くする
- 6. pythonのenumerateのこと(備忘録)
- 7. 趣味で書いていっているPythonフロントエンドライブラリの1年の活動をまとめて振り返ってみる
- 8. Python初学者が体感したPython 2系と3系の違い
- 9. 自動テストで品質を確保するために
- 10. paizaラーニング「i番目の出力 2 Python3編」
- 11. paizaラーニング「i番目の出力 1 Python3編」
- 12. paizaラーニング「二次元配列の入力 4 Python3編」
- 13. fortranを使わないマークリーダ開発の練習
- 14. 【Python】標準出力の出力先をファイルにする。
- 15. Python で grep 機能を作ってみる
- 16. WSL上Pythonの環境構築&VSCodeの設定方法
- 17. イテレータとイテラブルについて(備忘録)
- 18. 【AtCoder】ABC277のA,B,C,D における Python解説
- 19. paizaラーニング「二次元配列の入力 3 Python3編」
- 20. 【AtCoder】ABC279のA,B,C,D における Python解説
PythonスクリプトをWindows環境で動作するEXEにする方法
# 初めに
GxPの島田(@tshimada-gxp)です。
本記事はグロースエクスパートナーズアドベントカレンダー2022の10日目の記事です。
この記事は、PythonスクリプトをWindows環境で動くEXEとしてコンパイルすることで簡単なツール的なものを作れることを紹介したいと思います。
# なぜおすすめしたか?
今回の内容は、Pythonの単なる導入案内になりますが、プログラム初心者の方でも、とてもとっつきやすいプログラミングだと思っています。
もちろん、端末(CLI)を使うので面倒って思う方もいるかもですが、プログラミングを気軽に始めたいならこれが良いと思うのでおすすめです。
または、LinuxだったらできるのにWindowsでは・・・と思っているのスクリプト使い(私のことです)とか、解析にエクセル使うことが多いけど、エクセルが無い環境もあって不便を感じているなんて人にもおすすめかなって思います。
すごく環境構築が簡単だし、簡単なコーディングなら難しくないので、まだ触ったことが無ければぜひ。
# やること
私が最初に作ったソフトウェア「ファイル比較EXE」を作ります。
##
スライドバーを動かすタイプのImage Comparison
## はじめに
↓のようにスライドバーを動かして画像を比較したい。
![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/e77dd516-45d3-4a6c-2a64-d276cb9b19e0.gif)[Knightlab の JuxtaposeJS](https://juxtapose.knightlab.com/)を使用して、Streamlit アプリのスライダーで画像を比較するためのシンプルな Streamlit コンポーネントを作成します。
以下のサイトを参考にしました。ありがとうございます。
https://github.com/fcakyon/streamlit-image-comparison
## 環境
+ windows10 home
+ python 3.10## リポジトリのClone
ソースコードは以下になります。https://github.com/youichi-io/image-comparison
“`
git clo
ジェネレータとイテレーターについてまとめる(備忘録)
## そもそもジェネレータとは
>ジェネレータ …イテラブルなオブジェクトの一種で、文字列やリストなどと同様にfor文を使い値を1つずつ取り出すことができる。
⇒あらかじめ複数の値を格納するのではなく、値が要求されるたびに一個ずつ要素を生成する。
⇒多数の値を格納しておく必要がないので、メモリの消費量を抑えることができたり、無限の個の値を生成することができる利点を持つ。
⇒ジェネレータ式とジェネレータ関数がある。>イテラブルとは
⇒for文などで要素を1つずつ取り出して処理できるようなオブジェクトのこと
参考
[pythonプログラミングtips集/【python】イテラブルオブジェクトとは](https://science-log.com/python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0tips%E9%9B%86/%E3%80%90python%E3%80%91%E3%82%A4%E3%83%86%E3%8
Django の外部キー on_deleteの引数 DO_NOTHING は、「何もしない」のか…!?
モデルに外部キーを設定するときに、
**on_delete=models.DO_NOTHING**
とした時の挙動について、発見があったので共有します。### 外部キー on_delete のおさらい
モデルA がモデルBの外部キー持つ場合に、モデルBを削除しようとする時に、Aの振る舞いを決める
“`mermaid
graph LR
A[model A] — FK –> B[model B]
“`指定する挙動は、大きく次の3タイプに分かれる
###
#### ①PROTECTAが存在する時、Bは削除できない
###
#### ②CASCADEAが存在する時、Bを削除可能で、Aも同時に消える
###
#### ③SET_NULL / SET_DEFAULTAが存在する時、Bを削除可能で、Bの外部キーの値に代わりにNull やデフォルト値を入れる
###
**`DO_NOTHING`** は、上記のように明示的に指定したくない場合に使えると思っていた。
強いて言えば、Aが存在していても、Bを削除出来る ③ に
OpenCV VideoCaptureをめっちゃ速くする
# はじめに
OpenCVのVideoCaptureでは、カメラや動画ファイルから映像を取得することができます。しかし、これはそれなりに時間がかかる処理です。以下の簡単なコードで確認してみます。
“`python
from time import perf_counterimport cv2
if __name__ == “__main__”:
video_capture = cv2.VideoCapture(0)try:
while True:
start_time = perf_counter()
_, mat = video_capture.read()
print(perf_counter() – start_time)cv2.imshow(“window”, mat)
cv2.waitKey(1)except KeyboardInterrupt:
passvideo
pythonのenumerateのこと(備忘録)
## for文で、数字と要素を出力してみる
~~~python
list_sample = [“おはよう”, “こんにちわ”, “おやすみ”]for i in range(len(list_sample)):
greeting = list_sample[i]
print(f”{i+1}: {greeting}”)>>>
1: おはよう
2: こんにちわ
3: おやすみ
~~~## enumerateを使ってみる
enumerateは遅延評価です。つまり、リスト型のような一度の呼び出しですべて呼び出されるわけではなく、値を要求されたら1個、再度要求されたらまた1個…と要素を評価する。enumerateを使うと以下のようにコードが簡潔になる。
~~~python
list_sample = [“おはよう”, “こんにちわ”, “おやすみ”]for i, greeting in enumerate(list_sample, 1):
print(f”{i}: {greeting}”)>>>
1: おはよう
2: こんにちわ
3: おやすみ
趣味で書いていっているPythonフロントエンドライブラリの1年の活動をまとめて振り返ってみる
プライベートの時間に趣味と勉強目的で書いていっているapyscというPythonのライトなフロントエンドライブラリの今年1年の活動を振り返りつつ記事にまとめてみます。
今年なにやったんだっけ・・・と個人的に振り返るためなので他の方には有益ではない面も多分に含みます。# ライブラリの概要
先に軽くどんなライブラリなのかについて触れておきます。
GitHub:
https://github.com/simon-ritchie/apysc
今の所はSVGを中心としたフロントの記述がPythonのみで行える・・・というライブラリになります(D3.jsみたいな感じでグラフ関係などで色々自分で実装がいけるものを作ってみたいと思って作り始めています)。インターフェイスはPythonを参考にしたり古の時代に滅んだActionScript3という言語などを参考にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228778/d6b012a9-c7f2-1e8a-aece-b2ce7
Python初学者が体感したPython 2系と3系の違い
## はじめに
本記事はProgaku Advent Calendar 2022 9日目担当です。
今まで個人開発でPython3系を触ってきましたが、
とってもレガシーなPython2系のシステムも触る機会ができてしまったので、
Python2系と3系の違いを備忘録としてまとめていきます。
(3系のコードの説明は省略しています。)検証したpythonバージョンは以下です。
2系=2.7.18
3系=3.11.0## 対象読者
python 3系の勉強して現場に入ったら、2系のシステムも触ることになった方(筆者を含む)## Unicodeの文字列の扱い
Unicode(日本語などのマルチバイト文字)は、u’文字列’と記載しないと文字化けする。## (3系)print関数→(2系)print文
python 2系ではprint関数はなく、print文として扱う。
また、複数のprintを実行して、結果を改行しない場合は、末尾にカンマを入れる。“`python2:test.py
print u’2系です。’,
print u’2系です。’
“`
“`python2
自動テストで品質を確保するために
## 自動テストと品質の確保と
自動テストをマメに書くようにしていますが、自動テストを全てpassしてもエラーが起こる時は起こりますよね
出典は忘れましたが、自動テストツールで行うテストは、テストではなくチェックリストの自動実行だとこの意見は一理あって、チェックリストに抜け漏れがあると、その分の品質は確保出来ない訳でして:sweat_drops:
ですが、有償でサービスを提供している側からすると気持ちよくそのサービスを使って欲しい訳でして、
どうすれば自動テストでより良い品質の確保が出きるのか考えてみました## 自動テストでカバーできない点
これまで自動テストでは問題なかったけど、stagingやproduction環境に上げるとダメだったケースを考えてみると、
* 自動テストに抜け漏れがある
* 環境に依存する
この2つのケースが多かったように思われます自動テストの抜け漏れがあるケースについては、何故抜け漏れが生じたかを考えてみると
* 時間がかかってテストサイクルに支障が出たのでコメントアウト等を行いそのままだった
* 自動テスト単体で完結しないため出来ない
* 純
paizaラーニング「i番目の出力 2 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
K,L = map(int,input().split())
A = [[0] * 3 for _ in range(3)]
for i in range(3):
A[i] = list(map(int, input().split()))
print(A[K-1][L-1])
“`
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])A = [[0] * 3 for _ in range(3)]
for i in range(3):
values = input().split()
for j in range(3):
A[i][j] = int(values[j])print(A[K – 1][L – 1])
“`
paizaラーニング「i番目の出力 1 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_i-thoutput_step1
#### 私の解答
“`Python3
K,L = map(int,input().split())
li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]
print(li[K-1][L-1])
“`
解答例とほぼ同じでした!!
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]
print(li[K – 1][L – 1])
“`
paizaラーニング「二次元配列の入力 4 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
N,M = map(int,input().split())
A = [[0] * M for _ in range(N)]
for i in range(N):
A[i] = list(map(int, input().split()))
for i in range(N):
print(*A[i])
“`
@WolfMoon先生の解答例を参考にしました。
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])A = [[0] * M for _ in range(N)]
for i in range(N):
values = input().split()
for j in range(M):
A[i][j] = int(va
fortranを使わないマークリーダ開発の練習
“`haire.py
import numpy as np
#問題追加練習
#aa=1
#bb=2
#cc=3
#dd=4
#
#mon = []
#mon.append([aa,bb,cc,dd])
#print(mon)
#mon.append([aa,bb,cc,dd])
#print(mon)results = []
student_1 = [[1,2,3,4],[1,2,3,4],[5,6,7,8],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_2 = [[1,2,3,4],[11,12,13,14],[15,16,17,18],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_3 = [[1,2,3,4],[21,22,23,24],[25,26,27,28],[0,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_4 = [[1,2,3,4],[31,32,33,
【Python】標準出力の出力先をファイルにする。
# はじめに
僕はiOSのPythonista3というAppで、よく寝っ転がりながらPythonするのですが、モジュールのヘルプを見ても英語がわからないのでGoogle翻訳が欠かせません。
一度、調べたこともすぐに忘れてしまうので、原文と翻訳テキストを保存しておくことにしました。モジュールをインポートして`help(モジュール)`と入力し、コンソールに出力されるテキストを「すべて選択」し、エディタに張り付けるという作業なのですが、文字数が大きいと選択に時間がかかり、時にはAppが落ちてしまいます。
僕は寝っ転がりながら「コンソールに出力されるテキストを直接ファイルに書き込めたらいいのになぁ。」と普通に思いました。
# 結論から
~~~python:Python3
import sysSTDOUT = sys.stdout
sys.stdout = open(‘./tmp.txt’, ‘w’)
help(sys)
sys.stdout = STDOUT
~~~
pythonの標準出力の出力先は`sys.stdout`になっていて、これを書き換えることで出力先を変更で
Python で grep 機能を作ってみる
ディレクトリを再帰的に検索してテキストファイルを参照して文字列をサーチします。
### jupyterでやってみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/f6e32c31-930b-7dd6-3a06-1b2d46006179.png)### ソース
“`search_txt.py
# -*- cording: cp932 -*-
from pathlib import Path
import redef main():
search_pattern = r'[aA][bB][cC]’
target_path = “D:\\__work\\test\\”
out_file = “D:\\__work\\search_result.tsv”
ignore_suffix_list = [“gif”, “jpeg”]
search_txt(search_pattern, target_path, out_file, ign
WSL上Pythonの環境構築&VSCodeの設定方法
## WSL上へのPythonの環境構築
Pythonのパッケージの状況を使い分けるためには、仮想環境としてPython環境を構築するのがおすすめ。詳細は[こちら](https://learn.microsoft.com/ja-jp/windows/python/web-frameworks)
### Python3, pip, venvのインストール
– Python3。バージョン番号が表示されればOK。
“`
python3 –version
“`
– Pythonのパッケージ管理ツールpipのインストール
“`
sudo apt install python3-pip
“`
– Python仮想環境作成のためのツールvenvをインストール
“`
sudo apt install python3-venv
“`### 仮想環境の作成とパッケージのインストール
– 仮想環境「test-env」を作成する
“`
python3 -m venv /home/ユーザ名/test-env/
“`– 仮想環境「test-env」をActivateする
“`
s
イテレータとイテラブルについて(備忘録)
## イテレータとは?
>イテレータとは、イテラブル(繰り返し可能)なオブジェクトから要素を取り出すオブジェクトのことです。
※イテラブル…for文を用いて、繰り返し処理ができるオブジェクトのこと。リストやタプルなどがあげられます。## next関数とiter関数について
next関数は、next(イテレーター) のようにイテレータから要素を一つ取り出して消去することができる関数のこと。最後の要素を取り出し終わり、再度、関数を実行しようとするとstopIterationという例外が発生する。(繰り返し停止の意味)iter関数とは、指定されたイテラブルに対するイテレーター(iterator)を返す関数のこと。
~~~python
>>> iterater = iter([3, 10, 7])
# インデックス0から順番に取り出していく
>>> next(iterater)
3
>>> next(iterater)
10
>>> next(iterater)
7
# エラーが発生する
>>> next(iterater)
Traceback (most recent call l
【AtCoder】ABC277のA,B,C,D における Python解説
ABC277のA,B,C,D問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。
この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。
また、diffは問題の難易度を表す指標です。[Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。
質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)作者プロフィール
Atcoder :[緑 829](https://atcoder.jp/users/tsuru1471)
22/1208 現在# 目次
[はじめに](#はじめに)
[A.^{-1}](#a-1)
[B.Playing Cards Validation](#bplaying-cards-validation)
[C.Ladder Takaha
paizaラーニング「二次元配列の入力 3 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step3
#### 私の解答
“`Python3
n = int(input())
for i in range(n):
values = input()
print(values)
“`
#### 解答例
“`Python3
N = int(input())A = [[0] * 5 for _ in range(N)]
for i in range(N):
values = input().split()
for j in range(5):
A[i][j] = int(values[j])for i in range(N):
for j in range(5):
print(A[i][j], end=””)if j < 4: print(end=" ") else: pr
【AtCoder】ABC279のA,B,C,D における Python解説
ABC279 のA,B,C,D問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。
この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。
また、diffは問題の難易度を表す指標です。[Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。
質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)作者プロフィール
Atcoder :[緑 829](https://atcoder.jp/users/tsuru1471)
22/1207 現在# 目次
[はじめに](#はじめに)
[A.wwwvvvvvv](#awwwvvvvvv)
[B.LOOKUP](#blookup)
[C.RANDOM](#crandom)
[D.Freefall](#dfree