Python関連のことを調べてみた2023年02月05日

Python関連のことを調べてみた2023年02月05日

パスに日本語が含まれるプログラムをバッチファイルから上手く実行できない時の対処法(Python)

# 結論
– [文字化けして実行できない時](#文字化けして実行できない時)
→ 文字コードを【SHIFT-JIS】にする
– [改行がなんか変な時](#改行がなんか変な時)
→ 改行コードを【CRLF】にする

バッチファイルを書き始める前に、以上の2点を確認することをお勧めします。(後で直すと少し面倒くさいです…)

# 文字化けして実行できない時
下のようなフォルダ名に日本語を含む階層構造でプログラムを用意し、バッチファイルからPythonのコード動かしてみます。

“`:ファイル構成
C:\プロジェクト
|-プログラム
| |-hello.py
|-pyexe.bat
“`

“`Python:hello.py
print(“hello”)
“`
“`batch:pyexe.bat
python C:/自動実行/プログラム/hello.py
“`

それでは、ターミナルを開き実行してみましょう。
“`console:ターミナル
$ C:\プロジェクト>pyexe.bat
“`
“`console:実行結果
$ C:\プロジェク

元記事を表示

enumerate

### はじめに
leetcodeの問題を解いていて解けたものの計算量がO(n^2)になってしまいました。
解説にO(n)のものがあり、`enumerate`を使っていて感動したので残しておきます。

### enumerate
forループを使うとき引数にインテラブルオブジェクトを指定すると要素とindex番号を取得できる。

*インテラブルオブジェクトとは、forループを使って取り出すようなオブジェクトのこと。
リスト、辞書、タプル、文字列など

`enumerate`の使い方は以下。
“`python
nums = [1, 10, 100]
for i, num in enumerate(nums):
print(i, num)
“`
実行結果は
“`
0 1
1 10
2 100
“`

### 使った結果
使う前はfor文の中にfor文を入れてこんな感じになってました。
“`python
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:

元記事を表示

【初級】pythonのclassやmoduleを考える

記載日:2023/02/05
pythonのclassやmoduleについて、自分なりに考えてみました。
そんなに知見があるわけではないのですが、実際のコードを書いてみて感じたことを記載します。同じ疑問を感じた方にとって、少しでも疑問解消の助けになればと思います。

## 流れ
以降では、以下のように進めていきます。
 ・まず、classとmoduleのそれぞれで同じ機能を書いてみる。
 ・次に、それぞれを比較して分かることを考えてみる。

結論を書くと、それぞれに良いところがありました。使う状況によって使い分けていくことになりそうです。
 ・moduleのメリット
   module(\_\_init__.py)のコード量が少なく、Main.pyでの呼び出しもシンプル(インスタンスを作ってない)
 ・classのメリット
   classではインスタンスを作ることで、複雑な機能をMain->classへ委任できる。
   (コンストラクタによる共通引数の一括渡しや、メソッド間で共用できるprivate変数の使用ができる。)

## classとmoduleの具体例
以下プロジェクト構

元記事を表示

ABC288回答メモ

0.はじめに
 コンテスト予選を兼ねてるそうで、Dから難しいよーと注意書きがありました。
 実際、なかなか難しくてちょっと手が出なかったです。

1.A – Many A+B Problems
 素直にN回ループでAB入力して、足した数を出力でAC。

 https://atcoder.jp/contests/abc288/submissions/38597107

2.B – Qualification Contest
 最初、単純にK人分入力して、そのままK人表示してしまいましたが
 よく見たら辞書順出力でした・・・。
 K人分入力してリストに突っ込み、そのリストをソートしてから
 全部表示でACでした。
 
 https://atcoder.jp/contests/abc288/submissions/38606833

3.C – Don’t be cycle
 解法が思いつかなかったので、まずは閉路判定方法をググる。
 すると、Union-Findで同じ根を持つ辺が出来た際に
 閉路ができるとのこと。
 次にUnion-Findについてぐぐり、動画などを見て大体を把握して

元記事を表示

W503 line break before binary operator flake8 & black

# 概要

“`
W503 line break before binary operator
“`

なぜかこちらのエラーが出たので調べたことを書いておく

# 自分のケースにたいする解決策

`.flake8`の `ignore = xxx`に自分で指定している無視するルールがあったが、defaultでignoreされているもの全部を含んでいなかったためにW503が有効化されてエラーがでていたので、`ignore`ではなく `extend-ignore`に自分の無視するルールを記載した

“`.flake8
[flake8]
extend-ignore = xxx
“`

# 結論

1. W503はflake8のdefaultでignoreに入っているので基本は出ない
“`
flake8 –help

–ignore errors Comma-separated list of error codes to ignore (or skip). For example,

元記事を表示

bookersの投稿API(python)を使ってみた

# bookersについて
[有料予想・有料記事を登録できるサイト](https://bookers.tech/)
記事投稿できるAPIが提供されている為、競馬予想から競馬予想投稿までを自動化してみました。

# 投稿API用シークレットキー
bookersにログイン後、アカウント設定の最下部の**投稿API用シークレットキー**を取得する。
![投稿API用シークレットキー](https://storage.googleapis.com/zenn-user-upload/8edc193121b0-20230204.png)

# 記事一覧取得[GET]
pythonサンプルコード
“`python
import requests
# Tokenに投稿API用シークレットキーを指定する
headers = {
‘Authorization’: ‘Token *****************’,
}
res = requests.get(‘https://bookers.tech/api/postcreate/’, headers=headers)
print(res.jso

元記事を表示

pythonの-mオプションの動作を調べる

# 背景
-mオプションは実行対象のスクリプトをモジュールとして実行するオプションです。例えば以下のようなPythonファイルの`my_function1`関数を実行したい際に、`python -m my_module.my_function1`で実行することができます。

“`python:my_module.py
def my_function1():
print(“Hello from my_function1”)

def my_function2():
print(“Hello from my_function2”)
“`

こういった使い方をすることはたまにあるのですが、裏でどのような処理が走っているのか、他の用途はあるのか等、気になったので色々調べました。

# -mオプションでの動作
通常のスクリプトでの実行との主な違いとしては、以下のように`sys.argv`と`sys.path`の先頭に追加されるパスが異なるという点のようです。

#### sys.argv
– スクリプト実行
– `カレントディレクトリから実行されるファイルまで

元記事を表示

【Python】pythonでwifi接続をしてみた。【pywifi】

### pywifiを使用する経緯
自宅回線に”レオネット”と”ソフトバンクエアー”を引いていおり、普段はソフトバンクエアーを利用してたまにレオネットを使います。
そんなたまにしか出番がないレオネットは90分インターネットにアクセスしないとIPアドレスが払い出されなくなり、ネットワークから切り離れてしまいます。
対処法としてルータのNTPを60分おきに取得する方法があるのですが、設定してもなぜか毎回パスワードをも止められ始末。。。
そこでラズパイのログローテーションで毎分インターネットにアクセスしようと考えましたが、普段はソフトバンクエアーに繋いでいるため、一度レオネットに繋いでからインターネットにアクセスしないといけません。
しかし、レオネットに自動で接続するにはどうすれば。。。

そこで登場しますのがpythonモジュールの”pywifi”です。

>pywifiはPythonでWi-Fiを操作するためのライブラリで、Wi-Fiのスキャン、接続、切断などを行うことができます。

### インストール

以下コマンドでインストールしてください。
“`python
pip insta

元記事を表示

AtCoder入青したのでこれまでを振り返ってみる

# 0. はじめに
先日のABC286で青レーティングに到達したので、ここまでの進捗メモを兼ねてこれまでやってきたことをまとめてみます。
![Screenshot 2023-02-05 at 00-34-29 isee – AtCoder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611963/6c7b1056-7798-bf7b-ca25-0f91eaa0da40.png)

# 1. 経歴
* 理系大学出身
* 数学はそれなりに得意
* 開発経験はほぼなし
* アルゴリズムの知識は『数学ガール 乱択アルゴリズム』を読んだくらい
* ちょっとした計算にPythonを使っていた
* アソビ大全のマンカラ最大得点、Muse Dashの理論値、Wordleのソルバー……etc

「Pythonもっと使えるようになりたいなー」「アルゴリズムも学びたいなー」→「競技プログラミングなるものがあるらしい」という流れで始めました。

# 2. やったこと
## アルゴリズム・データ構造を知る
本でまとめ

元記事を表示

深層学習における学習率(Learning Rate)の学習モデル(予測精度)への影響について

# 1.概要
 これまで公開されているDatasetを用いて、Pytorchによる**Semantic Segmentation**の方法についていくつか紹介しました。
 
**Semantic Segmentation紹介記事**
[Pytorchによる航空画像の建物セグメンテーションの作成方法.](https://qiita.com/nigo1973/items/1d7495a963c23c97189c)
[PyTorchによるMulticlass Segmentation – 車載カメラ画像のマルチクラスセグメンテーションについて.](https://qiita.com/nigo1973/items/c62578fccc7230ba48f8)
[MMSegmentationによる多数クラス画像(Multi Class)のセマンティックセグメンテーション(Semantic Segmentation).](https://qiita.com/nigo1973/items/37c0980b00e4f1eb2c3f)
[航空写真から道路モデルを作成する方法](https://qiita.

元記事を表示

初めてのPython、じゃんけんゲーム備忘録

こんにちはkmdと申します。

初投稿になります。
タイトル通り今回はPythonで簡単なじゃんけんのプログラムを組みました。
私は普段ネットワークの畑にいるためプログラムについてほぼ全くの無知です…

自動化やRPAを最近職場で見ることがあり、私も興味を持ったためプログラミングへ挑戦することにしました。
Udemyで少し勉強して基本的な?もので書けたと思います。

今回はさわり程度でアルゴリズムを理解するのに苦労しました。

“`janken.pty
import random

print(‘じゃんけんをします。 手を選んでね \n’)

global human
global com

def nyuryoku():
global human
human = int(input(‘1:グー 2:チョキ 3:パー \n —> ‘))
if human not in [1, 2, 3]:
print(‘1か2か3を入力してください’)
nyuryoku()
else:
janken()

def

元記事を表示

【AtCoder】ABC288 のA,B,C における Python解説

ABC 288のA,B,C 問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 910](https://atcoder.jp/users/tsuru1471)
230204 現在

# 目次
[はじめに](#はじめに)
[A.Many A+B Problems](#amany-ab-problems)
[B.Qualification Contest](#bqualification-contest)
[C

元記事を表示

Pythonでほぼ日手帳形式のmarkdownメモ帳を作ろう(1年分)

# 概要

私は1年に1度markdown形式のメモ用ファイルをたくさん作っている。これを日常のあらゆるメモとして使用している。自動生成するためのコードを書き直したので忘れないように記録しておく。

### 作るもの

以下のような構成のmarkdownファイルを作る。

“`
.
└── 2023
├── 1
│ ├ 1-7.md
│ ├ 8-14.md
│ ├ 15-21.md
│ ├ 22-28.md
│ └ 29-4.md
└── 2
│ ├ 5-11.md
│ ├ …
│ …

└── 3
└── 4
└── …
“`

生成時点でファイルごとに以下のような内容を書いておく。

“`markdown
# 1/1

# 1/2

# 1/3

# 1/4

# 1/5

# 1/6

# 1/7

# メモ

“`

それぞれの日付が書かれた段落内には、「その日の予定」「その日のメモ」「日々の振り返り」等

元記事を表示

PIVをやってみる.part 2 直接相互相関法で作成

# はじめに
part 1で無料のOpenPIVを試してみたが方向の反転に気をつければ使えそうに感じた.ソースコードを変更するには時間を要する.更なる理解のために自分でPIVのプログラムを作成することを検討した.今回はPIVの原理に近く精度が高いと言われている直接相互相関法を試す.

# 直接相互相関法
計測時間が前の画像を第1画像,後の画像を第2画像とする.画像を一定のサイズに区切って第1画像の探査領域を設定して,この輝度分布のパターンが第2画像のどこに一致するか調べる方法である.画像全体で相互相関を調べると計算に時間がかかるため,探査領域の近傍だけ相互相関を調べる.相互相関係数の分布からピークを移動量として,これを各探査領域で計算して速度分布を求める.

# プログラムの作成,結果
OpenPIVと比較するために前回と同様に画像は[PIVChallenge](https://www.pivchallenge.org/)のから1st PIV Challenge (Sept.14-15, 2001, Göttingen, Germany) のCase 3: medium particl

元記事を表示

Vite+FastAPI+NGINX+Dockerの環境構築

## 概要
– GitHubにテンプレートとして公開しています。
– https://github.com/gaitou2048/fastAPI-veutify-template

## 前提
– Docker, Docker Composeインストール済み
実行環境はMac + Docker for Desktop(Mac) ですが、Windows(WSL)やLinuxでもできるはず。

## FastAPIコンテナ(バックエンド)

以下のDockerfileを使います。
pythonのパッケージ管理はpoetryを使っています。
以下のパッケージをpyproject.tomlでインストールしています。
– fastapi
– uvicorn

(pyproject.toml)
https://github.com/gaitou2048/fastAPI-veutify-template/blob/main/back/app/pyproject.toml

“`dockerfile

FROM python:3.11-slim-bullseye

ENV TZ=As

元記事を表示

Python: フーリエ変換とは?

# But what is the Fourier Transform? A visual introduction.
この記事は私のお気に入りの Youtube チャンネル [3Blue1Brown](https://www.youtube.com/@3blue1brown/videos) で取り上げられている『[But what is the Fourier Transform? A visual introduction.](https://www.youtube.com/watch?v=spUNpyF58BY&t=369s)』というフーリエ変換について視覚的に理解する動画を整理するために Python で実装しようとした記録である。

# はじめに
結論から述べると、動画の 3 分くらいのところで述べられているように、横軸が時間で縦軸が振幅となっているように波がある時、時間軸を角度、振幅を中心からの距離とみなして以下の図のように原点に巻き付けてみる。この時、一周分巻くのに何秒分使うか(cycles/second)によって見える図形が変化する。これによって得られる図形の重心を

元記事を表示

主成分分析をイチから整理してみる

共分散$$cov(x,y)=(x-\bar x)(y-\bar y)$$は、よく散布図の関係を例に説明していることが多いが、抽象的な説明や理解だとで主成分分析だったりGauss過程を考える際には難しくなると思う。

そこで、自身の理解のために共分散がどういう性質を持っているのかをイチから考えよう。

# 前提知識

どうしても、深く使いこなすには線形代数の知識が必要です。

とくに内積$u\cdot v=|u||v|\cos\theta$、
多次元のベクトル、行列演算の線形写像性
$$u=Av \qquad \mathrm{as}\qquad u_i=\sum_jA_{ij}v_j$$
$$u\cdot v=u^Tv$$
はよく使います。
※印特に断りがない限りベクトルはn行1列の行列と見なす

# まとめ

– サンプルX,Yを、それぞれ一列に並べたベクトル$X=(x_1, x_2,…,y_n),Y=(y_1,y_2,…,y_n)$
と考えると分かりやすいよ
– **相関性**とはサンプル同士の偏り(偏差)が比例関係に従う度合いをいうよ。ベクトルを平行な成分と垂直な成分に

元記事を表示

Rust研究:Pythonスクリプトの呼び出し

Rust 初心者です。

スクリプトで実装した計算処理を Rust から呼び出せたら便利だと思いました。
PyO3 を使うと Python と連携できるようなので調べてみました。

今回もコンパイルできたところまでメモします。

# お題

Rust コードに数値計算の関数をハードコーディングしてしまうと関数の処理内容を変更するたびに
再コンパイルが必要になるので、数値計算の関数は Rust コードから分離して Python スクリプトで
実装するようにし、それを Rust コードから呼び出すようにしたい。

スクリプトはこんな感じ↓で。

“`python
import math

def func(x):
return math.cos(x)

def gaussian(x, a=1.0, b=0, c=1.0):
y = (x-b)/c
return a*math.exp(-y*y)
“`

Rust コードからは “func” とか “gaussian” といった関数名で呼び出す。

スクリプトファイルの場所は利用者が指定できるものとする。

# ソ

元記事を表示

Python + Tkinter – 統計的な調査に要する標本サイズを算出するアプリ

Tkinter学習の一環で統計的な調査に必要なサンプル数を算出するアプリを作ってみました。「統計WEB」の母比率の区間推定における必要なサンプルサイズの解説ページを参考に制作しました。

https://bellcurve.jp/statistics/blog/14347.html

# コード

“`python

from tkinter import *
from tkinter import font
from scipy.stats import norm

#ウィンドウのタイトル+サイズ
window = Tk()
window.title(“標本サイズ計算機”)
window.minsize(width=600, height=450)
window.config(padx=50, pady=20)

myfont = font.Font(family=’Helvetica’, size=20, weight=’bold’)
myfont_result = font.Font(family=’Helvetica’, size=24, weight=’bold’)
myf

元記事を表示

【AtCoder】ABC157E 「 Simple String Queries 」Python解説

# E.Simple String Queries

[問題ページ](https://atcoder.jp/contests/abc157/tasks/abc157_e)

難易度 : 1443

# 考察

type1 は **一点更新**、type2は **区間取得** 問題です。したがって、このクエリを高速に処理するためには **Segment Tree** を利用するのが良さそうです。

あとは、区間に登場するアルファベットの種類をどうやって管理するかを考えます。これにはいくつかの手段があります。

## 解法➀ アルファベットごとにセグ木を持つ

欲張って全てのアルファベットについて同時に考えようとするから状況が難しくなっています。
それよりも、アルファベットごとに独立に考えるほうが簡単です。つまり、**区間 $[l,r)$ 内に対象のアルファベットが含まれるか(存在するか) を求めることにします。**

そのためにはアルファベットごとに管理仕分ける必要があるので、**26本のセグメントツリー**を作成します。

元記事を表示

OTHERカテゴリの最新記事