- 0.0.1. Pythonでバッテリ残量とメモリ残量を出力してみた
- 0.0.2. PythonでDiscordに画像を送る
- 0.0.3. Pythonで接続しているWi-Fiの名前を取得する
- 0.0.4. 指定のウィンドウをアクティブ・解除するスクリプトをしたい
- 0.0.5. 【Python】複数ある画像のファイル名を、自分の好きな名前で、一括で変更してみる!
- 0.0.6. ABC344(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
- 0.0.7. 潜在変数モデルの詳細な解説
- 0.0.8. Selenium + pyinstallerで実行後コンソールが閉じない問題の対処
- 0.0.9. ABC344回答メモ
- 0.0.10. SPFA(Shortest path faster algorithm)で負閉路の検出
- 0.0.11. plotly でグラフの線の太さや色を後から変更する
- 0.0.12. 【Python】関数を分かりやすく書くには?【型ヒント】
- 0.0.13. AutoGen を使って人狼をやってみた(プロトタイピング)
- 0.0.14. 画像のdiffをとる(追加:青, 削除:赤で見やすく可視化)
- 0.0.15. ABC344をPythonで解いてみたよ。(A~E問題)
- 0.0.16. 【初めての人用】 Django アプリケーションフォルダを作る
- 1. 今回やる事
- 2. 必要な環境
Pythonでバッテリ残量とメモリ残量を出力してみた
普段PCを落とさないためメモリやバッテリ残量が気になったので作成してLINEに飛ばすようにした
バッテリー残量
“`def batterry():#バッテリ残量を表示
import psutil
dsk = psutil.disk_usage(‘/’)
btr = psutil.sensors_battery()
btr = f”{btr.percent}%”
print(btr)
return btr“`
メモリ残量
“`
def disk_usage(): # ディスク使用状況を表示
import psutil
path = ‘/’
disk_info = psutil.disk_usage(path)
total = disk_info.total / (1024 ** 3) # ギガバイト単位に変換
used = disk_info.used / (1024 ** 3)
free = disk_info.free / (1024 ** 3)
total =
PythonでDiscordに画像を送る
Pythonで監視カメラを作ったので撮影した画像をDiscordに送りたい。
意外と探したけどなかったので記載
“`
import reqestdef send_discord(webhook_url,msg, image_path=”” ):
print(“Discodeに送信中”)
try:
with open(image_path, ‘rb’) as image_file:
payload = {
“content”: msg,
“file”: image_file
}
response = requests.post(webhook_url, files=payload)
response.raise_for_status()
print(“Image sent successfully”)
except FileNotFoundError:
Pythonで接続しているWi-Fiの名前を取得する
使うかわからないけどWiFiの名前を取得するときできるか探したら昔の自作モジュールに出てきた、、、全然記憶にない
“`
import subprocesstry:
wifi_name = next((line.split(“:”)[1].strip() for line in subprocess.run([“netsh”, “wlan”, “show”, “interfaces”], capture_output=True, text=True, check=True).stdout.splitlines() if “SSID” in line), “none”)
except subprocess.CalledProcessError:
wifi_name = “none”print(“Wi-Fi:”, wifi_name)
“`
指定のウィンドウをアクティブ・解除するスクリプトをしたい
コピペ大好きな自分にとってコピペ先のウィンドウを常に最前面にする必要があったので作成した。
“`
import win32gui
import win32con
import time
import pykit_tooldef activewindow(wm=0):
modify = “”
time.sleep(2)
#Avtivename
active_hwnd = win32gui.GetWindowText(win32gui.GetForegroundWindow())
#ActiveNumber
hwnd = win32gui.FindWindow(None, active_hwnd)
#wm = win32gui.GetForegroundWindow() == hwndif wm == 0:
win32gui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE | win
【Python】複数ある画像のファイル名を、自分の好きな名前で、一括で変更してみる!
# 背景
[Windowsでは、パスやファイル名、フォルダ名に長さの制限が設けられており、](https://atmarkit.itmedia.co.jp/ait/articles/2106/02/news024.html)その制限を超えると「指定されたファイル名は、無効かまたは長すぎます。」といった、様々なエラーが発生します。また、Pythonによるファイル操作においてもエラーが発生します。私自身、畳み込みニューラルネットワーク(CNN)をはじめ、Pythonを使って、インターネットから取得した画像を操作することがよくありますが、長すぎるファイル名が原因で、画像が存在しているにもかかわらず、`FileNotFoundError`が発生したことがありました。
# 目的
前述したような問題を解決する1つの方法は、単純にファイル名を短くすることです。しかし、場合によっては何千何万枚のファイル名を変える必要があり、手作業ではほぼ不可能な時があります。私自身、CNNを用いてAIに学習させるときは、何千何百といった画像を使います。
また、[Windowsには、選択したファイル名を一括
ABC344(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
# ABC344(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
# A問題
– Sの文字を一文字ずつ見ていく.
– Sの一つずつの文字を答えに追記するかどうかのフラグcutを用意する.Falseの時に追記する.初期値はFalseとする.
– パイプ(|)が初めて出た瞬間からは,答えに文字を追記しない.つまり,フラグをFalse->Trueとする.
– パイプ(|)を2回目に見てからは,答えに文字を追記する.つまり,フラグをTrue->Falseとする.
– つまり,パイプ(|)を見たら,答えに文字を追記するかどうかのフラグを反転させれば良い.
“`A.py
“””
<方針>
– Sの文字を一文字ずつ見ていく.
– Sの一つずつの文字を答えに追記するかどうかのフラグcutを用意する.Falseの時に追記する.初期値はFalseとする.
– パイプ(|)が初めて出た瞬間からは,答えに文字を追記しない.つまり,フラグをFalse->Trueとする.
– パイプ(|)を2回目に見てからは,答えに文字を追記する.つまり,
潜在変数モデルの詳細な解説
## はじめに
書籍『Pythonでスラスラわかる ベイズ推論「超」入門』著者です。
本書は「超」入門といっておきながら、一部、やや複雑な確率モデルの話にも踏み込んでいます。その中でも最も難しい話が5.4節の「潜在変数モデル」です。
そのため、出版後に読者からいただく質問も、この節を対象にしたものに集中しています。
今回、GithubのIssueでいただいた質問は、かなり本質をついたものだと思っており、この質問に当記事を通じて丁寧に回答していきたいと考えています。
今回、ご質問いただいた読者の方にはこの場を借りて厚く御礼いたします。
なお、以下の記事は、本書の読者向けのものであり、書籍の中で説明済みの前提概念はすべて省略しています。不明点がある場合は、本書をお読みいただければと思いますので、そのようにご理解ください。## 質問内容
次の2つの質問をいただいています。—
Q1. 各サンプルがversicolorに属するのかvirginicaに属するのかをベルヌーイ分布からサンプリングされた値から判断できることを示唆していました。ここでベルヌーイ分布の母数pをサンプルの数だけ
Selenium + pyinstallerで実行後コンソールが閉じない問題の対処
## 概要
Seleniumでブラウザ操作するスクリプトを作成、配布用にpyinstallerでexeファイルにした。しかし、実行後にコンソールが閉じない。(手動で閉じる必要ありという症状)
## 試したこと
以下全てで改善せず。
“`
sys.exit()
quit()
os._exit()
“`
## 原因
SeleniumのWebdriverを一切終了していなかったことが原因。
“`
driver.quit()
“`
で解決。
ABC344回答メモ
# 0.はじめに
A~Cは順調に解けたものの、DがDP使いそうなのでちょっと避けて
Eに取り掛かったらTLE1つと絶妙に解けませんでした。
手法を変えればよかったのですが、元のやり方に固執して
変に工夫して嵌り、久々にA~Cの3問のみ正解と、惨憺たる成績に。
レートも-25と急略し941とだんだん下がってきました・・・。# 1.A – Spoiler
パイプの間の文字をパイプごと除去する問題。
インプットを文字毎にリスト化し、頭から見ていき
回答用変数ansに一文字ずつ入れていき、
はじめの”|”から最後の”|”まではansに入れないことで対応しました。https://atcoder.jp/contests/abc344/submissions/51028396
# 2.B – Delimiter
いつも過剰なまでにリストの件数等教えてくれるアットコーダーが
急に不親切な感じになった問題。まぁ、頭から入力をリストに入れてしていきつつ、インプットが
0だったらループ終了。
今度はリストを最後から開業しつつ出力ですんなりACでした。ht
SPFA(Shortest path faster algorithm)で負閉路の検出
## はじめに
単一始点最短経路問題を解く方法として、SPFA(Shortest path faster algorithm)というものがあります。https://en.wikipedia.org/wiki/Shortest_path_faster_algorithm
SPFAには、負閉路を含むグラフに適用すると無限ループに陥るという問題があります。そのため、重みが負の辺が存在するグラフを扱いたければ、何とかして負閉路の存在を検出してループを止める必要があります。
ただ、負閉路の検出をする方法をネットで検索しても、以下のページで紹介されている2種類の方法ぐらいしか見つかりませんでした(検索の仕方が悪いだけだと思いますが)。
https://stackoverflow.com/questions/18007979/detecting-negative-cycles-using-spfa-algorithm
頂点数を$N$としたとき、
1. 同じ頂点を処理した回数が$N$回以上なら負閉路あり
1. 各頂点に至る最短経路の辺の数が$N$個以上になったら負閉路ありどちらも、頂点
plotly でグラフの線の太さや色を後から変更する
こんなグラフがあったとして、後から線の色や太さを変えたいとしたら?
~~~python
import plotly.graph_objects as go
from plotly.subplots import make_subplotsfig = make_subplots(rows=2, cols=3, subplot_titles=[‘aa’,’bb’,’cc’,’dd’,’ee’,’ff’])
fig.update_layout(height=600,width=800)L1 = go.Scatter(x=[1,2,3], y=[1,3,1], name=’foo’)
L2 = go.Scatter(x=[1,2,3], y=[2,2,2], name=’bar’)
L3 = go.Scatter(x=[1,2,3], y=[3,1,3], name=’fizz’)
L4 = go.Scatter(x=[1,2,3], y=[3,1,3], name=’bazz’)
L5_1 = go.Scatter(x=[1,2,3], y=[2,2,2], name=’hoge’
【Python】関数を分かりやすく書くには?【型ヒント】
## はじめに
こんにちは!Shungiku です。
今回は超よわよわだった当時の自分に向けて、「分かりやすい関数を書く方法」を説明したいと思います。分かりやすい関数にする方法は様々ありますが、本稿では「型ヒント」に着目し、型ヒントのない関数をリファクタリングする形で説明を進めていきます。
## モチベーション
ある日、自分が書いた過去のコードを改築している時、私は以下のような箇所に遭遇します。
“`python
users = load_users(“/path/to/your/file/”)
“`「あー、半年前くらいにこの関数を書いた気がするなぁ」
「”load_users”… たしかファイル名を引数に渡して、そのファイルに載ってるユーザーの一覧情報を返してくれる関数だったような…?」「でもどんなデータが返ってくるか覚えてないぞ…**実装を見に行くか**」
“`python
def load_users(filepath):
users = []
# これ以降つらつらと処理が書かれていると想定。
# 例えば以下のような
AutoGen を使って人狼をやってみた(プロトタイピング)
## 概要
`AutoGen`フレームワークを用いて、人狼ゲームを行うアプリのプロトタイピングをやってみました。`AutoGen`は複数のLarge Language Model (LLM) エージェントが互いに会話をしながらタスクを遂行することを可能にするフレームワークです。本記事では、`AutoGen`の基本概念の説明から始め、人狼ゲームのルールやプレイヤーの役割を定義し、エージェント間での相互作用を実装していく過程を紹介しています。複数の LLM エージェントを `AutoGen` を通じて実装し人狼ゲームの各セッションを自動でプレイするアプリのプロトタイプを作成することです。本記事を読んでいただくことで、LLM エージェントの応用例を学び、`AutoGen` フレームワークを活用するための基礎知識を得ることができます。
:::note warn
本記事で提供されているコードは、特定の環境や条件下での動作を示すものであり、全ての環境やケースで同様に機能するとは限りません。また、時間の経過とともにソフトウェアの更新や互換性の問題が生じる可能性があるため、掲載されているコードが
画像のdiffをとる(追加:青, 削除:赤で見やすく可視化)
# この記事のゴール
画像に追加された部分を青、削除された部分を赤で表示したい。1. 入力画像A
2. 入力画像B
3. よくある差分画像(|B-A|, cv2.absdiff)
4. この記事で作成する差分画像C
ABC344をPythonで解いてみたよ。(A~E問題)[AtCoder Beginners Contest 344 (ABC344)](https://atcoder.jp/contests/abc344) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッhttps://lit.link/mer6177999
# A – Spoiler
## 問題
文字列 $S$ が与えられます。
$S$ には $2$ つ `|` の文字が入っています。
$2$ つの `|` とその間の文字を $S$ から削除した新たな文字列を出力してください。https://atcoder.jp/contests/abc344/tasks/abc344_a
## 考察
for文をつかって文字列 $S$ の文字を左からひとつずつ見ていきます。
このとき、 `|` の出現回数をカ
【初めての人用】 Django アプリケーションフォルダを作る
今回やる事
・アプリケーションフォルダをコマンドを実行して作成する
必要な環境
python のインストール
インストールURL
https://python.org/Djangoをインストールしておく
仮想環境無しでもできるが、仮想環境をおすすめ。Djangoの環境構築してない人はこっちを先にみると良い
[【初めての人用】 Django環境構築 ロケット飛ばすところまで。](https://qiita.com/souichirou157/items/0ebe37a1016d79062f49)自分はwindowsを使っているが、Macの方はターミナル操作のコマンドは各自で調べていただきたい。
とりあえずフォルダに移動してpythonの仮想環境を開く
“`
venv\Scripts\activate.bat
“`venvは自分のフォルダの名前
アプリケーションフォルダを作成する
“`
django-admi
ABC_344
## A問題
findで2番目のインデックスを調べる方法調べてたら少し時間かかった。
“`python
#Sは文字列、開始インデックスを1回目に見つけたインデックスにすれば2回目のインデックスを返す
S.find(“検索文字”,開始インデックス+1)
“`## B問題
不特定回数繰り返す⇒無限ループ、特定の条件でbreak
知らなかったので調べるのに時間かかった。“`python
numbers = []while True:
A = int(input())
numbers.append(A)
if A == 0:
breaknumbers.reverse()
for A in numbers:
print(A)
“`## C問題
なにも考えずに4重ループさせたらTLE
A+Bの結果には重複があるので、あらかじめA+Bの結果を集合で用意しておくことで計算量を削る。“`python
N = int(input())
A = list(map(int, input().split()))
M =
AtCoder初心者振り返りメモ ABC344
# ABC344の回
https://atcoder.jp/contests/abc344# A-問題
https://atcoder.jp/contests/abc344/tasks/abc344_a[問題文]
英小文字と | のみからなる文字列 S が与えられます。
S は | をちょうど 2 個含むことが保証されます。2 つの | の間にある文字および | を S から削除した文字列を出力してください。
[考察や感想]
解答用に用意した変数「 T 」に転記するタイミング、転記しないタイミングを変数「 flg 」を使って制御しました。““Python:A.py
# 2024/3/9 本番解答S = input()
# 解答用の変数と制御用の変数を用意する
T = “”
flg = 0# flg の値で「転記する」「しない」を制御した
for c in S:
if c != “|” and flg == 0:
T += cif c != “|” and flg == 2:
T += cif
【Python】リストの中に特定の要素があるか判定する処理はsetを使え
某競技プログラミングコンテストにて、要素群の中に特定の要素が入っているかを判定する処理を実装しなければならない問題がありました。
この問題では、なにも工夫せずリストで実装すると指定された実行時間以内にプログラムが終了しません。
#### リストを使う方法(イメージ)
“`
A=[1,2,3,4,5,6,7,8,9,10]
if 5 in A:
print(“YES”)
“`
このように実装して、要素が少ない時は問題にはならないですが、要素がとても多いときは実行時間が長くなり、競技プログラミングのコンテストではタイムオーバーになってしまう。では、どうしたら良いのか。
**リストを使うのではなく、set型を使えば高速化できる!**#### setを使う方法
“`
A={1,2,3,4,5,6,7,8,9,10}
if 5 in A:
print(“YES”)
“`
このようにするだけで劇的に速くなるそうです。setの使い方は以下のページ
https://docs.python.org/ja/3/library/stdtypes.html#set#
Python Environment on Mac
# Python environment on Mac
# Install pyenv and Python
1. Install pyenv
“`shell
curl https://pyenv.run | bash
“`
2. Config Environmental Variables
Add the following to “`.zshrc“`
“`shell
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init –path)”
“`
3. Reflection of Config [^source]
“`shell
. ~/.zshrc
“`
4. Install Python
Run the following commands under an administrative directory like your hom