- 1. Python3: GATT で String データを送受信
- 2. opencv 自動起動で失敗します
- 3. python if構文(自分用)
- 4. Python認定基礎試験 setに関するメモ
- 5. Python認定 基礎試験 タプルのメモ
- 6. 独学でpythonを始めて挫折した話(自分用)
- 7. Python3 基礎試験 スタックとキューとcollections.deque のメモ
- 8. 【色変記事】AtCoderで入茶した件
- 9. Pythonで始める!金融計算をシンプルに:計算記号を使いこなす
- 10. python3 基礎試験 判定と繰り返しのメモ
- 11. Python3: GATT で String データを送信
- 12. Pythonの例外処理を1から解説
- 13. Python3: GATT のデータを受信
- 14. [Python] 辞書操作
- 15. Python3: GATT の Characteristic を調べる
- 16. Python logging 解説(初心者向け)
- 17. 個人的TRPGbotの制作記
- 18. Djangoで画像をアップロード、そして表示 躓いたポイントと手順を解説
- 19. Rye環境でNuitkaを使う
- 20. はじめてのKaggle② タイタニックコンペのデータ確認~モデル作成(決定木)
Python3: GATT で String データを送受信
通信相手のアドレスと Characteristic UUID を与えて、String を送受信する方法です。
## プログラム
“`py:send_get_data.py
#! /usr/bin/python
# send_get_data.py
#
# Oct/02/2024
# ——————————————————————
import asyncio
from bleak import BleakClientDEVICE_ADDRESS = “2C:BC:BB:65:E8:5A” # デバイスのMACアドレスを入力
CHARACTERISTIC_UUID_READ = “7DEF8317-7301-4EE6-8849-46FACE74CA2A” # 通知を受信するキャラクタリスティックのUUID
CHARACTERISTIC_UUID_WRITE = “7DEF8317-7302-4EE6-8849-46FACE74CA2A” # 書き込みを行うキャラクタリスティックの
opencv 自動起動で失敗します
Python 3.11.2
Raspberry Pi 4 model BUSBカメラを用いて特定の画像を認識するとネオピクセルLEDに指定した図形が表示するプログラム(face_led0910.py)を作りました。
認識のためカスケード分類器でxmlファイルを作り、特定の画像を認識することができました。
LXターミナル上では意図した動きになりましたが、自動起動で失敗でします。systemd unitファイルを作り、sudo systemctl enableでサービスを有効化
↓
sudo systemctl startでサービスをスタート
↓
sudo systemctl statusで動作確認を行うと以下のエラーが表示されます。Process: 29321 ExecStart=/home/kiyohara/env/bin/python3 /home/kiyohara/env/bin/face_led0910.py (code=killed, signal=ABRT)
Main PID: 29321 (code=killed, signal=ABRT)
python if構文(自分用)
1.基本編
–
if構文はif、elif、elseで構成される。(elif、elseは省略可能)“`
# 変数aとbを比較し、結果をprint関数で表示するa = 20
b = 10if a==b:
print(“aとbは等しいです”)
elif a>b:
print(“aはbより大きいです”)
else:
print(“bはaより大きいです”)# 出力 ⇒ aはbより大きいです
“`2.ネストも可能
–
あまり深くなりすぎるとコードの可読性が下がるので、おすすめしません。
(エクセル表関数やVBAを使いこなしている方がよくやりがちなパターン)“`
a = 50
b = 10
c = 30# aとbを比較し、その後ネストによりaとcを比較する(ネストする場合)
if a > b:
print(“aはbより大きい”)
if a > c:
print(“aは最も大きい”)# 出力 ⇒ aはbより大きい
# 出力 ⇒ aは最も大きい# aとbを比較し、その後ネストによりaとcを比較
Python認定基礎試験 setに関するメモ
Pythonエンジニア認定基礎試験の勉強メモです📝
ここでは`set`について。
# setとは
集合を扱うデータ型で、要素を重複しないように保持する。
setに要素を追加するには `add()`メソッドが使用できるが、要素同士は順序を持たないため
要素を取り出す時も、決まった順序で取り出されることはない。
集合同士で、演算も可能。# set()関数で定義できる
`set()関数`の引数はリストやタプルなどの反復可能体。
“`python
# 引数: リスト
set_1 = set([‘a’, ‘b’, ‘c’, ‘d’])# 引数: タプル
set_2 = set((1, 2, 3, 4))
“`# 特定の要素を含むかどうかの判定
“`python
sample_set = {‘sample’, ‘keyword’}print(‘keyword’ in sample_set) # True
print(‘password’ in sample_set) # False
“`
この処理の時間計算量は`O(1)`になる。# set同士の演算
### 和集合
Python認定 基礎試験 タプルのメモ
Pythonエンジニア認定基礎試験勉強中のメモです📝
この記事はタプルについて。# タプルとは
複数の値を扱うデータ型。
一般的に `(‘apple’, ‘banana’, ‘peach’)`のようにカンマ区切りの要素を `()`囲む。
(※ 実際にはカンマで要素が区切られていればOKなので、()は省略できる)
一度定義されたタプルは、その後に要素の追加、削除、値の変更などはできない。
“`python
tuple_1 = (1, 2, 3)# 既に定義されたタプルを使って、新たにタプルを定義することは可能
tuple_2 = tuple_1 + (4, 5,)print(tuple_1) # (1, 2, 3)
print(tuple_2) # (1, 2, 3, 4, 5)
“`## タプルの定義方法
“`python
# カンマ区切りの要素を括弧で囲む
tuple_3 = (‘dog’, ‘cat’, ‘mouse’)# ()を省略した形もある
tuple_4 = ‘rice’, ‘bread’, ‘noodle’# 要素が一つのときは末尾にカンマを
独学でpythonを始めて挫折した話(自分用)
きっかけ
–
初めまして。
私は大企業で働く非エンジニアです。(IT企業ではない)
この記事では下記のついてまとめています
(自分の頭の中の整理をするためのアウトプット)1.なぜpythonを始めたのか
2.すぐに挫折する
3.転機と学習再開まで
4.挫折した原因を考える
5.アウトプットする習慣を作る
6.今後の活動1.なぜpythonを始めたのか
–
私は株式投資を行っており、各銘柄の信用倍率、貸借状況の各指標をチェックしていました。
正直、これが面倒だなって思ってた時にyoutubeで「pythonで自動化」みたいな動画を見て、「これやってみよう!」と思い立ち、pythonについて調べ始める。2.すぐに挫折する
–
2021年1月
当時VBAを少しかじったことがある程度の知識しかなかったが、なんとかなるだろうと軽い気持ちでpythonに関する書籍の口コミを調べる。⇒Python3 基礎試験 スタックとキューとcollections.deque のメモPython3エンジニア認定基礎試験の勉強中です。
今日は問題を解いていて、あれ?となったスタックとキューについて、そこから派生して調べたcollections.dequeの処理が効率的な理由を簡単にメモを残します。# スタック
**LIFO : 後入れ先だし = 最後に追加したものが最初に出てくる**
`push : スタックにデータを追加すること`
`pop : スタックからデータを取り出すこと`
“`python
# 簡単な例
stack = []
stack.append(1) # pythonではpushをappend()を使用
stack.append(2)
stack.append(3)
print(stack) # [1, 2, 3]
print(stack.pop()) # pythonではpop()を使用 -> 最後に追加した 3 が取り出される
“`
# キュー
**FIFO : 先入れ先出し = 先に追加したものが先に出てくる**
`enqueue : キューにデータを追加する`
`dequeue : キューからデータを取り出す`“`python
【色変記事】AtCoderで入茶した件
# 始めに
初めましてyuumaと申します。
ABC373で初めての色変を体験したので色変記事というものを書いてみようと思います。
![スクリーンショット 2024-10-04 135742.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896155/b2469dc4-9b69-ba9a-0c97-541293a7b19c.png)
# 自己紹介
* 国立理系の大学一年生
* 大学入学前のプログラミング経験なし
# やったこと
* ほぼ毎週コンテストに出た(abc352から)
* AtCoder Daily Traningに参加(9月から)
大体上の2つだけであとはたまにA,B,Cを埋めていました。
# 使用言語
python3を使っています。~~python3で通らないときはChatGPTにC++へ変換させることもあるので、C++を使っていると言えるかもしれません~~
# 覚えたアルゴリズム
* 二分探索
* DP(動的計画法)
* 累積和
* BFS(幅優先探索)
# 競プロをやっていてよかったこ
Pythonで始める!金融計算をシンプルに:計算記号を使いこなす
Pythonは、金融業界でも利用されています。書籍も何冊か見つけられると思います。
本記事では、Pythonの基礎的な計算記号を使って、金融計算をどのように行うか、具体的な例を交えて解説していきます。
## この記事で得られること
– +, -, *, \/などの計算に利用する演算子の使い方がわかる。
– お金のシュミレーションに関心の持てるかも
– コードがシンプルにしてあるので、取り入れやすい。## なぜ、この内容の記事なのか
シンプルに書いてあるので、すぐに行動に移しやすいのではと意図しています。
少しでも、お金を増やすことに関心持ってもらえるかも思っています。# print関数と計算記号の基本
Pythonで計算結果を表示する際に最もよく利用されるのがprint()関数です。この関数に計算式を渡すことで、その結果をコンソールに出力することができます。#### Pythonで利用できる主な計算記号は以下の通りです。
– +: 足し算
– -: 引き算
– *: 掛け算
– ***: べき乗
– /: 真の除算(小数点以下を含む)
– //: 整数除算(小数点以下を切
python3 基礎試験 判定と繰り返しのメモ
# 1. `is` と `==`
“`
if value is None:
“`
“`
if value == None:
“`
このふたつがあったとき、
前者は value が Noneであるかを判定可能。
後者もほとんどの場合で正しく判定可能ではあるものの、 `is`での判定よりも時間がかかったり、`==`の動作を変更するようなことも可能。
よって、`valueがNoneであるかを判定する最適な方法`は`if value is None:`である。
# 2. range()関数
“`
range(stop)
range(start, stop)
range(start, stop, step)
“`
のいずれかで使用可能。
`stop は含まない (< stop)` `start 省略 => 0始まり`
`step 省略 => 1ずつ増加`
# 3. dicに使えるメソッド
`items()` : key, valueをペアで取得。
`keys()` : keyのみを取得。
`values()` : valueのみを取得。
“`python
data = {‘key1
Python3: GATT で String データを送信
送信先のアドレスと Characteristic UUID を与えて、String を送る方法です。
## プログラム
“`py:send_data.py
#! /usr/bin/python
#
# send_data.py
#
# Oct/02/2024
# ——————————————————————
import asyncio
from bleak import BleakClientDEVICE_ADDRESS = “08:3A:F2:66:04:4A”
CHARACTERISTIC_UUID = “7DEF8317-7302-4EE6-8849-46FACE74CA2A”# ——————————————————————
async def send_data(address, char_uuid, data):
async with BleakClient(address)
Pythonの例外処理を1から解説
# はじめに
Pythonには例外処理の書き方がいくつかあります。
この記事では、例外処理の基本となるtry-except構文、ファイル操作などでお馴染みのwith文を紹介し、最後にコンテキストマネージャについて解説します。
:::note info
Pythonコード多め・文章少なめです。
::::::note info
例外処理について初歩の初歩から始まり、Python独自の書き方まで解説します。
:::# 例外とは
IndexErrorやValueErrorなど、コードを動かすとエラーを起こすことがあります。これを **例外** と呼びます。
“`Python
lst = [2, 4, 6, 8]
element = lst[4] # IndexError (リストの範囲外を見に行っているため)
“`
“`Python
word = “Python”
value = int(word) # ValueError (アルファベットをint型にしようとしたため)
“`# try-except構文
## try節, except節
例外が出るかも
Python3: GATT のデータを受信
こちらで送信する String を Python で受信しました。
[ESP32: GATT で String を送信](https://qiita.com/ekzemplaro/items/52dc8b065a431147013c)送信元のアドレスと Characteristic UUID が必要です。
## プログラム
“`py:get_data.py
#! /usr/bin/python
#
# get_data.py
#
# Oct/02/2024
# ——————————————————————
import asyncio
from bleak import BleakClientDEVICE_ADDRESS = “08:3A:F2:66:04:4A”
CHARACTERISTIC_UUID = “00002a19-0000-1000-8000-00805f9b34fb”async def read_characteristic(address, char_uu
[Python] 辞書操作
# 辞書のキーと値を入れ替える
こんな感じです。
~~~Python:Irekae.py
dic = {“英語”:90, “国語”:85, “数学”:82, “理科”:95, “社会”:84}
reversed_dic = {j:i for i, j in dic.items()}
print(reversed_dic)
# 出力結果
{90:’英語’, 85:’国語’, 82:’数学’, 95:’理科’, 84:’社会’}
~~~
# 2つの辞書をマージする その1
辞書に対してアスタリスク2つをつけると、キーワード引数としてアンパックできるので、アスタリスクを2つつけた辞書データを{}で囲って結合します。
~~~Python:merged_dict1.py
menu1 = {“カツカレー”:850, “味噌カツ定食”:900, “アジフライ定食”:800}
menu2 = {“鯖の塩焼き定食”:950, “シェフの気まぐれ定食”:1000}
merged_menu = {**menu1, **menu2}
print(merged_menu)
# 出力結果
# {‘カツカレー’:
Python3: GATT の Characteristic を調べる
事前に bluetoothctl で ペアリングをしておく必要があります。
## プログラム
“`py:get_services.py
#! /usr/bin/pythonimport asyncio
from bleak import BleakScanner, BleakClient# 対象デバイスの MAC アドレスを設定
TARGET_MAC_ADDRESS = “2C:BC:BB:65:E8:5A” # ここに対象デバイスの MAC アドレスを入力# デバイスをスキャンして、接続後にサービスと characteristic を取得する関数
async def connect_and_list_characteristics():
print(f”Scanning for device with MAC address: {TARGET_MAC_ADDRESS}”)# BLE デバイスのスキャン
devices = await BleakScanner.discover(return_adv=True)
targe
Python logging 解説(初心者向け)
# はじめに
Pythonのloggingについての記事です。
:::note info
loggingについて詳しくない人向けの記事です。ログの初歩から始めて、図やPythonコードを見ながら進めていきます。
:::# ログとは
ログとは、アプリケーションやシステムが実行中に生成する記録やメッセージのことです。
よくあるのはこういうログ。
| ログ名 | 説明 |
|:-:|:-:|
| エラーログ | システムやアプリケーションのエラーに関する情報。 |
| イベントログ | 特定のイベントやアクションに関する記録。 |
| デバッグログ | 開発中のデバッグ情報。詳細な実行状況を記録する。 |
| 情報ログ | 一般的な運用情報。システムの状態や進行状況を示す。 |# 実際に動かしてみる
まずはPythonのloggingがどのような出力をするのか見てみます。
“`Python: Python
import logginglogging.warning(“This is warning message!!”)
print(“reached
個人的TRPGbotの制作記
# TPRGbotが作りたい!!!
### 卓回す時にDiscordの中で「いあきゃら」とか、「CCFOLIA」とかのURLを管理失敗する人向け
## 目次
| [1. 目標](#1-目標) |私のやりたかった事|
|:—–:|:—–|
| [2. 成果物](#2-成果物) |結果的に出来上がった物|
| [3. 追加予定の仕様](#3-追加予定の仕様) |追加を予定している要素|
| [4. 悩み](#4-悩み) |技術力ない故の悩み|
| [5. リンク集](#5-リンク集) |リンク集|## 1. 目標
### 開発目標
1. TRPGを進行する上で便利になるツールの制作
1. 仕様ごとに分割した見やすいコードを意識した制作
1. 処理の安定と24/7に耐えうるプログラム制作
1. データベース化することによって、マルチサーバ上で動作するようにする
### 仕様目標
1. 各TRPGに使うロール等の管理
1. Roomでの秘匿処理の管理
1. 各PCのキャラシの管理
1. 秘匿処理用スレッドを自動作成し、HO毎に自動追加## 2. 成果物
###
Djangoで画像をアップロード、そして表示 躓いたポイントと手順を解説
# はじめに
Djangoで作ったWebアプリに画像をアップロードし、アップロードした画像を表示する機能を実装したい!と思い、いろんな記事を調べ実装したがアップロードした画像が表示されない…という問題に直面した。そのときの僕のミスを紹介した後、基礎的な手順を解説します。手順が分かっている人は冒頭のミス紹介を、これからアップロード・表示方法を学びたい人は下の手順からご覧ください。
※コードの挙動も書いていくため長い記事になります。コードの部分だけで実装可能なので適宜読み飛ばしてください。# 1.僕のミス
ここでは端的にアップロードした画像が表示されなかった理由を紹介
“`python:urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
“`
をアプリケーションルーティングに記述してしまっていた。Djangoのプロジェクトのルーティングは、project_name/ur
Rye環境でNuitkaを使う
めっちゃ単純だった…
これに数日ハマってしまった…# Rye
Pythonの今一番ホットなパッケージ管理ツール。
Rust製のため高速https://rye.astral.sh/
# Nuitka
Pythonの今一番ホットなビルドツール。
Pythonから.exeを作れる。従来のpyinstallerなどと違い、C言語ベースでビルドするので、スクリプトで実行するよりも動作が高速になる。https://nuitka.net/
# 問題点
Ryeをインストール後に、その環境にNuitkaをインストールしたが、Nuitkaがうまく動かなかった。
おそらくRye経由だとNuitkaが「スクリプト」としてインストールされない?“`Powershell
PS C:\Users\xxx\dev> rye add Nuitka
PS C:\Users\xxx\dev> rye run nuitka –version
error: 指定されたファイルが見つかりません。 (os error 2)
“`呼び出しを以下のように、 `python -m ` 経由に切り替えると動作
はじめてのKaggle② タイタニックコンペのデータ確認~モデル作成(決定木)
## 概要
はじめてKaggleに取り組む人へ向けた記事②として、タイタニックコンペで簡単にデータ確認後、決定木モデルを作成して提出します。
## 前提
以下は対応済みとます。
– [環境作成](https://qiita.com/udata/items/44ec3293ce8b6f97588b)
– [Kaggle登録](https://qiita.com/udata/items/0fe7a72fddd7018b6052)## 1. 準備
データダウンロードと集計するための準備をします。### 1-1.コンペデータのダウンロード
タイタニックのコンペぺージでDataタブ([■](https://www.kaggle.com/competitions/titanic/data))を開き、”Download All”を押下する⇒”titanic.zip”がダウンロードされるので、所定の位置へ設置して展開します。
※今回はこのコンペ用にtinanicフォルダ(`C:/Users/u-data/kaggle/titanic/`)を用意し、その下の`data`フォルダに設置