Python3関連のことを調べてみた2023年07月30日

Python3関連のことを調べてみた2023年07月30日

【python】ttkbootstrapメータを表示

今回もttkbootstrapで作成した成果物を記録として残します。
今回作成したのはメータを表示するプログラムです。

### 成果物
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/e03c4661-bc00-d7a4-a213-b60c18283cc9.png)

ボタンを押下したら%が増加したり、減ったりします。
一番上のボタンには現在のパーセントが表示されます。

### ソースコード
“`python
from tkinter import *
import ttkbootstrap as tb

root = tb.Window(themename= “morph”) # カラーを決める事が出来る。
root.geometry(‘500×570’)

def up():
my_meter.step(10)

def down():
my_meter.step(-10)

global counter
counter = 5
def click

元記事を表示

【FastAPI】PydanticでIPv4Addressのインポートエラーが出る理由とは?

# 概要
FastAPIで`pydantic`を使ったコードを実行したら、以下のエラーが出た。
`IPv4Address`とはなんぞや?`pydantic`と関係あるの?と思ったので調べてみました。

“`
from pydantic import BaseModel
File “pydantic/__init__.py”, line 2, in init pydantic.__init__
File “pydantic/dataclasses.py”, line 43, in init pydantic.dataclasses
# | | No action: no method is added. |
File “pydantic/error_wrappers.py”, line 4, in init pydantic.error_wrappers
File “pydantic/json.py”, line 5, in init pydantic.json
ImportError: cannot import na

元記事を表示

PythonでIAMユーザーのリストを取得し、差分チェックを取得するためのスクリプト

## はじめに
– 自己学習の一環として、ShellScript以外で簡単なコードを作成しながら、自身の理解を深めるために、解説をする記事です

## スクリプトの内容
– IAMユーザーを読み込んで、別で準備したリストと比較し、差分を抽出してくれます

## 環境
– MacOS Monterey(12.6)

## 事前準備
– このコードを実行するにあって、以下のポリシーが最低限必要となります
– 自分のアカウントに付与していない人は、あらかじめ付与してください
– [iam:ListUsers ドキュメント](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)

“` json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “IAMUserPermissions”,
“Effect”: “Allow”,
“Action”: “iam:ListUsers”,
“Reso

元記事を表示

bit全探索まとめ

# bit全探索まとめ
## この記事は何
今回の記事では復習兼見返す用にbit全探索をまとめていきます。実装言語はpythonとなっています。なにか気づきや指摘等ございましたらコメントください!
## bit全探索とは
bit全探索ってなんでしょう。この項では主に三つの観点からまとめていければと思います。
1. 使用場面
2. 実装方法
3. 他のアルゴリズムとの比較
### 1.使用場面
結論から述べると以下の条件を満たす際bit全探索の恩恵が得られると思います。
* 「N個の要素からなる集合の部分集合全体を判定する問題」
* 「大体$N\le{20}$の範囲」

例をあげると『使う・使わないを全探索』『選ぶ・選ばないを全探索』する問題などがあげられます。
### 2.実装方法
大きく分けるとbit全探索の実装は二つのステップからなります。
1. **全ての部分集合を列挙する。(pythonでは二つの列挙方法があります。)**
itertoolsのproductを用いてタプルで列挙する場合
“`python
from itertools import pr

元記事を表示

Pythonで絵文字を認識する方法(無駄記事)

# 概要
絵文字同士の比較をする際、そのまま(e.g. `”?” == “?”`)だとエラーが出た。
`ord()`をかませると上手くいった。
“`python
a = “?”
if len(a) == 1 and ord(a) == ord(“?”):
print(“OK”)

#console: OK
“`

# 経緯
Discord Bot 作成中、絵文字メッセージがトリガーの関数を実装しようとした。

# 振り返り
執筆にあたりやり直したところ、直接比較で全く問題なかった。
ダブルクオーテーションを付け損ねていたのだのだろうか。

元記事を表示

UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x87

encoding=”utf-8″ を追加
“`python
with open(f, ‘r’, encoding=”utf-8″):
“`

元記事を表示

PFRL(v0.4.0)を利用して強化学習プログラムを動かしてみる件

