- 1. 116 Grand Garden
- 1.0.1. 【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
- 1.0.2. 【AtCoder解説】PythonでABC249のA,B,C,D,E,F問題を制する!
- 1.0.3. Pillowで図形を描く
- 1.0.4. FastAPI: SQLAlchemy で MariaDB を使う
- 1.0.5. 【Python + OpenCV】簡易寸法測定(画像に寸法描写)
- 1.0.6. 【Python OpenCV】画像 から 横線 のみ検出する(おまけで縦線も)
- 1.0.7. にゃんこスイーパー
- 1.0.8. 『Python1年生』で勉強中(その3)
- 1.0.9. Loguruでライブラリのログを出力する
- 1.0.10. MacのPython環境構築で3系にならないときの解決方法
- 1.0.11. 【Python】csv.DictReaderで数値(int型のデータ)を読み込む
- 1.0.12. 【Python】クラスオブジェクトの中身を確認する2つの方法
- 1.0.13. 【mypy】リストに複数の型のデータを入れてはいけない【Python】
- 1.0.14. 1年前の日付を求める
- 1.0.15. Anacondaセットアップ備忘録
- 1.0.16. PythonのTypedDictのキーの有無・値の型をチェックするツールtypeddict-validatorを作った
- 1.0.17. pythonとc言語間での定数の同期方法の提案
FastAPI: SQLAlchemy で MariaDB を使う (その 3)
こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う (その 2)](https://qiita.com/ekzemplaro/items/e4a89757858c4c85e271)## プログラム ##
フォルダー構造は同じです。“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
#
def get_city(db: Session, city_id: str):
return db.query(models.City).filter(models.City.id == city_id).first()
#
def get_cities(db: Session, skip: int = 0, limit:
FastAPI: SQLAlchemy で MariaDB を使う (その 2)
こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う](https://qiita.com/ekzemplaro/items/9f84596fba2c532d45a9)
変更点
id を string に
age を追加## プログラム ##
フォルダー構造は同じです。
“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
def get_user(db: Session, user_id: str):
return db.query(models.User).filter(models.User.id == user_id).first()def get_user_by_email(db: S
超初心者が適当に選んだC問題を解きまくってみた【Python】
解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!
116 Grand Garden
https://atcoder.jp/contests/abc116/tasks/abc116_c
“`python:practice.py
def judge(hlist):
if len(hlist)==0:
return 0
mini = min(hlist)
idx = hlist.index(mini)
hlist = [h-mini for h in hlist]
return mini + judge(hlist[:idx]) + judge(hlist[idx+1:])n = int(input())
hlist = list(map(int, input().split()))
print(judge(hlist))
“`この問題で必要な考え方は、最初に一番背の低い花の必要な数だけ全体に水を与えて
【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
自分がコンテストでやった考察と実装を書いてみます.
* [A問題 『Jogging』](https://qiita.com/yassu/items/95f53238774e0d34489b#a%E5%95%8F%E9%A1%8C-jogging)
* [B問題 『Perfect String』](https://qiita.com/yassu/items/95f53238774e0d34489b#b%E5%95%8F%E9%A1%8C-perfect-string)
* [C問題 『Just K』](https://qiita.com/yassu/items/95f53238774e0d34489b#c%E5%95%8F%E9%A1%8C-just-k)
* [D問題 『Index Trio』](https://qiita.com/yassu/items/95f53238774e0d34489b#d%E5%95%8F%E9%A1%8C-index-trio)## A問題 『Jogging』
問題ページ: [A – Jogging](https://atcoder.jp/cont
【AtCoder解説】PythonでABC249のA,B,C,D,E,F問題を制する!
**ABC249**の**A,B,C,D,E,F問題**を、**Python3**でなるべく丁寧に解説していきます。
ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。
– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増えるご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!
**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM
Pillowで図形を描く
# インストール
“`
$ pip install Pillow
“`# 使い方
## 1. インポート
“`python
from PIL import Image
“`## 2. 画像ファイルを開く
### 画像ファイルを読み込み
“`python
im = Image.open(fp, mode=’r’, formats=None)
“`
* __fp__ – ファイルのパス### 新しく生成
“`python
im = Image.new(mode, size, color=0)
“`
* __mode__ – モードを選択
* __size__ – タプル`(width, height)`をピクセルで指定
* __color__ – 画像の色 デフォルトでは`’black’`## 3. 図形を描く
### インポートとdrawオブジェクトの生成
“`python
import ImageDraw
draw = ImageDraw.Draw(im, mode=None)
“`### 直線,折れ線
“`python
draw.l
FastAPI: SQLAlchemy で MariaDB を使う
次のページを参考にしました。
[SQL (Relational) Databases](https://fastapi.tiangolo.com/ja/tutorial/sql-databases/)Ubuntu でのライブラリーのインストール
“`bash
sudo pip3 instal mysqlclient
“`MariaDB に次のデータベースを作成します。
“`text
host =’localhost’
data_base = ‘db_test’
user =’scott’
password = ‘tiger123’
“`## プログラム ##
“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
def get_user(db
【Python + OpenCV】簡易寸法測定(画像に寸法描写)
## はじめに
画像を用いた寸法測定ツール作成は、カメラからの遠近によるサイズミスマッチや精度の問題があって敬遠しておりました。https://qiita.com/okm_6880/items/0f964484d570208d715d
しかし先日、面白そうな記事を見つけました。
https://protopedia.net/prototype/2928
https://github.com/esc122/opencv_draw_binarize
## ちょっとした改良
2か月前に 1 commitされているのみで、開発が進んでいるのか止まっているのかわかりません。ひとまずfork / git clone し自分でも使ってみて、必要に思った機能を追加しました。詳しい操作方法などはREADME.mdをご覧ください。二値化して面積求めたりする機能もあるようですが、私には必要なさそうなので説明を省略しています(元リポジトリには一切の説明がありません)。https://github.com/youichi-io/opencv_draw_binarize
#### メイン画面
w
【Python OpenCV】画像 から 横線 のみ検出する(おまけで縦線も)
## はじめに
OCRするうえで「枠線」は避けて通れません。文書のOCRを進めていると、表の枠線が検出の邪魔をすることがあります。一方で、OCRをする領域を絞り込むために枠線の位置情報を必要とすることもあります。今回は、そんな枠線の情報を取得することを目指します。
## 対象者
この記事は下記のような人を対象にしています。
– OCRのために枠線の情報を取得したい人## 参考元
参考にしたサイト様を以下に示します。書かれている通り、微調整が重要でした。この記事ではその微調整した部分をまとめ
にゃんこスイーパー
Python+Cursesで、にゃんこスイーパーを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、chmod +x nyankosweeper.pyとして、実行権を付けて動かして下さい。$./nyankosweeper.py [number of cats]として、動かします。
[number of cats]は、省略できます。省略すると、猫の数は58個となります。スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題ないですが。
“`nyankosweeper.py
#!/usr/bin/python3import curses
import random
import locale
import select
import sysxsize = 40
ysize = 23
vvram = [[0 for i in range(ysize)] for j in range(xsize
『Python1年生』で勉強中(その3)
## この記事について
『Python1年生』(以下、書籍)でPythonを学習する超初心者の記録です。
後述の「やったこと」にも書いていますが、ようやく書籍を最後まで進めました。
その1, その2に引き続き、超初心者の学習記録ですので、今回も大したことは書いていないと思います。■ バックナンバー
・[『Python1年生』で勉強中(その1)](https://qiita.com/megrim_q/items/c1417f507e96c1fb7015)
・[『Python1年生』で勉強中(その2)](https://qiita.com/megrim_q/items/333be033e5b4637d0eed)## 実行環境
| OS・MW | バージョンなど |
|:-:|:-:|
| OS | Windows 10 Pro 21H2 19044.1645 |
| Python | 3.10.4 |
|IDLE |3.10.4|## やったこと
前回(「その2」)の続きから書籍の最後まで、サンプルプログラムを試しながら読み進めました。
具体的には「第4章 アプリを
Loguruでライブラリのログを出力する
[Pythonのライブラリが出力するログを活用しよう](https://www.rhoboro.com/2020/12/29/logging-and-debug.html)
をloguruでやる方法# logging版
“`py:a.py
import requests
import logginglogger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())try:
requests.get(“https://expired-rsa-dv.ssl.com/”)
except requests.exceptions.SSLError:
logger.info(“SSLError”)
“`“`
$ python3 a.py
Starting new HTTPS connection (1): expired-rsa-dv.ssl.com:443
SSLError
“`# loguru版
[Wan
MacのPython環境構築で3系にならないときの解決方法
先日、ふとAIをやってみたいと思い立ち、Pythonの環境構築を行ったのだが、手順通りにやったはずなのに、Pythonのバージョンが変わらない。
__Python2.7.16__ から __Python3.10.2__ にしたいのに、なんでか変更されない。。。。。。## 環境
PC:Mac
Version:BigSur
shell:bash
→bashかzshでインストール方法が若干変わるみたい。私はbashだったので、ここではbashの場合の解決方法## やりたいこと
Macには初期でPythonがインストールされているが、
__Python2.7.16__ であるため、最新の __Python3.10.2__ をインストール、メインバージョンとしたい## インストール手順
インストールは以下サイトを参考に実施した
参照:[Pythonの開発環境を用意しよう!(Mac)](https://prog-8.com/docs/python-env)## 現状
インストールを手順通りに実施した後に、適用バージョンを確認したところ、
期待値としては“`
$ pytho
【Python】csv.DictReaderで数値(int型のデータ)を読み込む
# はじめに
プログラミング初学者です.CSVファイルをPythonのcsv.DictReaderで読み込む際に起きたエラーとその解決法を共有します.
# 環境
– Python 3.9.4
“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`# エラー発生時のコード
– 読み込み対象のファイル
“`csv:food_calories.csv
food,calorie
ramen,443
coffee,7
cheesecake,281
hamburger,300
chickencurry,690
“`– 先のCSVファイルを読み込むコード
“`python:add_calories.py
import csvsum_of_calories = 0
with open(“food_calories.csv”) as file:
data = csv.DictReader(file)
for row in data:
name = row[“food”]
【Python】クラスオブジェクトの中身を確認する2つの方法
# はじめに
プログラミング初学者です.Pythonでクラスオブジェクトをそのまま出力しても中身が確認できないことを知りこの記事を執筆するに至りました.
# 環境
– Python 3.9.4
“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`# クラスオブジェクトをそのまま出力するとどうなるか
こちらのプログラムを動かしてみます.
“`python:weather.py
class Weather:
def __init__(self, name, weather, temperature):
self._name = name
self._weather = weather
self._temperature = temperaturetokyo = Weather(‘東京’, ‘晴れ’, 25)
print(tokyo)
“`するとこのようになります.
“`sh:ターミナル
$ python3 weather.py
<__main_
【mypy】リストに複数の型のデータを入れてはいけない【Python】
# はじめに
プログラミング初学者です.Pythonで書いたコードをmypyでチェックした際に起きたエラーとその解決方法を共有します.
# 環境
– Python 3.9.4
– mypy 0.940“`sh:ターミナル
$ python3 –version
Python 3.9.4$ mypy –version
mypy 0.940
“`# mypyエラー発生時のコード
キャラクターの名前と身長を格納したリストを身長順に並び替えるというプログラムです.
“`python:sort.py
kimetsu_height: list[list[str, float]] = [
[‘tanjiro’, 165],
[‘nezuko’, 153],
[‘zenitsu’, 164.5],
[‘rengoku’, 177],
[‘inosuke’, 164]
]sorted_kimetsu_height = sorted(kimetsu_height, key=lambda x: x[1])
print(sor
1年前の日付を求める
1年前の日付とググるとdateutilの`relativedelta()`を使う旨がよく出てくる。
一目datetimeでマイナス365日で良さそうだが`うるう年`を考慮すると`relativedelta()`が良いようだ。| 日付 | timedelta(days=365) | relativedelta(years=1) | 備考 |
| ——— | ——————– | ———————- | – |
| 2020/2/28 | 2019/02/28 | 2019-02-28 | 期待通り|
| 2020/2/29 | 2019/03/01 | 2019-02-28 | うるう年はずれる|
| 2020/3/01 | 2019/03/02 | 2019-03-01 | 同上|“`
// 2020/2/28 の365日前
$ python3 -c “import d
Anacondaセットアップ備忘録
# 旧環境がある場合
事前にインストール済のパッケージをtxtファイルにエクスポート
“`export.cmd
conda list –export > package-list.txt
“`# Anacondaのインストール
[anaconda公式のWEBサイト](https://www.anaconda.com/)のDownloadよりインストール
* just meを選択
→user profile下層にAnacondaがインストールされる
* 基本的にすべての項目をrecommendでOK
anaconda.exeチェックもつけたまま# Anaconda起動後
まず初期設定
“`init.cmd
conda init
“`事前にリストアップしていたパッケージのインポート
“`inport.cmd
conda create -n [env-name] –file package-list.txt
“`# 他コマンド
### 使用環境の情報を確認
“`check_info.cmd
conda info -e
“`
### 自分の環境[env-n
PythonのTypedDictのキーの有無・値の型をチェックするツールtypeddict-validatorを作った
JSON を受け取る API などでは、多くの場合で何らかのバリデーションをしていると思うが、そのバリデーションに Python の TypedDict を使えるようにしてみました。
## 概要
https://github.com/SogoKato/typeddict-validator
TypedDict を使って辞書型のデータをバリデーションするユーティリティ。辞書が必要なキーを持っているかや、値が適切な型を持っているかを再帰的にチェックします。 API リクエストや何らかのファイルのような、 JSON や YAML をデシリアライズするシーンで便利です。
現在のところ、一般的な型および Optional を含む Union 型をサポートしています。
## 要件
* Python 3.10 以降
## インストール
PyPI からインストールできます。
https://pypi.org/project/typeddict-validator/“`
pip install typeddict-validator
“`## つかいかた
`validate
pythonとc言語間での定数の同期方法の提案
# はじめに
c言語で作成したシェアードライブラリ(*.so)をpythonから呼び出す場合、
C言語の関数の呼び出し方さえ変わらなければ、処理の中身が変わっても、
pythonの処理(ソース)の変更を行うことなく、最新の状態で動作します。残念なのは、#defineで定義している内容が変わった場合、
最悪、python側のソースを変更しないと期待しているように動かない
可能性がある事です。いくつかオープンソースの実装例を見ていくと、C言語側で定義している#define xxx を、
pythonでは、同じ名称のインスタンスへの代入文で実装しています。実際、同じ内容を2箇所(c,python)に持っている状況が気持ちが悪いですし、
値が変わったか気にするのも大変だし、値を転記するのも面倒なので、
何か仕組みができないかと考えた案を投稿します。pythonは、1ヶ月位しか勉強していないので、このコーディング
がリーズナブルなのかわからないのですが、もっと良いやり方が
あれば、ぜひ教えてください。# 使い方
C言語側条件
* 記号定数マクロのみ指定可能
* マクロ展開後