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

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

AtCoder Beginner Contest 242 A~C 3完記事

アルゴリズムの学習改善のための自身の備忘録及び学習の一環として記事を書くことにしました.
読んでくれた方で何かありましたら気兼ねなくコメントしてください.お待ちしております.
# [A – T-shirt](https://atcoder.jp/contests/abc242/tasks/abc242_a)

## 問題文
>あるプログラミングコンテストでは、以下のルールに従って参加者に T シャツをプレゼントします。
>* 上位 A 位までの参加者は、必ず T シャツが貰える。
>* 加えて、上位 A+1 位から B 位までの参加者のうち C 人が一様ランダムに選ばれ、選ばれた参加者は T シャツを貰える。
>
>コンテストには 1000 人が参加し、全ての参加者が相異なる順位を取りました。
このコンテストの参加者であるいろはちゃんは、X 位を取りました。
このとき、いろはちゃんが T シャツを貰える確率を求めてください。

## 制約
>入力はすべて整数
1≤A入力は以下の形式で標準入力から与えられる。
>A B C

元記事を表示

動画で得た再起関数の知識をまとめる回【自分用】

参考にした動画

英語の動画だけど、すごい聞き取りやすいし分かりやすいね
この動画の例ではフィボナッチ数列を使ってたから、フィボナッチ数列を求めるための再起関数書いていくよー。
まずは簡単なやつ

“`python:practice.py
def fib(n):
if n == 1 or n == 2:
result = 1
else:
result = fib(n-1) + fib(n-2)
return result
“`

例えばn=5の時はまず、n=3とn=4に分岐して、そこからn=3⇨(n=2,n=1)となっていって、n=4⇨((n=3⇨n=2,n=1),n=2)みたいにn=2かn=1まで分裂を繰り返していく、分裂が完全に完了したら分裂の数分、数が足されていって、最終的にn=5の値5が戻り値として戻ってくる。
しかし、毎回毎回一からやっていったら計算量がバカにならないので、初めてでた数字はリストに追加していくようにするともっと良くできる。

“`python:

元記事を表示

Pythonがプログラミング初学者に嬉しい理由

[Python、2021年のTIOBEプログラミング言語オブザイヤーを受賞:CodeZine(コードジン)](https://codezine.jp/article/detail/15438)
[index | TIOBE – The Software Quality Company](https://www.tiobe.com/tiobe-index/)
Python、相変わらず一番人気らしい。というポエムです。

## 教える方と教わる方のギャップ

ギャップがあると楽しくない、という話があります。

> プログラミング教育では
> 「まず手を動かしてみよう。これを打ち込んで!」
> 「(カタカタ)」
> 「これをビルドして…」
>
> $ ./hello
Hello, world!
$
>
> 「ほら文字が出た、すごいよね!?」
> 「(だから何…?)」
> というのがよくある。

だからた

元記事を表示

JSON Editor Onlineもいいけど、JSON Blobというのもある ~ 解析用編集画面へJSONをアップするAPIを叩く関数をコピペ用に公開~

自動化・連携開発に触るのはもっぱらJSON。iPaaS以外での開発はもっぱらPythonなのですが、
# pprint限界っす
100件分とか、件数が肥大するとpprintじゃ無理。収まりきらないし、目視が限界。
まあ.jsonとして保存してもいいのだけど、ビルドの過程のその場限りで見るだけ、使い捨てのものなので、一つのエンドポイント叩くごとにいちいちPath記述してファイル保存する気にならなかった。

# JSONのオンラインエディターはJavaScript用
JSON Editor OnlineでもJSON Blobでも、Python記述をテキストエディタで下記のような置換を施した上でコピペするというのを繰り返していた。
– None -> null
– True/False – true/false
– ‘ -> ”

# そこでアップロードAPIのあるJSON Blob
元々どちらかというとUI的に好みで、[JSON Editor Online](https://jsoneditoronline.org/)ではなく[JSON Blob](https://jsonblob.com

元記事を表示

【Project Euler】Problem 93: 四則演算で連続数

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

### 問題 93.四則演算で連続数

原文 [Problem 93: Arithmetic expressions](https://projecteuler.net/problem=93)

**問題の要約: 4つの数字を使って四則演算を行った結果を1から順番に並べたとき、最も連続が長く続くような4つの数字を求めよ**

いわゆる[テンパズル(Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%B3%E3%83%91%E3%82%BA%E3%83%AB)で10だけでなく、1から順番に数を一番連続で作れる4つの数字はどれかという問題です。

この手の問題はカッコとかがあると扱いがややこしいので[逆ポーランド記法(Wikipedia)](https://ja.wikip

元記事を表示

Tkinterでアプリ作成 入門

## 仮想環境作成
### Windows環境
“`
python -m venv tkinter
.\tkinter\Scripts\activate
“`
### Mac環境
“`
python -m venv tkinter
source tkinter/bin/activate
“`
## 実装
### tkオブジェクトを表示
“`py
import tkinter

