- 1. python3 基礎試験 判定と繰り返しのメモ
- 2. Python3: GATT で String データを送信
- 3. Pythonの例外処理を1から解説
- 4. Python3: GATT のデータを受信
- 5. [Python] 辞書操作
- 6. Python3: GATT の Characteristic を調べる
- 7. Python logging 解説(初心者向け)
- 8. 個人的TRPGbotの制作記
- 9. Djangoで画像をアップロード、そして表示 躓いたポイントと手順を解説
- 10. Rye環境でNuitkaを使う
- 11. はじめてのKaggle② タイタニックコンペのデータ確認~モデル作成(決定木)
- 12. PyTorchに入門しよう② DatasetとDataLoader
- 13. Cloud Run Servicesの実践
- 14. 【python】佐々木琴子さん、ツイート文例ツール
- 15. [Python] 最大公約数を求める
- 16. scratchで擬似的なpython
- 17. Pythonでよく使うコード
- 18. 【資格試験】Python 3 エンジニア認定基礎試験に合格した話
- 19. Pythonのzip()関数
- 20. Discord BOTでのレジ及び売上管理について(GTA RP/FiveM)
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`フォルダに設置
PyTorchに入門しよう② DatasetとDataLoader
### 前回の記事
[PyTorchに入門しよう① Tensorの使い方](https://qiita.com/175Rin/items/183d6205e034873ad0b2)## はじめに
今回はDatasetとDataLoaderとは何か、どのようにして使用するか、
そして、FashionMNISTのDatasetをロードする方法とカスタムデータセットの作成方法を学びます。## DatasetとDataLoader
データサンプルを処理するコードというのは煩雑になりやすく、メンテナスも大変です。
これを解消するためには、データセットのコードをモデルの学習コードから切り離して管理するのが理想的です。
PyTorchでは以下の2つのデータセットプリミティブが提供されており、プリロードされたデータセットや独自のデータを使用することができます。
- torch.utils.data.Dataset
- サンプルデータとそれに対応するラベルを格納する
- torch.utils.data.DataLoader
- Datas
Cloud Run Servicesの実践
# **はじめに**
この記事ではいくつかの演習を通じてCloud Run Servicesの実践的な使い方を紹介します。
なおCloud Runは有料のサービスなので料金については事前に[公式サイト](https://cloud.google.com/run/pricing?hl=ja)で確認することをお勧めします。
また「Cloud RunとかCloud Run Servicesって何?」となってる方は[過去の記事「怖くないCloud Run」](https://qiita.com/sugarperson/items/548bacebdd1de4ccc41c)を読んで見ていただけると幸いです。
# **演習の準備**
## **プロジェクトの作成**
演習に使用するプロジェクトがない場合は以下の手順でプロジェクトを作成してください。
1. [**Google Cloud ダッシュボード**](https://console.cloud.google.com/projectselector2/home/dashboard?hl=ja)を開きます
2. 「プロジ
【python】佐々木琴子さん、ツイート文例ツール
# はじめに
声優の佐々木琴子さんが、毎日おいしかった食事を定型文でツイートされていらっしゃるので、ツイート文例ツールを作りました## どんなツール?
佐々木琴子さんのツイートに
> **今日はうどんを食べました。美味しかったです**が食べもの以外の部分をテンプレートにしています。今回はテンプレートの作成を
実装しました。## 実装したコード
“`python
# 佐々木琴子さんツイート用BOT作成ツールfood = “”
while True:
print(“今日美味しかった食べ物を入力してください。”)
food = input()
food = food.replace(“ ”,””)
check_food = food.replace(” “,””)
food_length = len(check_food)
if food_length == 0:
print(“文字が入力されていません”)
elif food_length > 0:
breakanswer_sentense = f”今日は{food}を食べま
[Python] 最大公約数を求める
# 最大公約数とは
皆さんご存じのように、最大公約数とは**2つ以上の正の整数の共通の約数のうち最大の数**のことです。
# 愚直に求める方法
2つの整数をa、bとします。aの約数のリスト、bの約数のリストをそれぞれ作成し、2つのリストに共通する要素の中で最大のものを求めます。
~~~Python:gcd1.py
def gcd(a, b):
a_div = []
b_div = []div = 1
while a > div:
if a % div == 0:
a_div.append(div)
div += 1div = 1
while b > div:
if b % div == 0:
b_div.append(div)
div += 1c, d = 0, 0
gcd_list = []
for c in a_div:
for d in b_div:
scratchで擬似的なpython
## scratchで模擬的なpythonを作っている話
https://scratch.mit.edu/projects/1074063277/
(↑)とにかく暇だったのと、scratchで調べても改善できそうなものばかりだったのでならば自分が作ろう!と思って作り出したのですがめんどくさい事だらけでした()例えば、print(2+2*2)のようなものだと計算の順序を合わせないといけなかったり、scratchだと反応させれないキーなどなどでとても苦戦しています()
Pythonでよく使うコード
# vscode の python 設定
* pythonの拡張機能が入っていることが前提です。
“`~/.vscode/settings.json
“python.analysis.extraPaths”: [
//Djangoライブラリの格納ディレクトリ
“/Users/user_name/.pyenv/versions/3.9.0/lib/python3.9/site-packages”,
//プロジェクトのルートディレクトリ
“/Users/user_name/workspace/project_name”,
],
“`# pythonよく使うやつのめも
“`py
# 例外を一旦受け取って再送しているファイルを想定
import systry:
result = 1 / 0 # ZeroDivisionErrorが起きる
except Exception as e:
exception_type, exception_object, excepti
【資格試験】Python 3 エンジニア認定基礎試験に合格した話
## 1. はじめに
こんにちは!
2024年9月にPython 3 エンジニア認定基礎試験を受験し、
一発合格することができました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2956452/32562c35-663a-06b1-a772-2d816a79060e.png)
今回は受験するにあたっての動機、
学習方法等について話していければと思います。## 2. Python 3 エンジニア認定基礎試験とは
**Python 3 エンジニア認定基礎試験**は、Pythonの基礎知識を確認するための試験です。主にプログラミング初心者やPythonの基礎をしっかり学びたい方に向けた試験です。以下は試験の詳細です。– **問題数**:40問
– **出題形式**:選択式
– **試験方式**:CBT方式(コンピューター上で実施)
– **試験時間**:60分
– **合格基準**:7割以上の正解
– **受験料**:
一般価格:11,000円(税込)
学割価
Pythonのzip()関数
# はじめに
Pythonのzip()関数を使うと、複数のイテラブル(リスト、タプル、辞書、集合のように繰り返し可能なオブジェクト)から要素を取り出し、対応する要素をまとめることができます。
# zip()関数の使用例
例えば、キーと値が別々のイテラブルであっても、dict()関数とzip()関数を使うことで簡単に辞書を生成することができます。
~~~Python:zip_dict.py
drink = ‘milk’, ‘tea’, ‘coffee’, ‘juice’ # キーのイテラブル
price = 160, 210, 150, 250 # 値のイテラブル
dict(zip(drink, price))
# {‘coffee’: 150, ‘juice’: 240, ‘tea’: 220}
~~~
# zip()関数を使用する場合の注意点
異なる長さの複数のイテラブルにzip()関数を使用すると、zip()関数は**短いほうのイテラブルに合わせて処理を終了してしまう**ので、長いほうのイテラブルに**処理されなかった要素が存在することを警告してくれません**。
# どうすればいい
Discord BOTでのレジ及び売上管理について(GTA RP/FiveM)
# 導入の背景について
FiveMで猫カフェのアルバイトをやっており、最初はスプレッドシートで管理していたが、猫カフェのオーナーになったことを機にDiscordでのレジを導入しました。目的としては、計算のしやすさ、各人の売上の見える化、お店へのバック分の集計、人気商品の情報取得などを行えるようにしました。
## 実際のDiscord画面
【レジ画面】
![スクリーンショット 2024-09-16 14.39.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3868301/6c1b872e-1fb3-6f33-6205-bc13d67185d6.png)![スクリーンショット 2024-09-16 14.47.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3868301/eb448895-ac12-3aeb-d2b1-7f27cb458b64.png)
【販売報告チャンネル】
![スクリーンショット