- 1. 【Qiita Web API②】Qiita APIを使ったアプリを開発!データ取得から可視化まで
- 2. pythonの日付操作をまとめてみた
- 3. Pythonのファイルオープンでの”a+”
- 4. FREDの経済指標をPythonの標準ライブラリで取得
- 5. 【Python】クイックソート
- 6. pygameでRPGをつくってみる9
- 7. 【統計検定1・準1級】2変量正規分布の条件付き期待値・分散をmatplotlibによる描画で解釈
- 8. pygameでRPGをつくってみる10
- 9. pygameでRPGをつくってみる7
- 10. [Python]雑多な備忘録
- 11. paizaラーニング問題集「【シミュレーション 3】燃費」を解いてみた
- 12. paizaラーニング問題集「【シミュレーション 2】perfect shuffle」を解いてみた
- 13. Layout Parser を Windows で使う方法
- 14. ろうとるがPythonを扱う、、(その27:tkinter+matplotlibでRealtimeグラフ表示(その2))
- 15. 【Django】006. データベース0歩目
- 16. pytestの使い方メモ
- 17. StrategyパターンとFactory Methodパターン:総合的な比較と実践的活用
- 18. Seederを使ったDBマイグレーションとSeeding
- 19. FlaskでREST APIを実装
- 20. flask-mailとGoogleのSMTPサーバーで、新規登録完了メールを自動送信
【Qiita Web API②】Qiita APIを使ったアプリを開発!データ取得から可視化まで
# はじめに
[前回](https://qiita.com/churaumi0097/items/c5182625a42191667938)に引き続き、今回もQiita APIに関する内容です。
Qiita APIを活用して検索機能を使用したデータの収集、グラフによる可視化をできるアプリを開発したので、本記事ではそのアプリを紹介します。# アプリの開発環境
コードエディタ:VSCode
フレームワーク:Streamlit
使用言語:Python# Streamlitとは
Streamlitはデータアプリケーションや機械学習のモデルを簡単に作成し、WebブラウザでデプロイするためのオープンソースのPythonライブラリです。
以下がStreamlitの特徴です。・Pythonコードを書くだけでアプリ開発を作れる
・リアルタイムでの更新が可能
・MatplotlibやSeabornなどによるグラフやチャートの作成
・テキストや数式をマークダウン形式で記述できる
・アプリを簡単にデプロイできる# アプリの概要
今回開発したアプリには、次のような機能があります。・Qiita
pythonの日付操作をまとめてみた
## 問題
プログラミングの勉強を始めて、9ヶ月程度経過した。日付や時間に関する操作が曖昧のままここまできてしまったのでまとめていきたい## 基本
### モジュール
日付や時間を操作する際は、pythonの標準モジュールであるdatetimeモジュールを使用し、コードを書く際は以下を記述する
“`python
from datetime import date
from datetime import datetime
“`### データの型
日付や時刻を取得すると一見、文字列型のように見えるが、datetimeモジュールの中のdate型やtime型、datetime型などのクラスのインスタンスになる。
以下を参照。(※以下は日付のみを取得しているため、datetime.date型となっている)
“`python
from datetime import date
date = date.today()
print(date)
print(type(date))#結果
#2024-10-12
#
“`## 日付
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”)
“`
FREDの経済指標をPythonの標準ライブラリで取得
FREDはセントルイス連邦準備銀行の提供する経済統計データのデータベースである。ここから経済指標(今回は米国の失業率)をPythonで取得することを試みる。「FRED python 取得」などとググってみるとpandas_datareaderやその他のライブラリを使用している例が見受けられたが、FREDのAPIのドキュメントを読んでみるとごく普通のシンプルなAPIだったので、標準ライブラリのurllibを使う無難な手法を採用した。
まずはHPにアクセスしてアカウントを作成し、API Keyを取得する。API Keyのページはアカウント作成後ページ右上の三本線 -> Myaccount -> API Keysで到達する。
https://fred.stlouisfed.org/
API Keyを取得できたら下記のコードの`API_KEY`の部分を書き換えて実行する。失業率ではなく他の指標を取得したい場合はその下の`SERIES_ID`を変える。標準ライブラリしか使わないので事前に`pip install hoge`等は不要。
“`python
import urllib.requ
【Python】クイックソート
## 概要
クイックソートは、高速かつ効率的なソートアルゴリズムの一つで、分割統治法(Divide and Conquer)に基づいています。クイックソートは、リストをピボットを基準に小さな部分に分けていき、それぞれの部分を再帰的にソートすることで、全体のリストを整列させます。
平均計算量は O(n log n)であり、大規模なデータセットにも適しています。最悪の場合は O(n^2) になりますが、通常の使用では非常に高速です。クイックソートは、以下の手順で動作します:
1. 配列の中から基準となるピボットを選びます
2. ピボットより小さい要素と大きい要素に配列を分けます
3. 各部分配列に対して再帰的にクイックソートを適用しますこの記事では、Pythonでのクイックソート実装方法について説明します。
## コード
以下がPythonでのクイックソートの実装例です。“`python
def partition(arr, low, high):
# 小さい要素のインデックスを管理
i = low – 1
# ピボットを最後の要素に設定
p
pygameでRPGをつくってみる9
[記事全体の目次へ移動](https://qiita.com/hijpa/items/31900e327315fa8e4eea)
# ダメージアニメ
ricky-senseiの記事にあったコードを短くしてみました。
Zキーが押されたとき、数字が上昇して消えます。ここをクリックしてください
“`python:
import pygame
from pygame.locals import *
import sys
import timepygame.init()
screen = pygame.display.set_mode((160, 160))
pygame.display.set_caption(“damage_anime”)
font = pygame.font.Font(None, 50)
# 色
white = (255, 255, 255)
damage = 0
# ダメージ量表示のY座標
damageY = 0
while (1):
# 画面を黒色に塗りつぶ
【統計検定1・準1級】2変量正規分布の条件付き期待値・分散をmatplotlibによる描画で解釈
$X \sim N(\mu_x,\sigma_x^2)$,$Y \sim N(\mu_y,\sigma_y^2)$のとき,
$X=x$が与えられたときの$Y$の条件付き分布$Y|(X=x)$は**正規分布**となり,その期待値と分散は
“` math
\text{条件付き期待値:} E[Y|X=x] = \mu_y + \rho \sigma_y \frac{x-\mu_x}{\sigma_x} = \mu_y + \frac{\sigma_{xy}}{\sigma_x^2}(x-\mu_x)
“`
“` math
\text{条件付き分散:} V[Y|X=x] = \sigma_y^2(1-\rho^2)=\sigma_y^2-\frac{\sigma_{xy}}{\sigma_x^2}
“`
となります.## 解釈
条件付き期待値の第2項は,「$X$が$\mu_x$からずれていることが,$Y$にどれだけ影響を与えるか」を表しています.
条件付き分散は,分散共分散行列$\Sigma$
“` math
\Sigma =
\begin{pmatrix}
\sig
pygameでRPGをつくってみる10
[記事全体の目次へ移動](https://qiita.com/hijpa/items/31900e327315fa8e4eea)
# 選んで消す
アイテムを選んで消します。
ダウンキーやアップキーで選んで、Zキーで消します。ここをクリックしてください
コードを動かす前に、まずはフォントファイルの準備が必要です。
pygameでは日本語がサポートされてません。日本語でテキストを表示するには、.ttfファイルが必要です。.pngファイルだと自分でコードを書かないとダメです。
~~[GitHub(ここから、フォントファイルをダウンロード)](https://github.com/coz-m/MPLUS_FONTS/blob/master/fonts/ttf/Mplus1-Regular.ttf)~~
最近、このフォントでは矢印や、~が書けないことが分かりました。矢印はともかくはセリフを書く上で致命的です。[一般社団法人文字情報技術促進協議会(ここから、フォントファイルをダウンロード)](https://moji.or.
pygameでRPGをつくってみる7
[記事全体の目次へ移動](https://qiita.com/hijpa/items/31900e327315fa8e4eea)
# 時間の計測
ここをクリックしてください
時間の計測をするコードです。
プレイ時間を表示するために使います。“`python:
import timetime_start = time.time()
hour = 0
min = 0
seco = 0while True:
time_end = time.time()
elapsed_time = time_end – time_startif elapsed_time >= 1.0:
seco += 1
time_start = time.time()
print(f”{hour}時間 {min}分 {seco}秒”)if seco >= 60:
min += 1
seco = 0if min >
[Python]雑多な備忘録
# numpyを使わずに二重リストの行列を入れ替える
numpyを使えばいいと思われるかもしれませんが、**競技プログラミングなどでは外部ライブラリを使えないことがある**ので、zipを使ってリスト内包表記で解決します。
~~~Python:irekae.py
data = [[1, 5, 3], [2, 4, 6], [8, 1, 9]]
transposed = [ x for x in zip(*data)]
print(transposed)
~~~
実行結果
~~~
[(1, 2, 8), (5, 4, 1), (3, 6, 9)]
~~~
# サイコロの偶奇判定
randint(a, b)は、a以上**b以下**ということで**bも含まれる**ことを時々忘れるので
備忘録として書いてみました。
~~~Python:even_or_odd.py
import randomdice_roll = random.randint(1, 6)
if dice_roll % 2 == 0:
print(dice_roll, “偶数”)
else:
print(di
paizaラーニング問題集「【シミュレーション 3】燃費」を解いてみた
https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__fuel_economy
▼考え方
ポイントになる考え方1.~2.を以下に示します。
1.全長L[m]を以下のように区間に分け、区間ごとに燃費を考えます。
“`
0 — s_1[m] — s_2[m] … — s_N[m] — L[m]
↑区間 ↑区間 ↑複数の区間 ↑区間
“`
以下、N=2の時を例に説明します。s_1が30[m]、s_2が60[m]のとき、リストsをs=[0,30,60,100]と定義します。2.出発地点s[i-1]からX[m]走ったあと、まだ一時停止地点s[i]に到達しないのであれば、燃料がF_1[ml]とF_2[ml]の距離が存在します。到達しているのであれば、F_1[ml]の距離のみ存在します。両者を場合分けして区間ごとの燃費の和を計算します。
▼コード
“`py
########## 処理0(準備) インプット,リスト定義 ###
paizaラーニング問題集「【シミュレーション 2】perfect shuffle」を解いてみた
https://paiza.jp/works/mondai/b_rank_new_level_up_problems/b_rank_new_level_up_problems__perfect_shuffle
▼考え方
ポイントになる考え方1.~4.を以下に示します。
基本的には、問題文に書いてある通りにコードを書きました。1.現在のトランプの山札を辞書T、perfect shuffle後をTSで示します。keyは山札の一番上(0)から何枚目のカードかを数値で示し、valueは絵柄のアルファベットとカードの数字をタプル示します。最終的にTSが答えです。以下に例を示します。
T[0] = (‘S’,1)
T[1] = (‘S’,2)
…
T[51] = (‘C’,13)2.題意より、K=0(perfect shuffleが行われない)があり得るため、TをTSにコピーしておきます。
3.K>=1ならばperfect shuffleが行われます。以下のように、Tの内容をTSにコピーします。
TS[51] ← T[51]
TS[50] ← T[25]
TS[49] ← T
Layout Parser を Windows で使う方法
# Layout Parser とは
ドキュメント画像を分析して、レイアウト(ここはテキスト、ここは画像、のような感じ)を検出してくれるやつです。
https://github.com/Layout-Parser/layout-parser# この記事の位置づけ
Layout Parser をWindowsで使うのに、一筋縄ではいかない状態なのだが、その回避方法が断片的に散らばってたのでまとめてみる。
基本的なインストール方法は本家の[ここ](https://github.com/Layout-Parser/layout-parser/blob/main/installation.md)に書かれている。
Windowsへのインストールに関してはもごもごしている。# Layout Parserのインストール
## LayoutParser ライブラリをインストールする
まずは、本体をインストール“`
pip install layoutparser
“`## Detectron2 レイアウト モデル バックエンドをインストールする
このDetectoron2をwind
ろうとるがPythonを扱う、、(その27:tkinter+matplotlibでRealtimeグラフ表示(その2))
# pingのRealtime表示(今度はOK?)
「[ろうとるがPythonを扱う、、(その26:tkinter+matplotlibでRealtimeグラフ表示(その1))](https://qiita.com/infinite1oop/items/26d38fb9ae517ae3bae4)」の続編。pingの結果表示もグラフ表示も、tkinterの1つのWindowsに収めることとした。## 結果
![ping7_OK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/62bc130a-9fdd-68a8-e120-afb678a9a785.png)
[前回](https://qiita.com/infinite1oop/items/26d38fb9ae517ae3bae4)とは異なり、複数回「Start」を押しても大丈夫であった(グラフは毎回クリアされる)。## ソースコード
### Library import
“`python
## Library
from tkinte
【Django】006. データベース0歩目
前回はDjangoのセッションとミドルウェアについて見ていきました。
[前回記事:【Django】005. セッションとミドルウェア](https://qiita.com/ys_dirard/items/e42f329f00064d2a114c)
今回はDjangoでのデータベース操作について基本的なことを見ていきます。
今回も以下の本を参考にしています。
https://www.shuwasystem.co.jp/book/9784798062419.html
## データベースって?
膨大なデータを大勢で処理/アクセスする際に以下のようなことができて便利:
* 高速なデータアクセス
* 高度な検索
* 膨大なデータを管理
* 同時アクセス可能データベース自体の細かいことは以下の記事等を参照
https://www.oracle.com/jp/database/what-is-database/
### よく使われるもの
|name|detail|
|-|-|
|MySQL|Djangoに限らず最も使われていそうなDB。|
|PostgreSQL|これも良く聞く、
pytestの使い方メモ
## 1. pytestについて
ユニットテストを簡潔に書けるパッケージです
公式ドキュメント
https://docs.pytest.org/en/stable/## 2. インストール
“`terminal
pip install pytest
“`## 3. 使う
### 3-1. 実行
pytestが入った環境でpytestを実行すると「test_*.py」となっているファイルすべてについてpytestを実行してくれます
“`terminal:terminal
pytest
“`ファイルを指定して実行することもできます
“`terminal:terminal
pytest test_1.py
“`### 3-2. テストの書き方
pyファイル内の関数名が「test_*」となっている関数をすべて順番に実行して、どの関数でエラーが発生したかを教えてくれます
“`python:test_1.py
def func(x):
return x + 1def test_answer():
as
StrategyパターンとFactory Methodパターン:総合的な比較と実践的活用
## はじめに
ソフトウェア設計において、StrategyパターンとFactory Methodパターンは頻繁に使用される重要なデザインパターンです。本記事では、これらのパターンの特徴、使用例、比較、そして関連性について総合的に解説します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/d687c374-f871-c44f-7516-6ab4b35db33f.png)
## 目次
1. [なぜStrategyとFactory Methodを比較するのか](#なぜStrategyとFactory-Methodを比較するのか)
2. [Strategyパターン](#Strategyパターン)
3. [Factory Methodパターン](#Factory-Methodパターン)
4. [パターンの比較](#パターンの比較)
5. [パターンの組み合わせ](#パターンの組み合わせ)
6. [他のデザインパターンとの関連](#他のデザインパターンとの関連)
7. [まと
Seederを使ったDBマイグレーションとSeeding
FlaskのライブラリであるSeederで、DBマイグレーションとシーディングを実装したのでそのときのことについてまとめます。
FlaskでREST APIを実装
インターンシップの事前準備として、以下のUdemy講義を参考にしながらFlaskでREST APIを実装したので、そのときのことについてまとめます。
flask-mailとGoogleのSMTPサーバーで、新規登録完了メールを自動送信
flask-mailを使って、新規登録完了時にメール通知が送信される機能を実装しました。