Python関連のことを調べてみた

Python関連のことを調べてみた
目次

[Python]f-string

# f-string

Pythonのf-string(フォーマット済み文字列リテラル)は、Python 3.6から導入された文字列フォーマットの方法です。f-stringを使用することで、文字列の中に変数や式を埋め込んで簡潔に文字列を構築することができます。以下では、f-stringの基本的な使い方や特徴について詳しく説明します。

### 基本的な使い方

f-stringは、文字列の先頭に `f` または `F` を付けた文字列リテラルです。以下のように、中括弧 `{}` 内に変数や式を埋め込むことができます。

“`python
name = “Alice”
age = 30

message = f”My name is {name} and I am {age} years old.”
print(message)
“`

この例では、`name`と`age`という変数を `{}` 内に挿入して、その値を文字列に組み込んでいます。`f”…”` の形式を使うことで、変数の値を埋め込むことができます。

### 変数の埋め込み

f-stringでは、変数のほかにも式や

元記事を表示

PythonのsimpleHTTPServerを使用したESP32のソフトウェアアップデート

## 1. はじめに
私が行った研究の実験環境で用いたSimpleHTTPServerを使用したESP32の更新の仕方を簡単にまとめたものです.

### SimpleHTTPServerとは
Pythonに付属している標準ライブラリの一つで, 簡単なHTTPサーバーを立てることができます. これを使用すると, ディレクトリからファイルを提供するためのWebサーバーを簡単に設定できます. これは, 静的ファイルの提供や, 複雑な設定を必要としない開発目的での利用には便利です.

## 2. 構成
サーバーを開設した後, ESP32からリクエストを送信します. サーバーはクライアント(ESP32)からのリクエストを正常に受け取り, 処理し, HTTPステータスコード200を含むレスポンスを返します. これにより, ESP32はリクエストが成功したことを確認できます.

#### サーバー構成:
● SimpleHTTPServerを使用
● 言語:Python ver.3.12.0

#### クライアント構成:
● マイクロコントローラ:ESP32
● 言語:MicroPython

元記事を表示

Pythonで1次元および2次元バーコードを生成する(EAN-13、Code128、QRコードなど)

バーコードは、現代の情報交換やデータ保存のための重要なツールです。機械認識やデータ処理を容易にするために、情報をグラフィックの形で符号化し、物流、小売、医療、教育など様々な分野で広く利用されています。