[PFRL(v0.3.0)を利用して強化学習プログラムを動かしてみる件](https://qiita.com/muzzumuzu/items/25a8e6daaf4691c0bbbc) にてPFRL(v0.3.0)を動かしてみましたが、当該記事を書いた直後に、v0.4.0がデプロイされたので、それを試してみました。
以下は私の環境です。
“`
Ubuntu 20.04
NVIDIA-SMI 530.30.02
GeForce RTX 2080 Ti
CUDA 12.1
“`
とりあえず、クリーンな仮想環境を利用して、python3.8ベースで環境を作成します。
“`
$ virtualenv env -p python3.8
$ source env/bin/activate
(env)$ pip install pfrl
“`
そして、pfrlのexampleである、train_dqn_gym.pyを動かしてみます。
“`
(env)$ python train_dqn_gym.py

ModuleNotFoundError: No module named ‘pa

元記事を表示

AiFlowと DAG内でできるタスク生成について超ざっくり書いてみる

# AirFlowとは?
一言で表すと **実行タスクのワークフロー管理プラットフォーム**です。
対応言語はPythonのみです。(2023/07時点)

「DAG」と呼ばれる、AirFlow上でPythonコードを実行するための書き方を使用してます。
もう少し詳しく書くと、
Pythonコード内で処理タスクを生成し、各タスクに依存関係を持たせます。
AirFlowはワークフローを管理してるので、「DAG」で定義されたタスクを順番に実行している、ということです^^

# タスクの生成
処理したい内容によって、**動的**にタスクを生成、**静的**にタスクを生成することを使い分けましょう。

##### 静的にタスクを生成したい場合
主に日次で動かすチェック処理や、スナップショット作成や、簡単な単体テストで用いることが多いです。
 ・処理の内容が固定で決まっている場合
 ・処理するデータが単一の場合

##### 動的にタスクを生成したい場合
外部から複数データが連携される場合や、洗い替えDBの登録データ数に応じてなど、ユーザー起因で処理が実行されるケースで用いることが多いです。

元記事を表示

MacBook(M2)にインストールしたStable DiffusionのAPIをPythonで呼び出して画像を生成してみた

[Supership](https://supership.jp/)の名畑です。今期アニメの[AIの遺電子](https://ai-no-idenshi.com/)が原作連載開始されたのは8年近く前なわけですが、現代においては、さらに迫って感じられます。

## はじめに

前回の記事[Stable Diffusion web UIをMacBook(M2)にインストールして画像の生成をしてみた記録](https://qiita.com/nabata/items/81dcc430aa03fc0b0f45)では**web UI**(ブラウザ)を経由して[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の画像生成を行いました。

今回は**web UI**を経由せずに、PythonからローカルのAPIを叩いて画像の生成を行ってみます。

## 環境設定

[前回の記事](https://qiita.com/nabata/items/81dcc430aa03fc0b0f45)で行った環境構築が完了していることが前提です。

元記事を表示

ABC311、F問題の初心者的解説

# 0. はじめに

AtCoder Beginner Contest 311(ABC311、トヨタ自動車プログラミングコンテスト2023#4)のF問題について、解説を読んでもよく分かりませんでした。初心者的に樹形図的に考えてなんとかACしたので、自分で解説を書いてみました。

本記事の内容は、つぎのとおりです。
1. 問題設定、「美しいグリッド」について
2. 樹形図による数え上げ(辞書型で実装)
3. テーブル中の累積和による高速化
4. 終わりに

# 1. 問題設定、「美しいグリッド」について

美しいグリッドの定義からは、解法に必要な以下の二点が導かれます。
* 各列の最も上にある「#」の位置が必要。
* 各列を左から右($j$の増加方向)に調べる。

問題文の定義から、美しいグリッドは直角二等辺三角形の近似表現である事が分かります。ある一点 $(i, j)$ が「#」ならば、その下 $(i+1, j)$ と右下 $(i+1, j+1)$ が「#」となり、これが下方($i$増加方向)へ延々と続きます。この直角二等辺三角形の形状、加えてそれが複数重なってできる鋸歯状の形状が数え

元記事を表示

複数の.MTSファイルを.MOVや.MP4に一括で変換する

## 背景
AVCHD内の.MTSファイルをmp4に一括変換したかったのですが、フリーソフトにろくなもんがないため、chatGPTに教えてもらいながらpythonでそれを実行できるコードを書きました

ffmpeg(v6)を使用しているので、ffmpegが対応してるコーデックならなんでも変換できるはず(未検証)

## 簡単な機能説明
・指定ディレクトリ内の.MTSファイルを.mp4に変換して別の指定ディレクトリに置く
・その際ファイル名は動画ファイルの撮影日時を使用(2023-07-25-14-32.mp4みたいな)
・コマンドラインで簡単めに実行できるといい

## 前提
Macで動くことを確認してます(一応windowsでも動くはず)
pythonのバージョンは`3.11.4`です

## セットアップ
1. 任意の場所に`mp4-converter.py`を作成する
2. 下記のコードを貼り付け後保存
“`python
import os
import argparse
import datetime
import platform
from tqdm import tqdm

元記事を表示

Disjoint Setの計算量

# 1. Introduction
競技プログラミングで度々出てくるDisjoint Setの計算量が気になったため、計算量を求めてみた。

# 2. Algorithm
Disjoint Setは下図のようなノードの要素が互いに素な集合(1つのノードが複数の集合に属することのない集合)を持つデータ構造である。構築は以下の操作に基づく。詳細のアルゴリズムは後述に記載する。
– make-set($n$):各集合にノードがただ一つのみの$n$個の集合を用意
– find-root($x$):ノード$x$のrootノードを取得→ノード$x$がどの集合に属するかを判別
– union($x, y$):ノード$x$とノード$y$を合併

![スクリーンショット 2023-05-31 23.56.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/656963/f2752c75-c11d-8184-dc91-8310bdd200e1.png)

※改良によって削除に対応したアルゴリズムは[こちら](http:

元記事を表示

【Python】Pandasを利用して、同じ数値から始まる二つのCSVファイルの中身を一瞬で結合する方法

# 概要
同じ数値から始まる二つのCSVファイルの中身を、横方向(列方向)に結合するコードを実装しました。

### 前提
`hoge`ディレクトリにある`XXX_output.csv`と、`foo`ディレクトリにある`XXX_2_output.csv`を結合して、一つのCSVファイルを作成します。`XXX`には同じ数値が入ります。

“`
例:

1234567890_output.csv
1234567890_2_output.csv

結合

1234567890_data.csv
“`

結合して作成されたCSVファイルは、ディレクトリ`combined`に`XXX_data.csv`の形で保存するものとします。

# サンプルコード解説

“`py
import os
import pandas as pd

hoge_dir = ‘hoge’
foo_dir = ‘foo’
combined_dir = ‘combined’

# 出力先ディレクトリを作成
os.makedirs(combined_dir, exist_ok=True)

# hogeディレクトリ

元記事を表示

PyQtを用いて端末を作成する

# はじめに

PyQtの日本語資料の少なく,外国語やQtのC++で書かれたコードを参考に作成せざるを得なかったため作成しました.
参考になれば幸いです
擬似端末として使用する方法を追加予定

## コード

“`python
import sys
from pyqtgraph.Qt import QtCore, QtGui, QtWidgets
# from PyQt5 import QtCore, QtGui, QtWidgets # 上と同意義

class Terminal(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()

self.widget = QtWidgets.QWidget(self)
self.widget.setFixedSize(800, 300)
self.layout = QtWidgets.QVBoxLayout(self.widget)

self.output = QtWidgets

元記事を表示

Python 学習1日目

・ullib.parseモジュール
https://docs.python.org/ja/3/library/urllib.parse.html
上記URLの説明では、urlを解析して構成要素にするとある。

getリクエスト
getリクエストでパラメーターを送信するときは以下の書式になる
“https://example.com?key1=v1&key2=v2&key3=v3…….

len()
len関数は()内に指定したオブジェクトの長さや要素の数を取得する。
例)len(oppai)
>5

sysモジュール
コマンドライン引数を指定したい時に使用する
 コマンドライン引数:コマンドプロンプトの画面で入力する引数

プログラムを中断するときは
処理を終了したい時の関数はexit()もしくはquit()を使用する

元記事を表示

asyncとawaitの基本的な使い方

今回もメモ用。
自分なりの解釈です。

# 概要
asyncとawaitの基本的な使い方です。

とりあえず、以下を書いてみます。
asyncとawaitを使用すると、非同期処理が実装できます。
asyncをつけた関数をコルーチン関数と呼びます。
awaitでコルーチン関数を呼び出してしようします。

# 内容
とりあえず、test1~test3を順番通り実行してみます。

“`asyncawait.py
import asyncio

async def test1(num):
print(num + 10)
await asyncio.sleep(5)
print(“test1”)

async def test2(num):
print(num + 0)
await asyncio.sleep(5)
print(“test2”)

async def test3(num):
print(num + 20)
await asyncio.sleep(5)
print(“test3”)

async def m

元記事を表示

Pyhon 辞書(dict)のループ処理(for)をするときのメソッド(keys(),values(),items())の使用例

# Pyhon 辞書(dict)のループ処理(for)をするときの要素関係

Pythonの辞書`dict`の中のシーケンス要素をfor文でループ処理をする時、`key()`,`value()`,`items()`を使用することで辞書に対して指定したキーや値の組み合わせで要素を取り出すことができる。

### そもそもPythonでいう辞書(dict)って?
簡単に説明すると、**Pythonコード内で定義できるデータの持ち方**の一つです。
他にもリスト(list)、タプル(tuple)があります。

※Pythonのデータの持ち方については、他記事で記載します。^^

辞書の例
`d = {‘key1’: 1, ‘key2’: 2, ‘key3’: 3}`
* `キー:値` の書き方で値を設定すること
 今回は`key1`がキー、`1`が値
* `{}`で囲むこと
* 辞書内に要素を複数入れたい場合は`,`で区切って設定すること

### そのまま辞書オブジェクトをfor文で実行すると、`key`が取得される
辞書作成

“`
d = {‘key1’: 1, ‘key2’: 2,

元記事を表示

python-note (1:Text処理)

# 概要
Pythonノート(1) Text処理系

# file open / close

## open()
– open() を使ってファイルを開く

“`py
>>> f = open(‘./xxx.txt’)
“`

– 第二引数でモードを指定する

|mode|description|
|–|:–|
| ‘r’| open a file for reading (default) |
| ‘w’| open a file for writing. create a file if it does not exist |
| ‘x’| exclusive flag, If the file already exists, the operation fails. |
| ‘a’| open for appending |
| ‘t’| open in text mode (default) |
| ‘b’| open in bianry mode |
| ‘+’| open a file for updating(reading and writing) |

元記事を表示

python-note (基本系)

# 概要
Pythonノート基本系 (自分用メモ)

# 基本

## 文・式
基本的にインタープリタなので1文ずつ解釈して動作

改行が文の区切りになる
“`py
print(“Hello”)
print(“Goodbye”)
“`

コロンで区切っても良い
“`py
>>> print(“Hello”); print(“Goodbye”)
Hello
Goodbye
“`

## コメント

`#`で始まる行はコメントとして扱われる
“`py
# comment xxxx
“`

# 制御構文

## インデント

制御構文のブロックは一般的に括弧{ …… }で表すことが多いが、pythonはインデントによってブロックを表現する

## if文

“`py
if a is b:
print(“a is equal to b”)
else:
print(“a is not equal to b”)
“`

## while文

`while condition:` でブロックを始める。
`else:`節を記載した場合ブロックは一度だけ実行される

元記事を表示

【Python】ttkbootstrapを使用してGUIアプリ作ってみた!

今回はttkbootstrapについて動画を見ながら勉強したのでその記録を残したいと思います。
まだまだソースコードの方は改善します。ちょっと、長すぎます…
また、今回のは基本なのでもう少し自分なりにアレンジしていきます。

参考にした動画はこちらになります。
## 参考動画

## 実際に作成した成果物
①QRコード生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759

元記事を表示

OTHERカテゴリの最新記事