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

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

Python Djangoを使ってみる(自分用)

現時点で明確に作りたいwebアプリがあるわけではないが、フレームワークを使い方がわからないと何が作れるかもよくわからない。
とりあえず使い方を理解しながら、概念的なものをインプットし、簡単なアウトプットをしていきたい。

1.フレームワークとは
2.なぜ使うのか
3.よく使われるWebフレームワーク(GPT調べ)
4.Djangoを使ってみる
5.ディレクトリ構造
以降、項目追記予定

1.フレームワークとは

Web開発におけるフレームワークとは、ウェブサイトやウェブアプリケーションを効率的に開発するために、事前に用意されたコードやツール。
とりあえず「設計図」と「部品」が揃った便利なものと理解しておく。

フレームワークの役割
Webサイトやアプリをゼロから作るのはとても大変です。HTML, CSS, JavaScriptの他にも、データベースとの連携やユーザー管理など、必要なことがたくさんあります。これらをすべて一から自分で作るのは、まるで木材を切り出して釘やハンマーも自作して家を建てるようなもの。
フレームワークを使えば、よく使う「部品」(機能やコード)がすで

python 3.13+pywin32でExcelを操作してみる

# 目的
python 3.13,0 がリリースされて動作確認ということで
[pywin32でExcelを操作してみる](https://qiita.com/tabizou/items/8e8b03e9b5415e3319c9)
を実行してみたらサンプルコードの xlc.xlLeft が参照不可をいうエラーメッセージが発生
これを解決するためには、パッケージの追加後の処理の項目にあるように
以下を実行する必要がある

PS C:\> python Python313\Lib\site-packages\win32com\client\makepy.py

既存のメモを修正するか迷ったのだけど、修正版を書くことにする
pywin32+Excelの調べものついでに少しだけ触って気がついたことをメモっておく

## 気が付いたこと
軽く検索したときに
“`python
import win32com.client
xl = win32com.client.Dispatch(“Excel.Application”)
“`
を見て以下を連想したんだけど
“`vb
Di

【Python入門】変数のスコープについて

# Pythonの変数スコープの概念について
Pythonの変数のついてはLEGBルールという概念に基づきます。
LEGBはローカル、エンクロージング、グローバル、組み込み関数をスコープとして、スコープの検索順序を表します。各スコープについて説明します

# LEGBについて
変数を参照するとき、Pythonは以下の順序でスコープを検索します。
1. ローカル
1. エンクロージング
1. グローバル
1. 組み込み関数

各スコープについて解説をしてきたいと思います。

## ローカルスコープについて
関数内部で定義された変数は、ローカルスコープとなります。
関数内のみで有効となるため、関数外からのアクセスはエラーとなります。

“` python
def local_scope_function():
#ローカルスコープ
local_var = “ローカル変数”
print(local_var)

def test_module():
local_scope_function()
# print(x) # NameError: name

python try構文の話(自分用)

エラーハンドリング(例外処理)について記述する。

1.エラーハンドリングとは(例外処理)

pythonには様々なエラーが存在し、適切な処理をしない場合、そこで処理が中断される。
そのため予め発生しそうなエラーを予測し、対処法を定めておくことがエラーハンドリングである。(そもそもエラーが発生しないように作れないか考えることが重要)

“`
SyntaxError: # 原因 ⇒ 文法ミス(コロンやカッコの不足等)
if True print(“Hello”) # コロンが必要

IndentationError: #原因 ⇒ インデントが正しくない場合に発生
def foo():
print(“Hello”) # インデントが必要

NameError: #原因 ⇒ 存在しない変数や関数を参照しようとすると発生
print(undeclared_variable) # 変数が未定義

TypeError: #原因 ⇒ 不正な型を持つオブジェクトに対して操作を行った場合に発生
print(1 + “2”) # 整数と文字列を足すことはできない

ValueError: #原

python classの理解を深めるための記事(自分用)

とにかくclassがいまいち理解できていないので、ここに記述しながら理解を深める

1.classとは

classとはオブジェクト指向における中核的をなす概念・・・いや、わからんわ:angel:
そのため、自分なりに色々と調べて自分なりに理解できるように纏めてみる。
classに関連するものとしてinstanceやinitについても記述する。

2.classの構造

クラスの構造は以下のとおりであり、処理の意味を記述しておく。

クラス = 設計図
インスタンス = 設計図に基づいて作ったもの(オブジェクト)

“`
# Dogクラスという設計図
class Dog:
def __init__(self , name , breed):
self.name = name
self.name = breed

def bark(self):
print(f”{self.name} is barking”)

# my_dogとしてインスタンス化す

Pythonのファイルオープンでの”a+”

# “a+”でファイルの中身を読めなかったけど、やっと使い方を理解したのでメモ
“`python
titles = [ “title1”, “title2”, “title3” ]
with open(“file1.txt”, “a+”) as fd:
fd.seek(0)
lines = fd.read().splitlines()
for title in titles:
if title in lines:
print(f”{title} already exist”)
else:
fd.write(f”{title}\n”)
print(f”{title} added”)
“`

Windows 10 Pro + Python3 + xlrd を使ってみる

# 目的

Python3 + xlrd で ワークシート上のデータを取り込む
このコードをなぜ書いたのか覚えていないのだけど
python 3.13 にアップしたのでついでに試してみた
※パッケージのメンテはされていないようなので
※積極的に使う理由は無い気がする
ここで作成したファイルを取り込んでいる
[Windows 10 Pro + Python3 + OpenPyXL で CSVファイルを書き込んでみる](https://qiita.com/tabizou/items/3bc827eda11f58db42e6)

## パッケージの追加

PS C:\> pip install xlrd==1.2.0

## サンプルコード

“`python

# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8

# pip install xlrd
# xlrd-2.0.1 を install する -> 動作不可
# https://xlrd.readthedo

秘境駅ランキングAPI叩いてみた

## はじめに
こんばんは!今回はほぼ素人の私が、先輩に教わった通りAPIを使えるのか、一人で復習がてら実践記事にしたいと思います!

## 開発環境
OS:Windows11
言語:Python 3.12.4
ライブラリ:python-dotenv 1.0.1, requests 2.32.3
## APIとは?
そもそもAPIがどういうものなのか、あんまりしっくりきていなかったので、改めて調べてみました。

>APIとは「アプリケーション・プログラミング・インターフェース」の略で、簡単に言えば、異なるソフトウェアやサービス同士が会話をするための「共通言語」や「取り決め」のようなものです。

>日常生活の例で説明すると:
レストランのメニュー:
APIはレストランのメニューのようなものです。お客さん(アプリケーション)は、メニュー(API)を見て、どんな料理(機能やデータ)が提供されているかを知り、注文(リクエスト)することができます。
電気のコンセント:
世界中の電化製品は、決められた形状のプラグを使ってコンセントに接続します。APIは、このコンセントのような役割を果たし、異なる

python returnの使い方がわからなかった話(自分用)

pythonの関数内で使われるreturnの意味がよくわからなかったので、自分なりにまとめてみる。

1.returnとは

関数の末尾に記載されている文法である。
returnすることで、関数で処理した結果を関数外へ取り出すことができる
文章では伝わりづらいが、下記のようにコードで出力して比較するとわかりやすい
“`py
# 1~5の数字生成してリストに格納する関数( returnする場合 )

def num_list():
numbers = [i for i in range(1,6)]
return numbers

numbers = num_list()
print(numbers)

# 出力 ⇒ [1,2,3,4,5]

#1~5の数字を生成してリストに格納する関数( returnしない場合 )
def num_list():
numbers = [i for i in range(1,6)]

numbers = num_list()
print(numbers)

# 出力 ⇒ None # 何もデータがないという意味
“`
2

python 関数の基礎(自分用)

pythonを学ぶ上で、避けては通れない関数について学ぶ。

1.基本編(再利用可能な関数)

関数の構造は次のようになっており、def 関数名(引数):と表される。
関数として定義しておくと、後からいつでも再利用が可能となるため、同じような処理が続く場合などは関数にすることを検討すること。
関数内に関数を書くことも可能であり、global変数やlocal変数という概念も出てくるが、それについては後ほどまとめることにする。
“`
# “Hello World”と出力する関数(引数なし)

def hello():
print(“Hello World”)

say_hello = hello()
# 出力 ⇒ Hello World

# 引数の計算結果を出力する関数(引数あり)

def add_calc(a,b):
c = a + b
print(c)
return c

result = add_calc(1,1)

# 出力 ⇒ 2
“`

2.lambda(無名関数)

計算の途中で1回だけ使いたい

PyArmorの有料プランの購入方法と初期設定の流れ

## はじめに

Pythonコードの保護やライセンス管理に最適なツール、**PyArmor**。
今回は、私と一緒にPyArmorの有料プランを購入し、一緒にセットアップまでしていきましょう!

## 目次

1. [購入までの流れ](#購入までの流れ)
2. [購入後のセットアップの流れ](#購入後のセットアップの流れ)
3. [まとめ](#まとめ)

## 購入までの流れ

PyArmorの有名な購入方法は2つありますが、ここではPayPalを利用して購入する方法を紹介します。
この購入方法は、通常より5ドルほど安く購入できます。
早速、購入していきましょう!

### 1. サイトにアクセス

まず、以下のリンクをクリックしてPyArmorの購入ページにアクセスしてください。

[PyArmor購入ページ](https://jondy.github.io/paypal/index.html)

### 2. License To と Shipping Email の入力

購入ページにアクセスしたら、最初に**License To**(ライセンス名)と**Shipping Em

Python3.13正式リリースが出ました!

# Python 3.13 新機能と変更点まとめ

Pythonプログラミング言語の最新安定版であるPython 3.13が正式にリリースされました。

https://www.python.org/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3114394/d2ed519d-76e8-7324-9aa2-56b755a5d4cf.png)

この記事では、[Python 3.13のリリースノート](https://docs.python.org/ja/3/whatsnew/3.13.html)に基づき、前バージョン(Python 3.12)からの主な変更点や新機能を解説します。

## ハイライト

Python 3.13では、言語自体、実装、および標準ライブラリにさまざまな変更が加えられています。主な変更点は以下の通りです:

– **新しい対話型インタプリタの導入**:ユーザーエクスペリエンスを大幅に向上させる新しい対話型シェルがデフォルトとなりました。

[Python]自動で電子書籍をスクショしPDFで保存する

## はじめに
 電子書籍を1ページずつスクショしてPDFにまとめるのがめんどくさかったので自動化させてみました.
 ここでは自動化に用いたモジュールなどを説明したいと思います.実行コードはgithubにありますのでご自由にお使いください.

実行コード:https://github.com/ryosuke-noob/playground/blob/main/kindle/exec_all.py

## 環境
Apple M2
macOS Sonoma 14.6.1
Python 3.9.13

## 事前準備
以下のモジュールをインストールします.

fpdf2 : 画像をpdfに変換する目的で用いる.
(https://pypi.org/project/PyPDF2/)
pyautogui : スクリーンショット,ページ移動をする目的で用いる
(https://pypi.org/project/PyAutoGUI/)

“`
pip install fpdf2 pyautogui
“`

## 電子書籍の各ページをスクショ
スクショの撮影やページの移動にはpyautoguiを

【Python】並列処理モジュールmultiprocessingを使うと、毎回結果が異なるケースがあるのか?競合状態とは

# 概要
Pythonで並列処理を行うことができる`multiprocessing.Pool()`を使ってみました。

並列処理を使うと、場合によっては、

「同じプログラムを走らせても、毎回異なる結果になる」

というケースがあること(=競合状態ともいう)がわかりましたので、そちらをサンプルコード付きで紹介します。

# 検証内容と前提
今回は、

「100レコードを保持するデータベースのテーブルから、100のレコードidを一定の塊(チャンク)に分割して、チャンクごとに並列処理でリストに代入していく」

という並列処理を想定します。

例えば、100件のレコードがある場合で、チャンクは10とします。
すると、`[0 – 9]`, `[10 – 19]`…といった形でまず塊を作成していって、それが4つたまったら、並列処理で一斉にリストの中の要素を別のリストに代入していく、という流れです。

この例で言うと、`[0 – 9]`, `[10 – 19]`、`[20 – 29]`、`[30 – 39]`の4つになったら、それぞれのリストの要素を共有リスト(ここでは`shared_list

if文(if args.hoge:)がゼロ(0)を持つ変数を識別できるように書く必要がある理由

argparseを使って引数で受けた数値ゼロ(`0`)の条件処理でハマった問題。
まず数値を持つか否かで分岐してから数値判定したいとき、最初の分岐で横着して単に`if args.hoge:`と書くときに遭遇した。

まず、問題が起きない非ゼロの例
“`py
num = args.hoge #type=int
# num: int = 1

if num:
if num > 0:
print(“positive”)
else:
print(“zero or less”)
else:
print(“ERROR”)

# positive
“`
上記のように、`if num:`は`num`が正でも負でも動くが、実は`num`がゼロのときだけ期待通りに動いてくれない。
“`py
# num: int = 0

if num:
if num > 0:
print(“positive”)
else:
print(“zero or less”)
else:
print(“ERROR”

python いろんなカッコがわからなかった話(自分用)

こんにちは。
絶賛python学習中に非エンジニアです。
当初、理解するのに苦労した3つのカッコについて記述する。

1. ():タプル
2. []:リスト
3. {}:辞書型(dict)
3. まとめ

1.():タプル

タプルの特徴:
イミュータブル(変更不可):

タプルは作成後にその要素を変更することができません。リストは要素の追加、削除、変更ができますが、タプルはそれができません。
カッコで表現:

タプルは通常、丸括弧 () で定義されますが、カンマがあれば括弧なしでもタプルとして認識されます。
複数の型を保持できる:

タプル内には異なるデータ型を持つ要素を含めることができます。例えば、整数、文字列、浮動小数点数などが混在していても問題ありません。

タプルの特徴的な用途:
イミュータブルであるため、データが変更されることを防ぎたい場合に使います。
関数から複数の値を返すときなどにもよく使われます。
“`
# タプルの例
tuple = (1, 2, 3, “apple”, “banana”)
print(tuple)

# 出力 ⇒ (1, 2, 3, ‘appl

python 反復処理(自分用)

1.基本編(forを活用)

for構文:for 代入先 in 代入先へ入れる要素 というのが基本的な構造である。
“`
# for構文による反復処理
# iという代入先へ5回順番に代入する

for i in range(1,6): # range(1,6) ⇒ 1~5という範囲という意味(1~6ではない)
print(“Hello World”)

# 出力 ⇒ Hello World(5回表示される)
“`
2.基本編(whileを活用)

VBAにもwhileによる反復処理があり、こちらについては理解しやすい。
ちなみに無限ループに陥りやすい
while構文:while 比較する対象 比較演算子 比較対象 という構造である。

“`
# while構文による反復処理
# iが5より小さい間は繰り返すという意味

i=0
while i < 5: print("Hello World") i + = 1 # この記述がない場合、無限ループとなるため要注意!

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 BleakClient

DEVICE_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” # 書き込みを行うキャラクタリスティックの

python if構文(自分用)

1.基本編

if構文はif、elif、elseで構成される。(elif、elseは省略可能)

“`
# 変数aとbを比較し、結果をprint関数で表示する

a = 20
b = 10

if 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同士の演算

### 和集合