Python関連のことを調べてみた2022年03月13日

Python関連のことを調べてみた2022年03月13日

ABC243 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC243(AtCoder Beginner Contest 243) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

# A – Shampoo

https://atcoder.jp/contests/abc243/tasks/abc243_a

実際にシャンプーがなくなるまで使ってみましょう。
シャンプーのもとの量がVで
父が使うとA
母が使うとB
高橋君が使うとC
減っていきます。

Vからそれぞれ引き算し、Vがマイナスになった時点で誰が使っていたのか確認します。

for i in range(最後の数):
と書くことでi=0~(最後の数-1)まで代入しながら処理が行なえます。
本問ではiの値はどうでもいいのですが、このように書くことで(最後の数)回の処理=「シャンプーを使う」ができるということです。
(最後の数)はとりあえず馬鹿みたいに大きい数を入れておきましょう。どうせシャンプーの残量がマイナ

元記事を表示

[mpeg4 @ 000001eb3d342700] timebase 1000/66667 not supported by MPEG 4 standard, the maximum admitted value for the timebase denominator is 65535 というエラーの対処法

# はじめに

普段、PythonのOpenCVの`cv2.VideoWriter`使用して画像からmp4動画を作成しています。
しかしタイトルにあるようなエラーが発生しました。

“`
[mpeg4 @ 000001eb3d342700] timebase 1000/66667 not supported by MPEG 4 standard, the maximum admitted value for the timebase denominator is 65535
[ERROR:0@0.001] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2822) open Could not open codec mpeg4, error: Unspecified error
[ERROR:0@0.001] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2839) open VIDEOIO/FFMPEG: Failed to i

元記事を表示

pytestで曖昧だったこと(Mock,spec,wrap)

# はじめに

自作のclassをモックする際に、調べたことをメモる。

# クラス自体をモックする

– `mocker.patch(’モジュール名.Class名’, autospec=True)` でモックする
– 返り値にmockオブジェクトが取得できる
– return_value, side_effect, assert_called系メソッドが利用できる
– autospecを利用することで、モック対象のClassの属性・操作を模倣できる。定義なしにアクセスすると例外発生させることができる。
– `mock = mocker.Mock(spec=モジュール名.Class名)` で一回、mockを定義する
– そして、`mocker.patch(’モジュール名.Class名’, mock)` でモックする
– このときpatchからの返り値もモックオブジェクトが取得でき、第2引数で指定したmockと同一変数
– mocker.patch.object()ではできないのか、ちょっと気になる。本来は、オブジェクトのメソッドもモックする用途だ

元記事を表示

相関係数は意外と難しい

二つの確率変数$X, Y$の相関を調べたい場合,相関係数$\rho$を推定するのが一般的です.$n$個のサンプル$(X_1, Y_1), \cdots, (X_n, Y_n)$による相関係数の推定値の一つとして,

$$
\hat{\rho} = \dfrac{\sum_i (X_i – \bar{X}) (Y_i – \bar{Y}) }{\sqrt{\sum_i (X_i – \bar{X})^2 \sum_i (Y_i – \bar{Y})^2 }}
$$

があります(Pearsonの積率相関係数).ただし,算術平均

“`math
\bar{X} = \dfrac{1}{n} \sum_i X_i, \quad \bar{Y} = \dfrac{1}{n} \sum_i Y_i
“`
を定義しています.

相関係数の推定値$\hat{\rho}$について調べていると,意外と難しい(そして興味深い)ことに気づいたので,共有します。また説明もなく使われることが多い以下の$t$検定についても,前提条件や導出を示します.

>帰無仮説$H_0$:相関係数$\rho = 0$,対立

元記事を表示

Problem 97: 非メルセンヌ素数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 97. 非メルセンヌ素数

原文 [Problem 97: Large non-Mersenne prime](https://projecteuler.net/problem=97)

**問題の要約:2004年に見つかった非メルセンヌ素数は2,357,207桁の$28433 \times 2^{7830457}+1$であるがこの数の下10桁を求めよ**

Pythonの整数はメモリのある限り桁数が無制限なので普通に計算しても答えが出てしまうのがすごいですが、ここは**pow**関数を使ってmoduloを指定すれば効率的に解くことが出きます。

“`python
m = 10**10
print(f”Answer: {(28433*pow(2,7830457,m)+1)%m}”)
“`

(開発環境:Googl

元記事を表示

Problem 96: 数独

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 96. 数独

原文 [Problem 96: Su Doku](https://projecteuler.net/problem=96)

**問題の要約:ファイルから数独の問題50問を読み込んで、その答えの左上の3桁の数字の合計を求めよ**

### PuLPを用いた数理モデルの解法

数独と解くプログラムは世の中にたくさんあると思われますが、その中でも印象的だった「PuLPを用いた数理モデルの解法」を紹介します。詳細は「[パズルでみる組合せ最適化のテクニック](https://qiita.com/SaitoTsutomu/items/f05f4ff05d4ce6099ff3)」等、[Tsutomu Saito](https://qiita.com/SaitoTsutomu)氏の投稿に詳しい説明がありますので参考に

元記事を表示

Python 書式指定一覧

いい感じのPython文字列フォーマット一覧がどれだけ探しても見つからないので自分でまとめました。
サンプルは原則としてf-stringを利用しますので、主にPython3.6以降を使用している方が対象です。
もし「こんなのもあるよ!」というのがあればコメントに書いていただければ助かります。

もっと詳しく知りたい方は [こちら](https://docs.python.org/ja/3/library/string.html#formatspec, “書式指定ミニ言語仕様 – PythonDocs(JP)”) のドキュメントをご覧ください。

# 書式指定のキホン

書式指定を利用するには `f-string` か `format()` のいずれかを使います。
`format()` は次のように第1引数に **値** 、第2引数に **書式を指定する特別な文字列**(後述) を設定します。

“`py
format(値, 書式指定)
“`

f-string(フォーマット済み文字列リテラル)はPython3.6で実装された機能です。

“`py
f”{値:書式指定}”
“`

元記事を表示

webdriver-managerで更新失敗

webdriver-managerで躓いたのでメモ。

## 問題
“`
====== WebDriver manager ======
Could not get version for google-chrome with the command: powershell “$ErrorActionPreference=’silentlycontinue’ ; (Get-Item -Path “$env:PROGRAMFILES\Google\Chrome\Application\chrome.exe”).VersionInfo.FileVersion ; if (-not $? -or $? -match $error) { (Get-Item -Path “$env:PROGRAMFILES(x86)\Google\Chrome\Application\chrome.exe”).VersionInfo.FileVersion } if (-not $? -or $? -match $error) { (Get-Item -Path “$env:LOCALAPPDATA\G

元記事を表示

Ruby と Python で解く AtCoder ABC243 D

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
https://atcoder.jp/contests/abc243/tasks/abc243_d

今回のテーマ、ビット演算

この問題は、扱う数値が大きいので計算が大変そうに見えます。
しかし、数値(10進数)を2進数で表しよく見ると...
![20220312.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/cc255973-9d05-bade-892f-c4f7a7e6b780.png)
+ S の i 番目の文字が `U` のとき、今いる頂点の親に移動する
-> 2進数の右側の文字を除去
+ S の i 番目の文字が `L` のとき、今いる頂点の左の子に移動する
-> 2進数の右側に`0`

元記事を表示

wslでchromeを使う

https://sunababox.com/ubuntu/chrome-install/
この記事を参考にwslにChromeをインストール。
https://rooter.jp/web-crawling/wsl-selenium/
これを参考にpathの通しまで行い、chromedriverが使えることを確認した。

Failed to read descriptor from node connection: システムに接続されたデバイスが機能していません。[解決方法]


この記事でエラーの対処をしました。

元記事を表示

Blenderで自動ベイク

## Blenderで自動ベイク

Blender3.1で、マテリアルをベイクするPythonコードの紹介です。
アドオンとしてインストールもできます。

Blenderではいろいろベイクできますが、ディヒューズとラフネスとノーマルだけ対象にしています。

「おのぼCG_OnoboCG」チャンネルの「[Blender内蔵テクスチャを “画像ファイル”化する方法 – YouTube](https://youtu.be/pvecLjdhy58)」を参考にしました。

## 前提条件

– `Principled BSDF`という名前のノードが必要です。
– UV展開が必要です。また、UVがはみ出ている部分は黒くなります。

## やり方

下記を実行します。

“`py
“””
Bake image from material
– Set parameter for bake.
– Make image.
– Bake.
– Replace to baked image.

Prerequisite
– Named “Principled BSDF” node must exist.

元記事を表示

N進数の開平法を使った多倍長整数の平方根(拡張モジュール)

# Python/C API の PyLongObject 型用平方根(拡張モジュール)

Python での多倍長整数 int 型(C では PyLongObject 型) の平方根を整数の範囲で求めます。

64ビット版 Python では 230 進数(PyLongObject での単位)の開平法で計算しています。32ビット版 Python では 215 進数となるハズですが動作確認していないので、恐らくコンパイルできなかったりバグったりします。

除算は C 言語の __int128 (コンパイラ拡張) の範囲に絞り、多倍長整数では行っていませんから、それなりの速さで計算してくれるかと思います。

“`python:拡張モジュールのメソッドは1つだけ
intsqrt(x: int) -> int: int(√x)
intsqrt(x: int, True) -> tuple: (int(√x), x – int(√x)**2)
“`

オプションで余りを取得できます。

## ビルドと実行

distuti

元記事を表示

pytest を使ってみる【Python】

# やりたいこと
Pythonのテスト用フレームワークのひとつ「pytest」に入門する。

# Pythonのテストについて
Pythonのテスト用フレームワークとしては今回取り上げる「pytest」以外にも、標準モジュールの「unittest」や「doctest」が存在します。
ですが、最近人気なのはサードパーティ製の「pytest」のようです。
それぞれのフレームワークの使い方は[こちら](https://qiita.com/flcn-x/items/fcbbc2fb291b970290f2)の記事、pytestをおすすめする理由は[こちら](https://myenigma.hatenablog.com/entry/2021/01/31/212743)の記事に、わかりやすくまとまっていたので参照ください。

# 使ってみる
## インストール
“`bash
pip install pytest
“`

## 基本のテスト
– ターミナルで `pytest` を実行すると、カレントディレクトリ以下に存在するテストがすべて実行されます。
– 特定のテストファイルのみを実行した

元記事を表示

【Python】pytest-mockでユニットテストをモック化する

## はじめに

ユニットテストでは処理に時間がかかったり、外部にアクセスする処理をモックで代替することがあります。 pytestでも “`pytest-mock“` というモジュールでユニットテストをモック化することができます。

## モックとは

オブジェクトの動作を再現するためのオブジェクトです。
例えばselect文の実行結果によって処理が分岐する場合、モックを使えばsqlを実行せずに結果だけを参照することができます。

これにより、テストの準備・実行コストを下げる効果が期待されます。

## モックを利用すべき場面

1. テストの準備にコストがかかる

例:
– データinsertが必要な処理
– サーバ上のファイルを利用する処理
– 外部APIを呼び出す処理

もちろん、データアクセスやファイル処理そのものを行うメソッドのテストは実際にDBやファイルを実行しなければなりません。しかしユニットテストにおいて、それらの処理の呼び出し元では改めて実処理を行う必要はありません。(DBアクセスやファイル処理の振る舞いは担保しているため)

モックで置き換えてよいでしょう。モッ

元記事を表示

日本語GPT2をgoogle colabで実行

## はじめに
LINEにも利用されていたAIチャットbotの「りんな」を開発する会社がGPT2の日本語事前学習済みモデルを公開していたので試しました。

https://huggingface.co/rinna/japanese-gpt-1b

## 実装

まず、必要なライブラリをインストールします。
“`python
!pip install transformers==4.4.2
!pip install sentencepiece==0.1.91
“`

文をトークンという単位で分割するためのtokenizerと、分割したトークン列から後に続くトークン列を生成するモデルを読み込みます。

“`python
from transformers import T5Tokenizer, AutoModelForCausalLM

# トークン分割
tokenizer = T5Tokenizer.from_pretrained(“rinna/japanese-gpt2-medium”, )
# りんなの学習済みモデルを読み込み
model = AutoModelForCausa

元記事を表示

PythonでAzure Blob Storageを管理する

PythonでAzure Blob Storageの情報を取得するための備忘録。

### 準備1(接続文字列を取得)

1. [Azure portal](https://portal.azure.com/) にアクセスする
2. ストレージ アカウント メニュー ウィンドウの [セキュリティとネットワーク] で、 [アクセス キー]を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97314/18659be3-cd80-e90a-bb0f-7a21bc67212b.png)
3. [キーの表示]をクリックする
4. [接続文字列]をコピーする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97314/7e45c5b5-d360-96e9-bc85-d06db487f848.png)

### 準備2(Python:azure-storage-blobのインストール)

元記事を表示

webサービスにpythonで、stripeの定期支払い機能を追加する

今回の記事では、jsなどを使わず、pythonとwebhookを使って、Djangoで作ったwebサービスにstripeの定期商品を組み込み、Django側のモデルにデータを保存する方法について紹介します。

### stripeの設定
stripeに登録します。
テスト環境モードにしておき、定期商品をつくっておきます。

### Django側の設定

pipfileにstripeを追加します。

“`
pipenv install stripe
pipenv lock -r > requirements.txt
“`

settings.pyでstripeを使えるようにします。
本番環境では、先程heokuに設定した値を読み込んでくれるように設定します。

settings.py
“` settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessio

元記事を表示

[python3] [第二回]PythonでGUIアプリを作る

[第一回]PythonでTkinterモジュールを使ってGUIアプリを作る!。
前回→https://qiita.com/ad2009/items/3bcd42ccf2b63978079b
“`md
環境
・Python3.10 64bit
・Windows11
“`
今回は、ウインドウのサイズ変更や、テキストの表示をやっていきます。
# ウインドウのサイズ変更
ウインドウのサイズを変更するには、第一回の[Tkinterの基本]に加えて、
“`python
tk.geometry(“横x縦”)
“`
今回は試しに、500x500にしてみました。
![スクリーンショット 2022-03-12 195705.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2581102/6bdf8e17-ce5d-84d7-f528-f8c6c54bcd68.png)
こうなると思います。
↓↓現在のプログラム全文↓↓
“`python
import sys
import tkin

元記事を表示

PythonでAzure Database for PostgreSQLに接続する

PythonでAzure Database for PostgreSQLに接続する備忘録。

### 準備1(接続情報を取得)

1. [Azure portal](https://portal.azure.com/) にアクセスする
2. サーバーの [概要] ページで、[サーバー名]と[管理者ユーザー名]を確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97314/0aea0e18-0dc5-716f-e741-ac37b8431df6.png)

### 準備2(Python:psycopg2のインストール)

1. pipで[psycopg2](https://pypi.org/project/psycopg2-binary)をインストールする

### サンプル

“`python
# -*- coding: utf-8 -*-
import psycopg2

HOST = “” # [サーバー名]
USER = “

元記事を表示

【粛清】Pythonで正規表現を使ってURLのパラメーターを消去する【正規表現を利用した置換】

# 背景(メキシコ風味)

URLにはパラメータというものがしばしばつきまとう。

くわしい説明は省略するが、そういったものはたしかにあるのだ。
(もしもURLのパラメータについて知りたければしらべろ。おれはお前のママではない。)

お前が普段つかう分には問題ないが、
記録や共有したいときなどに少しずつお前の心をむしばむだろう。
だからお前は、ときに「パラメータをブルシットしたい」などと考える。
そんなときに役立つのが正規表現だ。
(お前のパソコンのデリート=キーでも良い。デリート=キーをしらないやつは帰れ。)

また、お前はパイッソンでURLを使うこともあるだろう。
そんなとき、パイッソンで正規表現をつかうにはreというモジュールをインスコしなければならない。
もしかしたらお前はそれを知らず、いつまでもパイッソンの黒い画面(例えばの話だ。白い画面のブシェミも確かに存在するのだろう)のまえで終わらない仕事になげくことになるのだ。

そうならないためにも、俺はキーターをかくことにした。
(俺はいまだにQiitaのよみ方を知らない。マルチャンも[よく似た名前のせいひん](https://w

元記事を表示

OTHERカテゴリの最新記事