root = tkinter.Tk()
root.mainloop()
“`
![](https://storage.googleapis.com/zenn-user-upload/4bfe8770be3d-20220218.png)

### タイトル名とサイズを決めてみましょう
“`py
import tkinter

root = tkinter.Tk()
root.title(‘Sample’)
root.geometry(‘1200×600’)
root.mainloop()
“`
![](https://storage.googleapis.com/zenn-user-upload/a

元記事を表示

【Sympy演算処理】線形代数再入門①「複式簿記」から「単位行列=単位ベクトル」へ。

**連立一次方程式**も**行列演算**も、それ自体はコンピューターに丸投げすれば一瞬で解いてくれます。むしろその時何が起こってるかちゃんとイメージするのが難しいという…

# 1.行列演算の出発点としての「複式簿記」。
[【Python演算処理】行列演算の基本④大源流における記述統計学との密接な関連性?](https://qiita.com/ochimusha01/items/d36169ad13872a34ebc6)
「**とある喫茶店におけるコーヒーと紅茶の1週間の売り上げ**」から出発。

過去気象データ取得【Python×スクレイピング】

# 1.はじめに

以下の記事がすべてです。
[@Cyber_Hacnosukeさん](https://qiita.com/Cyber_Hacnosuke)の
[GoogleColaboratoryで気象庁の過去気象データをスクレイピングしてみた。](https://qiita.com/Cyber_Hacnosuke/items/122cec35d299c4d01f10)
参照させていただき、一部カスタムさせて利用させていただきました!ありがとうございます。

・スクレイピング対象サイト
[気象庁過去の気象データ検索](https://www.data.jma.go.jp/obd/stats/etrn/index.php)

# 2.概要(取得したいデータ)

■日付:任意期間の過去日別データ
■地域:各都道府県(県庁所在地)
■過去気象データ:以下
・降水量
・気温_平均
・気温_最高
・気温_最低
・湿度_平均
・湿度_最小
・日照時間

■例:このページから取得します。
https://www.data.jma.go.jp/obd/stats/etrn/view/daily

[Python] PycaretでKaggleの回帰問題に挑戦!

# はじめに

[Kaggle 問題にチームで取り組み奮闘記](https://datascienceteam.connpass.com/event/237584/)での発表内容です。

[このKaggleの問題](https://www.kaggle.com/c/tabular-playground-series-jul-2021)に取り組みました。

https://datascienceteam.connpass.com/event/237584/

https://www.kaggle.com/c/tabular-playground-series-jul-2021

## Pycaret でかんたん AutoML

### Pycaret ?

**PyCaret**は、機械学習のワークフローを自動化する Python 製のオープンソース、ローコード機械学習ライブラリです。PyCaret は基本的に、いくつかの**機械学習ライブラリやフレームワークの Python ラッパー**です。

https://techninjahere.medium.com/best-opensou

python基礎

# print(文字を出力する方法)

“`csharp:php
print(‘Hellow World’);
“`
# #(コメント)

“`csharp:php
#コメントアウト
“`
# 変数の定義
+ PHPのように、$などはいらない。
+ 変数名の付け方は、`user_name`のように、単語2文字以上のときは、アンダーバーで繋げる。

“`csharp:php
name = ‘Naoki’;
name = 12;
“`
+ 変数の中の値を取り出すときは↓
+ クオテーションをつけると、文字列として認識されてしまうので、クオテーションはつけない。

“`csharp:php
print(name); //Naoki
“`
# 変数の更新

“`csharp:php
x = x + 10//x + = 10と同じ 、x % = 10など
“`
# 文字列の連結

+ +記号は、文字列の連結もすることができる。
+ PHPの場合は、’Hello’.’World’→ドットで繋げていた。

“`csharp:php
print(‘Hello’ + ‘World’

「卓球競技団体戦における”ダブルスの勝敗”が”団体戦の勝敗”に与える因果効果を定量化したい」ステップ⓪Tリーグ試合データのスクレイピングによるデータセット作成



# 始めに
卓球競技の団体戦において、「ダブルスが重要である」「ダブルスが団体戦の鍵をにぎる」と経験知としてよく言われます。
学生時代等に卓球に打ち込んだ方々は、顧問の先生やクラブチームのコーチから言われたことがある人も少なくないのではないでしょうか。
かくいう私も学生時代に卓球に夢中になった者の一人ですが、色んな方々から言われた覚えがあるので、卓球界においてある種の暗黙知として存在するような気がします。

そこで、統計的因果推論を用いて「卓球団体戦におけるダブルスの勝敗」と「団体戦の勝敗」の因果関係の定量分析を試みます。
もう少し統計的因果推論の用語を用いると、本記事の目的は、「卓球団体戦におけるダブルスの勝敗(=原因変数)」が「団体戦の勝敗(=結果変数)」に与える因果効果(介入効果)の定量化、になります。

以前Twitterで、高校時代の先輩が「『卓球の団体戦はダブルスを取った方が有利』って説、誰か定量的に分析してくれないかなー」みたいな事を言っていたような気もするので、まあ需要もゼロではないん

DP解説動画 コード全文 EDPC D問題 #AtCoder

https://www.youtube.com/watch?v=gVJ16ThsJYs

動画『【ゆっくり解説】DP(動的計画法)解説 EDPC D 【競技プログラミング】』で使用しているコード全文です。

https://atcoder.jp/contests/dp/tasks/dp_d

“`python:
# 入力の受け取り
N,W=map(int, input().split())

# (1)表を作る
dp=[[0]*(W+1) for i in range(N+1)]

# (3)表の小さい方から答えにたどり着くまで埋める
# i=1~N
for i in range(1,N+1):
# i番目の品物の重さ,価値
wi,vi=map(int, input().split())

# w=0~W
for w in range(W+1):
# w-wiがマイナスなら
if w-wi<0: # i番目の品物を入れない dp[i][w]=dp[i-1][w]

数値を範囲 “[0, 除数)” で保持する合同式向け数値クラス

# 剰余数を保持する数値クラス

a, p を整数として

“`python:
v = a % p
“`
p と v の情報を保持し、各演算子を使うためのクラスです。例えば、次の計算は

“`math:
7754077^{16307003-1} \equiv 1 \pmod{16307003}
“`

“`python:
>>> a = ModNumber(16307003, 7754077)
>>> a
(7754077 % 16307003)
>>> a ** (a.divisor – 1)
(1 % 16307003)
“`

となります。保持される値 (a.value) は “[0, a.divisor)” です。

クラスが \_\_repr\_\_() 関数で返す文字列は
  ”(value % divisor)”
形式です。

因みに「7754077 ** (16307003 - 1) % 16307003」の実行はやめましょう。

# プログラム

“`python:modnum.py
from numbers import I

pythonでのプロジェクト作成に関するツールの使い方まとめ

pythonでプロジェクトを行うにあたってよく用いられているpyenv, poetry, mypy等のツールを利用する際のコマンドをまとめました。

この記事で述べた各種ツールを用いたテンプレートプロジェクトをgithubで公開しています。

https://github.com/eycjur/python_project_template

# pyenv
python自体のバージョン管理ツール

## インストール
“`bash
brew install pyenv
echo ‘
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init –path)”
eval “$(pyenv init -)”
‘ >> ~/.zshrc
source ~/.zshrc
“`

## pythonのインストール
“`bash
# インストールできるバージョンの一覧
pyenv install –list
pyenv install 3.10.1
pyenv global

django heroku の環境で画像アップロードにcloudinaryを使う方法

djangoでherokuデプロイをする際に、画像をアップロードできる機能を実装するため、
cloudinaryを使ってみました。

ですが、ググった記事の通りにしてもうまく動作せず、詰まったためメモを残したいと思います。

## cloudinaryをherokuで使う設定

herokuにログインし、resourceからcloudinaryを追加する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380952/6eb6b7a9-e989-347a-9196-f155ca69d6c7.png)

cloudinaryのダッシュボードにいって、
API keyと API Secretをherokuのsettings>config varに入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380952/ad57e021-570b-50f5-0493-a947ad364a96.png

日記;回すだけIII ⑦ pythonでSDO、PDOの読み書き<その2 Home>ベータ版

 モータ・コントローラでは様々な動作モードを備えています。その中でも次の三つは基本機能です。
– Home;Homing method
– PPモード;Profile Position Mode 位置制御モード
– PVモード;Profile Velocity Mode 速度制御モード

### Homing method
 モータ制御機によって実装されているホーミング(原点復帰?)機能は様々です。多くは、リミット・スイッチの信号が入ると原点に向かって移動する、という動作になっています。移動する方向などで、いくつかのHoming methodが用意されています。
 実験では、とくに物理的なリミット・スイッチで制限することはないので、実例は、今の場所を原点とするモードを実行します。
 Homing methodは35もしくは37の Homing on current positionを指定します。SDOで0x6098に書き込みます。
 Controlword of the Homing Modeでは、ビット4 HOS;Homing operation startのフラグがあり、1: St

中心極限定理を Python で確かめる(一様分布,二項分布,コーシー分布を使って)

# 本記事の目的
確率論において重要な定理である「**中心極限定理**」を Python で確かめます.
具体的には,「ある分布から取り出した標本平均の分布が,標本を大きくすることで本当に正規分布に従うのか?」を確かめます.

# 中心極限定理とは
数学的に厳密な内容は述べませんが,中心極限定理が何なのかをざっくりと述べます.

**定理の内容(ざっくりと)**
$n$ 個の確率変数 $X_1,\cdots ,X_n$ が独立で同じ分布に従うとする.
$E[X_i]=\mu, V[X_i]=\sigma^2, \bar{X}=\frac{1}{n}(X_1 + \cdots + X_n)$ とする.
このとき,$n$ を大きくすると,$\bar{X}$ は正規分布 $N(\mu, \sigma^2 /n)$ に近づく.
※ ここで,$n$ が標本の大きさ,$\bar{X}$ が標本平均です.

**記事を書くに至った経緯**
この定理の証明は確率統計の教科書に載っていますが,個人的には難しいと思いました.
そこで,「本当に $n$ を大きくして標本平均が正規分布に従うのか?」を Pyt

Python windowsのcmd、powershellでctrl cでスレッド、プロセスが止まらない時の対処法

# 結論

メインスレッド以外をデーモン化する

# スレッドのデーモン化とは

デーモンスレッドは他の非デーモンスレッドが終了と同時に強制的に終了するスレッドのこと

また、子スレッドは親スレッドのデーモンの値を継承する
つまり、デーモンスレッドによって開かれた子スレッドは引き続きデーモンスレッド

# やり方

以下、極端な例。デーモンスレッド、非デーモンスレッドの順にスレッドを実行させればよい

“`python
import threading
from multiprocessing import Process
import time

def task(num: int):
while True:
time.sleep(1)
print(f’task{num}’)

def main():
“””ctrl c を受け取るためのスレッド”””
while True:
try:
# スリープ入れないとcpuコアがフル稼働するので注意
time.slee

「つくってマスターPython」で勉強日記#2

【出典】[つくってマスターPython](https://www.amazon.co.jp/%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BCPython-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%BBWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%83%BB%E6%96%87%E6%9B%B8%E5%87%A6%E7%90%86%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4297110342)
[前回の続きです](https://qiita.com/kato_squall

Power BIとPycaretでかんたんクラスタリング

# はじめに

いま話題のかんたん機械学習ライブラリのPycaretをPower BI上で使用してみます。

![pycaretde_2022-03-04-17-30-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/61f66e2c-d5d2-6336-f146-1eed0c0ad85e.png)

## Pythonの環境セットアップ

Power BI DesktopでPythonを使用できるように設定します。環境はPower BI用に構築するのがいいと思います。

![pycaretde_2022-03-04-17-44-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e1d5d741-05f0-00ed-cd8d-73c342ba463f.png)

Coffe Tea Total
0 18 10