この記事では、PythonでCode 128、EAN-13、QRコードなど、さまざまな一般的なバーコードをすばやく生成する方法を紹介します。
* [PythonでEAN-13コードを生成する](#pythonでean-13コードを生成する)
* [PythonでCode128を生成する](#pythonでcode128を生成する)
* [PythonでQRコードを生成する](#pythonでqrコードを生成する)

## Pythonバーコードライブラリ
この記事では、EAN、UPC、Code128、Code39、QRコード、データマトリックスなど、幅広い1Dおよび2Dバーコードの生成と認識をサポートする[**Spire.Barcode for Python**](https://www.e-iceblue.com/Introduce/barcode-for-python.html)ラ

元記事を表示

【コロナ社】プログラミング言語 まとめ

# プログラミング言語 Webサイトリンク
本書を取り上げていただいた,Web上の関連記事をまとめました。

## 内容梗概
『Pythonで学ぶ実践画像・音声処理入門』
本書は,ディジタルメディアの代表的データである画像や音声をコンピュータで扱うための基本的な手法を知り,実際に読者がPythonを用いて様々な処理ができるようになることを目標としている。

              『Pythonで学ぶ実践画像・音声処理入門』

            

元記事を表示

Open-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で、オフィスビルにおける簡単な館内配送シミュレーションをしてみた その2 時間帯別荷物搬入個数の配送への反映

# 1. はじめに
先日[Open-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で、オフィスビルにおける簡単な館内配送シミュレーションをしてみた](https://qiita.com/bebebefu/items/6fc0ede2af08248fbfd6)[[1]](#参考文献)にて濱野ら[[2]](#参考文献)の論文を参考に、オフィスビルにおける館内配送を対象に簡単なシミュレーションをしてみました。

参考文献[[1]](#参考文献)のシミュレーションでは、以下の条件にてシミュレーションを行いました。

|項目 |内容 |
|—|—|
|ロボット発進位置 | 館内メールセンター(地上3階)|
|配送場所① | 地上3階~地上18階のそれぞれのフロアのオフィスエリアに各2か所(上図で示した配送先1と配送先2)|
|配送場所② | 地上19階の厨房に1か所|
|配送場所③ | 地上19階のコンビニに1か所|
|館内配送の総量|41個|
|**館内配送の頻度**|午前10時開始配送:21個(本記事のシミュレーションン対象)、午後15時開始配送:20個|
|

元記事を表示

Pythonが遅い理由とその対策

## はじめに

Pythonは柔軟性が高く、初心者にも適したプログラミング言語ですが、その一方で速度面では他の言語に劣るとされています。本記事では、先月ピッツバーグで開催されたPyCon US 2024で紹介されたPythonの高速化技術について詳しく解説します。

## Pythonの速度問題

「Pythonはランタイムにコストを払う」という古い格言が示す通り、Pythonは解釈型言語であり、実行時に多くの処理を行うため速度が遅くなることがあります。Pythonはソースコードを効率的なバイトコードに変換し、それを直接実行することで動作します。このプロセスには多くの間接処理が含まれ、単純な命令でさえも多数のCPU指示に分解されます。例えば、二つの数値を足すだけでも500以上の命令が実行されることがあります。

## 高速化のためのコンパイル技術

### Cythonによる最適化

PyCon 2024でのSaksham Sharma氏の発表では、Cythonを用いた高速化手法が紹介されました。CythonはPythonコードをC言語にコンパイルすることで、実行速度を大幅に向上させ

元記事を表示

[Python]型ヒント

# 型ヒント

Pythonの型ヒント(type hints)は、Python 3.5以降で導入された機能であり、静的型チェックやコードの可読性を向上させるために使われます。型ヒントは、特定の変数や関数の引数、戻り値に対して、期待されるデータ型を示すアノテーションのような形で書きます。

### 型ヒントの基本的な使い方

Pythonでは、変数や関数の引数、戻り値に対して型ヒントを以下のように記述します:

“`python
def greet(name: str) -> str:
return f”Hello, {name}”

age: int = 25
“`

– `name: str`:`greet`関数の引数`name`が文字列型 (`str`) であることを示しています。
– `-> str`:`greet`関数が文字列型 (`str`) を返すことを示しています。
– `age: int = 25`:`age`という変数が整数型 (`int`) であり、初期値として`25`を持つことを示しています。

### 型ヒントの利点

1. **静的型チェック**:

元記事を表示

[Python]dataclass

# dataclass

Pythonの`dataclass`は、Python 3.7から導入されたデータクラスを定義するための便利な機能です。`dataclass`を使用することで、データの保持と操作のためのクラスを簡潔に定義できます。以下では、`dataclass`の基本的な使い方や機能について詳細に説明します。

### 基本的な使い方

`dataclass`を使用するには、`dataclasses`モジュールをインポートする必要があります。

“`python
from dataclasses import dataclass
“`

そして、`dataclass`デコレータをクラス定義の直前に記述します。`dataclass`デコレータを付けたクラスは、自動的にいくつかの特定の機能を持つようになります。

“`python
@dataclass
class MyClass:
attr1: str
attr2: int
“`

この例では、`MyClass`というデータクラスが定義されています。`attr1`と`attr2`はそれぞれ文字列と整数の属性

元記事を表示

ラッキーピエロ全店を最短でめぐりたい

## 函館にしかないハンバーガー屋
ラッキーピエロというハンバーガー屋さんをご存じでしょうか?なんでも北海道の函館周辺にあるテーマパークのようなハンバーガー屋さんらしいです。愛唱は「ラッピ」。

https://luckypierrot.jp/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/48a5c03a-2340-5cff-26c5-bc41974c3552.png)

店舗ごとに雰囲気も違い、ハンバーガーの種類も豊富ということで、ハンバーガー好きなら函館に行って全店舗を回りたい!
ということで、最短で全店舗回れるルートマップを解析しました!

結果はこの通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/e392ca09-3a3e-4041-8f29-e9291fb9ec3b.png)

では、実装方法を説明します。

## 全店舗回るための準備

元記事を表示

[Python]継承

# 継承

継承(inheritance)は、Pythonにおけるオブジェクト指向プログラミングの基本的な概念です。この概念は、コードの再利用性を高め、階層的なクラス構造を構築するために利用されます。

### 継承の基本的な概念

継承には主に以下の2つのクラスが関与します:

1. **親クラス(基底クラス)**:継承の元となるクラスで、他のクラスに機能を提供します。
2. **子クラス(派生クラス)**:親クラスから継承された属性やメソッドを持ち、新しい機能を追加することができます。

Pythonでは、クラスの定義において継承する親クラスを指定することで継承を実現します。例えば:

“`python
class ParentClass:
def __init__(self, name):
self.name = name

def greet(self):
print(f”Hello, I am {self.name}”)

class ChildClass(ParentClass):
def __init__(

元記事を表示

Engine Simulatorの作法 その26

# 概要
Engine Simulatorの作法を調べてみた。
githubでエンジンジェネレータ見つけた。
練習問題やってみた。

# 練習問題
90度V型4気筒エンジンを作れ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/08093506-705c-388a-2a6d-831d615e90d9.png)

# サンプルコード

“`

def generate_v4():
cylinders0 = []
cylinders1 = []
cylinders = []
for i in range(2):
cylinders0.append(i * 2)
cylinders1.append(i * 2 + 1)
cylinders += [i * 2, i * 2 + 1]
b0 = Bank(cylinders0, -45)
b1 = Bank(cylinders1, 45)
engine = Engine([b0, b1],

元記事を表示

WiringPi インストール方法 2024 年版

「WiringPi インストール方法」
https://qiita.com/nanbuwks/items/f70005772133bf54f4d3
では 2.5 や 2.52 をインストールしましたが、その後 OS レポジトリから削除されたり pip が非推奨となったりしたので今どきの環境に合わせて書き直し。

# 環境

– Raspberry Pi 3B
– Raspberry Pi OS Lite (2024-07-04-raspios-bookworm-armhf-lite.img.xz)

# 事前準備

“`
$ sudo apt update
$ sudo apt install git python3-pip
“`

# WiringPi インストール

本家は開発を停止していますが、フォークされた git からインストールします。

“`
$ git clone https://github.com/WiringPi/WiringPi.git
$ cd WiringPi/
$ ./build
“`

以下のように処理が進みます。
“`
wiringPi

元記事を表示

循環importに関するエラー解決方法をまとめたけど、そもそも循環importするな

# 循環importとは

循環import(circular import)とは、2つ以上のモジュールが互いに依存し合っている状態を指します。
文字通り、関数とかをお互い参照し合うimportであるわけです。

例えば、モジュールAがモジュールBをインポートし、同時にモジュールBもモジュールAをインポートしているような場合です。

“`python:module_a.py
from module_b import function_b

def function_a():
print(“Function A”)
function_b()
“`
“`py:module_b.py
from module_a import function_a

def function_b():
print(“Function B”)
function_a()
“`

# なぜ循環importをしてはならないのか

一方のモジュールが完全に読み込まれる前に他方のモジュールが実行を開始してしまい、期待通りに動作しない場合があります。
これのせいでよくバグります。

元記事を表示

これで完璧!PEP8スタイルガイドラインを習得するためのクイズ10問

## はじめに
Pythonはそのシンプルさと可読性の高さで知られるプログラミング言語です。しかし、その可読性を最大限に引き出すためには、コードスタイルガイドラインであるPEP8(Python Enhancement Proposal 8)を遵守することが重要です。PEP8は、Pythonコードの一貫性と可読性を向上させるためのベストプラクティスを提供します。

この記事では、PEP8に準拠したコーディングスタイルと、そうでないスタイルを比較するための10問のクイズを紹介します。このクイズを通じて、PEP8の基本的なルールを学び、実践的な知識を深めることができます。初心者から経験者まで、すべてのPythonプログラマーに役立つ内容となっているので、ぜひ挑戦してみてください。

## PEP8スタイルガイドラインを習得するためのクイズ10問

### 問題1

“`python
# コードA
def add(a, b):
return a+b

# コードB
def add(a, b):
return a + b
“`

#### 解答: コードB

#### 解説:

元記事を表示

順列を生成するJohnson-Trotterアルゴリズム

順列をもれなく生成するアルゴリズムの一つ[Steinhaus–Johnson–Trotter algorithm (Wikipedia)](https://en.wikipedia.org/wiki/Steinhaus%E2%80%93Johnson%E2%80%93Trotter_algorithm) (以下Johnson-Trotterアルゴリズム)に関して以下の3つを紹介します

1. Johnson-Trotterアルゴリズム(オリジナル)
1. Johnson-Trotterアルゴリズム(再帰的)
1. 指定された順列が何番目に出てくるか

### Johnson-Trotterアルゴリズム(オリジナル)

Wikipediaによれば教会の鐘をならす順番を常に違ったものにするために、隣の2つの鐘の順序だけを変えてゆくことから考え出されたとのことです。

そのアルゴリズムは[Johnson Trotter Algorithm (youtube)](https://www.youtube.com/watch?v=xsFKorZ95Yw)に詳しく説明がありますが。簡単に言うと以下の

元記事を表示

爆速でエクセルの複数シートを一括作成する方法まとめ

複数のシートを一括作成する方法をまとめました。

### エクセルのピボットテーブルを使う
ピボットテーブルのレポートフィルターページの表示
※ゴミセルとゴミシートの削除が必要になります。

***参考文献***

https://note.com/office_haru/n/n35ab7211eece

### pythonのopenpyxlを使う

pythonのopenpyxlの機能とループを組み合わせて複数シートの追加ができます。

https://qiita.com/momomoge/items/9f321871ef8d0dc8acc7

元記事を表示

【Pybulletサンプル解説】変形可能なボックスを生成【reduced_deformable_cube.py】

Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。

今回は、reduced_deformable_cube.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/reduced_deformable_cube.py))

本コードを実行すると、「変形可能なボックス」の上に「剛体のボックス」を生成されます。

![reduced_deformable_cube.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/9edacd33-1d75-94e1-7983-133427a42f42.gif)

# 使用している機能
本コードは、以下の機能を使用して「変形するオブジェクトが生成

元記事を表示

【Pybulletサンプル解説】変形するオブジェクトを生成【reduced_deformable_torus.py】

Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。

今回は、reduced_deformable_torus.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/reduced_deformable_torus.py))

本コードを実行すると、「剛体のオブジェクト」と「変形するオブジェクト」が生成されます。

![reduced_deformable_torus.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/26d780f9-f204-5bce-3af8-6620dfca82be.gif)

# 使用している機能
本コードは、以下の機能を使用して「変形するオブジェク

元記事を表示

【Pybulletサンプル解説】Pybulletの基礎的なコード【hello_pybullet.py】

Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。

今回は、hello_pybullet.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/hello_pybullet.py))

本コードを実行すると、r2d2のモデルが生成されます。

![hello_pybullet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/96de376c-f720-cc57-ce5a-a20de7a9a74d.gif)

本コードでは、「Pybulletへの接続」「重力の設定」「urdfモデルの生成」「リアルタイムシミュレーションモードの設定」などPybulletでよく使う基礎的な機能が

元記事を表示

【Pybulletサンプル解説】最大速度を設定し、関節を位置制御【motorMaxVelocity.py】

Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。

今回は、motorMaxVelocity.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/motorMaxVelocity.py))

本コードを実行すると、

![motorMaxVelocity.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/d815cb0c-fe6d-fc61-0467-900511643613.gif)

# 使用している機能
本コードは、以下の機能を使用して「関節のモータ制御」を実現しています。

## 関節のモータ制御
`setJointMotorControl2` 関数を使用するこ

元記事を表示

OTHERカテゴリの最新記事