- 1. Python変数と組込型
- 2. Pythonの備忘録 (超初心者)
- 3. Yolo v8の使い方
- 4. rye sync で発生した AttributeError: module ‘hatchling.build’ has no attribute ‘prepare_metadata_for_build_editable’ の解消
- 5. 【Python】エラー「decimal.DivisionUndefined」とは?DivisionByZeroとの違い
- 6. 繰り返し処理と並列処理の簡単な比較
- 7. Flask + Jinja2 で汎用のエラーページをカスタマイズする(モジュールのメンバ関数をオーバーライドする編)
- 8. Flask + Jinja2 で汎用のエラーページをカスタマイズする(自前実装編)
- 9. 【Python 型ヒントTips】for文で型ヒントを使う方法
- 10. python GUI tcl/tk グラフ・画像表示 マウス操作
- 11. 【備忘録】Python×Seleniumで取得したデータをSpreadsheetに書き込むプログラムをCloud Functionsにデプロイ
- 12. ABC351 with Python (A~F)
- 13. command not found: pip / command not found: python を解決する
- 14. Pythonの備忘録 (超初心者)
- 15. 昔模様を作るプログラムを作った話
- 16. はじめてのPython(基礎文法)
- 17. Flaskでjsonデータのやり取りをする方法
- 18. オリジナルの関数を透過画像で保存する
- 19. Pythonのpyttsx3のNameErrorの対処
- 20. [Django]Modelのテストを作成してみる
Python変数と組込型
## 数値を使う
数値は、プログラムのなかで数量を記録するために利用します。
Pythonにかぎらず、プログラムではたくさんの数値を活用し、処理を行います。
Pythonでは、数値を扱うためのデータ型として、**整数型**と**浮動小数点型**が別に用意されています。
– 整数型
小数点以下の値を含まない、「100」のような数値を扱うために利用します。
– 浮動小数点型
小数点以下の値を含む、「3.14」のような数値を扱うために利用します。
Pythonには、実はもう1つ、**複素数型**という数値型がありますが、特に必要なし
### 数値を使った四則演算
「+」「-」「*(×)」「/(÷)」といった**演算子**を使った四則演算が可能です。
三角関数などを使った、より高度な演算も可能です。
“`python
>>> 1867 – 1603
264
“`引き算例
累乗を計算するためには「**」を使います。ここでは、2を20乗してみます
“`python
>>> 2 ** 20
1048576
“`累乗の例
Pyt
Pythonの備忘録 (超初心者) <繰り返し処理>
僕がPythonの使い方をド忘れした時のための備忘録を作成します。
PythonのLoopでは制御構造を使用して、同じコードブロックを繰り返し実行することができる
![スクリーンショット 2024-04-22 12.03.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/e19bf248-960a-7689-0026-132c19021b3a.png):::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::
今回はfor loopの使い方の基本を書き下ろしておきます。for loopを設定
“`python
for i in range (10):
print(i)
“`
:::note info
出力
0
1
2
3
4
5
6
7
8
9
:::
r
Yolo v8の使い方
# はじめに
Yolo v8を用いた物体検出を試してみたのでその手順を紹介させていただきます。今回は手順のみ解説ということなので、Yolo v8の概要について詳しく知りたい方は以下のリンクを参照してください。(https://github.com/ultralytics/ultralytics)
今回はすでに学習済みのモデルを使って歩行者信号の検出をGoogle Colaboratory上で行いました。Google Colaboratoryを使うと自分のパソコンに何もインストールする必要がないため、とても楽です。
では、はじめましょう。
# 実際の手順
1\. 必要なパッケージのインストール
google colabratoryを開き、以下のコードを実行します。
“`
%pip install ultralytics
from ultralytics import YOLO
“`2\. google driveの呼び出し
検出用の画像を使うために以下のコードを実行し、google driveを呼び出します。(何でもいいのであらかじ
rye sync で発生した AttributeError: module ‘hatchling.build’ has no attribute ‘prepare_metadata_for_build_editable’ の解消
Python 3.12.1 を使用して ChromaDB を利用したアプリを作っていて、`rye sync` したらエラーになりました。
手元のMacでは問題なく動いてたのですが、Debianのイメージを使用したDockerコンテナで`rye sync`したらこんなエラーが出ました。“`
#10 [6/6] RUN <
【Python】エラー「decimal.DivisionUndefined」とは?DivisionByZeroとの違い
# 概要
あまり見かけないPythonのエラー`DivisionUndefined`に遭遇したので解説します。# サンプルコード
以下のコードを実行します。
“`py
from decimal import Decimalsample = Decimal(0) / Decimal(0)
print(sample)
“`すると結果は以下の通り。
“`
sample = Decimal(0) / Decimal(0)
decimal.InvalidOperation: []
“`# 解説
`’decimal.DivisionUndefined’`ってなんだ?って思って検索すると、これは除算の際に分子にも分母にも0(ゼロ)を連携した際に発生するエラーとのこと。> This occurs and signals invalid-operation if division by zero was attempted (during a divide-integer, divide, o
繰り返し処理と並列処理の簡単な比較
## はじめに
ある処理について、複数回の実行を要する場面があります。このとき、処理間の前後関係に制約がない場合は、繰り返し処理(for文やwhile文)や並列処理がその実現方法として挙げられます。今回は、繰り返し処理と並列処理の簡単な比較として、コードと実行時間の違いについて紹介します。
:::note info
以降に挙げる例はGoogle Colaboratory[^1]で実行しています。
:::[^1]:https://colab.google/
## 複数回の実行を要する処理の例
“`python:複数回の実行を要する処理の例
import random
import timedef process(num):
“””
本記事におけるある処理。
ある程度の時間がかかる処理と仮定し、1msの一時停止をした後にランダムな数値を出力する。
“””
time.sleep(0.001)
random.seed(num)
return num, random.random()
“`## 繰り返し処理の例
Flask + Jinja2 で汎用のエラーページをカスタマイズする(モジュールのメンバ関数をオーバーライドする編)
Flaskで汎用のエラーページを表示する処理がなかったので、モジュール標準のエラーページ生成処理をベースに実装してみました。
# この記事は
以下記事の別実装編です。
https://qiita.com/h6function/items/77e6fb8fc8961fce1cba
# Flask & Jinja2 には汎用的なエラーページを作成する機能がない
Flaskでエラーページを表示する際には、ステータスコードとエラーページを応答する関数をエラーハンドラーに登録することで実現します。
この方法は下記リファレンスページの Custom Error Pages のセクションで紹介されているのでご存じの方も多いかと思います。
https://flask.palletsprojects.com/en/3.0.x/errorhandling/#custom-error-pages
発生したエラーに応じてユーザに促すアクションを出し分けるという点では至極真っ当な実装と思いますが、意地の悪い言い方をすると [HTTP レスポンスステータスコード](https://develop
Flask + Jinja2 で汎用のエラーページをカスタマイズする(自前実装編)
Flaskで汎用のエラーページを表示する処理がなかったので、モジュール標準のエラーページ生成処理をベースに実装してみました。
# そもそもエラーページを任意のテンプレートで作成すると何が良い?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203013/345c6f72-ccca-7a6b-02d3-3f515f6e1654.png)
上記はFlask作成したWebアプリケーションがデフォルトで返却する 404 Not Found のページです。
非常にシンプルかつ既視感があり、ブラウジングの最中に出てきた場合は恐らくですが「またこいつか」と若干の苛立ちを感じさせてくれることと思います。
試しに他のWebサービスの 404 Not Found ページと見比べてみましょう。
Amazon
【Python 型ヒントTips】for文で型ヒントを使う方法# はじめに
Pythonのfor文で型ヒントを使う方法のメモ。# 動作確認環境
* Python 3.8.10# 方法
ループの前で変数を宣言する。
“`python
i: int
for i in range(5):
pass
“`# 参考
https://stackoverflow.com/questions/41641449/how-do-i-annotate-types-in-a-for-loop
python GUI tcl/tk グラフ・画像表示 マウス操作
# 実行サンプル
tcl/tkのCanvasで グラフ・画像表示する
また、マウスドラッグで画像から範囲指定する(四角形を表示)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/4c8787d1-5a0d-2b54-f31b-606c7fabfdf1.png)
# 実行環境
windows10
python3.9.5pythonモジュール tcl/tk
# 実行手順
ソースコードを作成する
windowsコマンドプロンプトでプログラム作成したフォルダに移動し、下記実行する
“`
python プログラム名.py
“`# 参考 URL
なし# ソースコード
このページの例でのソースコードは以下
https://github.com/sakurataiko1/python_sample/tree/main/sample_tcltk/sample_canvas_matplotlib_mouseDrag参考まで canvasを2つにした例
https
【備忘録】Python×Seleniumで取得したデータをSpreadsheetに書き込むプログラムをCloud Functionsにデプロイ
## 背景
とあるサイトをSeleniumでスクレイピングし、そのデータをスプレッドシートに蓄積するフローを定期実行したい時に、自分でサーバーを用意するのは面倒なので、Google Cloud Functionsを使いました。Qiitaを探しても途中で詰まってしまうことが多かったため、Cloud Funtionsの使い方含め、デプロイする流れや注意点をここに詳細に備忘録としてまとめようと思います。
自分がまだまだインフラ周りに弱いので、もしアドバイスなどありましたらご教示いただけると嬉しいです😊## この記事が想定しているシステム
定期的にhttps://www.google.com にseleniumでアクセスし、そのページ全体のHTMLをスプレッドシートに毎回記録する## 実現方法
1. Google Cloud周りの準備
1-1. 新規プロジェクトの作成
1-2. サービスアカウントの作成およびキーの入手
1-3. Cloud Pub/Subの準備
2. スプレッドシート周りの準備
2-1. Google Sheet APIとGoogle
ABC351 with Python (A~F)
ABC351のA~F問題をpythonで解説していきます。
# A – The bottom of the ninth
## 問題チーム高橋とチーム青木が、チーム高橋を先攻として野球を行なっています。
現在、$9$ 回表までが終了し、$9$ 回裏が始まろうとしています。試合において、チーム高橋は $i$ 回表 $(1\leq i\leq 9)$ に $A_i$ 点を取り、チーム青木は $j$ 回裏 $(1\leq j\leq 8)$ に $B_j$ 点を取りました。
ここで、$9$ 回表の終了時点でチーム高橋の得点はチーム青木の得点以上です。
チーム青木は $9$ 回裏に最低何点取れば勝利することができるか求めてください。ただし、$9$ 回裏の終了時点で同点であった場合は引き分けとなり、すなわちチーム青木が勝利するためには $9$ 回裏の終了時点でチーム高橋より真に多くの点をとっている必要があるものとします。
なお、(ある時点における)チーム高橋の得点はそれまでの回の表に取った点数の合計であり、チ
command not found: pip / command not found: python を解決する
## 問題
以下の環境。
– 2024年4月28日時点
– python latest stable 3.12
– MacBook M2 ProPython でpip installができない。
“`
$ pip install openai
zsh: command not found: pip
“`Pythonがインストールされていないか、Pythonのパスが正しく設定されていない。
“`
$ python –version
zsh: command not found: python
“`## 解決策
自分の場合、以下の1と2の両方の手順を踏む必要があった。
### 1. python と pip を入れる
Python がインストールされていないので、Homebrewを使用してインストールする。
“`
$ brew install python
…
==> Installing python@3.12
==> Pouring python@3.12–3.12.3.arm64_ventura.bottle.tar.gz
Warning
Pythonの備忘録 (超初心者) <入出力>
僕がPythonの使い方をド忘れした時のための備忘録を作成します。
ざっくりPythonの使い方は下の図で表したような感じになっています。
![スクリーンショット 2024-04-22 9.56.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/20647be7-dfde-97ee-3afd-5fe0101e5bfe.png):::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::数字を出力
“`python
print(1)
“`
:::note info
出力
1
:::文字を出力
“`python
print(Hello world!)
“`
昔模様を作るプログラムを作った話
※結構昔に作ったプログラムで下手なのでご容赦ください。
# フラワーオブライフ
ある日(3年以上前)にYouTubeで面白い模様を見たのです。
紹介として「黄金比と円周率を掛け合わせた幾何学模様、それがフラワーオブライフ」と都市伝説系YouTubeで見て、その図形は神社の狛犬とか他世界中に使われているらしく、最近だと日〇レの夜11時のニュースのOPで見れます。
## プログラム
円が見た感じ円の中心から正六角形の頂点に新しく中心を作り円を作るという感じの図形になっています。
“`Python3
import numpy as np
import matplotlib.pyplot as pltdef en(theta, cx, cy):
x = np.array([])
y = np.array([])
for i in range(len(cx)):
x = np.append(x, np.cos(theta)+cx[i])
y = np.append(y, np.sin(theta)+cy[i])
lin
はじめてのPython(基礎文法)
# はじめに
本記事では、プログラミング言語「Python」の基本的な書き方を紹介します。
Python初学者の方、基礎文法をど忘れしちゃった方等に読んでもらえたらなと思います。
# 環境
– プログラミング言語
– Python 3.12.3
:::note info
コマンドプロンプトにて以下コマンドを打つとバージョンを確認できる
:::
“`
python -V
“`
– 統合開発環境
– Jupyter lab(使用ブラウザはCrome)
# 基礎文法
## 四則演算
“`
#足し算
1+2#出力結果:3
#引き算
3-1#出力結果:2
#掛け算
2*3#出力結果:6
#割り算
8/3#出力結果:2.6666666666666665
#割り算(整数)
8//3#出力結果:2
#割り算(整数で割った余り)
8%3#出力結果:2
“`
:::note info
「#」 につづいて入力することでコメント(実行結果に影響を与えない文字)を書ける
:::
## 文字列
“`
#ダブルクォーテーション(もしくはシングルクォーテーシ
Flaskでjsonデータのやり取りをする方法
## 初めに
私は今までの開発ではフロントエンドからバックエンドで送られてくる値は
string型やint型で送るものが多く、json形式でデータが送られることはあまりありませんでした。
今回は備忘録としての目的も兼ねて記事に残そうと思います。## 情報の取得とレスポンス
今回はデータベースから情報が送られてきた際にその値とステータスを返すという形で実装していきます。“`example.py
#フロントエンドから取得した値をjson型で取得する
body = request.data.decode(“utf-8”)
body = json.loads(body)“`
ここでそのままjson型のまま取り出すと文字化けするかもしれないのでutf-8を指定します。
“`example.py
response = {
“status”:”OK”,
“return”:”body[“return”]”
オリジナルの関数を透過画像で保存する
スライドを作っているときに関数形の模式図が欲しい…けどパワポの図形でなかなか作れない…といった時にpythonで図形を描画し、線だけを背景透過で保存する方法です。
関数形の部分に好きな関数を書けば動くようになっているはず。
## コード
“`python
import matplotlib.pyplot as plt
import numpy as npdef function(x):
### 関数を記述
gaus = np.exp(-x**2)
periodic = np.cos(x/0.15)**2return gaus*periodic
# 必要に応じて軸を定義
x = np.linspace(-2,2,500)plt,ax = plt.subplots()
ax.plot(x,function(x))ax.axis(“off”)
fig.savefig(“image.svg”,transparent=True)
“`
### 解説
#### 関数の定義
f(x)の形でもいいですし、f()で引数を取らずに目的の関数
Pythonのpyttsx3のNameErrorの対処
音声読み上げてくれるアプリを作りたかったので調べる。
https://nekonogorogoro.com/pyttsx3_speak_jugemu/
↑これを参考にしてpyttsx3モジュールを使い音声を読み上げさせる。
“`py
import pyttsx3
engine = pyttsx3.init()
engine.say(“I will speak this text”)
engine.runAndWait()
“`
“`
NameError: name ‘objc’ is not defined
“`
オブジェクトが見つからないので調べる。
# 解決
参考https://stackoverflow.com/questions/77197398/error-running-pyttsx3-code-on-os-x-nameerror-name-objc-is-not-defined
「py3-tts のインストールに従ったところ、ダミーパラメータなしで動作するようになりました。」
と記載してあったのでpy3-ttsをダウンロード。
“`
$ pip ins
[Django]Modelのテストを作成してみる
## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。## 環境
django5.0
↓ dockerでの開発環境作成はこちらhttps://qiita.com/mkthrkw/private/588226d30690c707d2b8
↓ 認証ユーザーモデルはこちらをそのまま利用
https://qiita.com/mkthrkw/private/b2ea8fb8f33a68faab87
## やりたいこと
Modelのテストを一通り書いてみる## テストについて下調べ
### Modelテストの種類
下記のようなテストが一般的な模様。| No | カテゴリ | 内容 |
|:—:|:—:|:—|
| 1 | フィールド検証テスト| 各フィールドが正しい属性(型、デフォルト値、バリデーションルールなど)を持っているかを検証 |
| 2 | モデルメソッドのテスト | モデルにカスタムメソッドが含まれる場合、期待通りに動作することを確認 |
| 3 | モデルの保存と取得のテスト | モデルインスタンスがデータベースに正しく保存され