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

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

Python勉強③ 最大公約数と最小公倍数 2022/06/16

さて今日は最大公約数の問題でユークリッドの互助法にぶち当たりました。

ユークリッドの互助法とは…

2つの自然数 𝑎, 𝑏 について,𝑎 を 𝑏 で割ったときの商を 𝑞,余りを 𝑟 とすると
「𝑎 と 𝑏 の最大公約数」は,「𝑏 と 𝑟 の最大公約数」に等しい。

具体例で表すと

120 ÷ 50 = 2 … 20
50 ÷ 20 = 2 … 10
20 ÷ 10 = 2 … 0
(10 ÷ 0 = 10を返す)

この場合10が最大公約数となります。

~~~
def gcd(x, y):
if y == 0: #上記の数式だと10÷0=の場合、10を返す。つまり余りが0で計算が終わりの場合
return x
else: #あまりの数でわる式を返す
return gcd(y,x%y)

print(gcd(12, 18))
~~~

次に最大公倍数。これは最大公約数がわかっていたら簡単なんですね。

aとbの最小公倍数は

最小公倍数 = a÷ 最大公約数 × b

という公式があるようで。何か見覚えがあるよ

元記事を表示

【Python】最初、混同してしまう「assert, except, raise」文について

# assert

**デバックを作業を容易に行うため** に使用されます

条件式が`False`の場合には`AssertionError`を発生させて停止。
`True`の場合はそのまま処理が続きます

“`sample.py
assert “条件式をここに書く”, “Falseの場合のメッセージ”
“`

“`sample.py
# 例)
# 1. AssertionErrorは発生せずに、処理は続く
assert “apple” == “apple”, “りんごでは無いです”

# 2
assert “apple” == “orange”, “りんごでは無いです”
# => AssertionError : りんごでは無いです
“`

### では、if文と、assert文の違いは?

同じ様に条件分岐をするif分との違いは何なのか

“`sample.py
if “apple” == “apple”:
is_same_fruit = True
else:
is_same_fruit = False
“`

if文は`True`でも`False`でも

元記事を表示

ホテリングT2法による異常検知

# 内容

標準正規分布とカイ二乗分布の関係を用いて、ホテリングT2法という簡単な異常検知モデルを作成することができます。

確率変数$X$が標準正規分布$N(0,1)$に従う時、$X^2$は自由度1のカイ二乗分布$\chi^2_1$に従う為、この分布をベースに「異常である」の閾値$a$を設定し、新たに観測した値から導かれる異常度$a(x’)$が閾値$a$を超えるなら「異常」とする方法です。

065c9039-84d6-47f7-8bbd-3389bb5160ae.png名

実際に標準正規分布から取得した1000の標本を2乗して、プロットしてみます。

“`python
from scipy.stats import norm chi2
import matplotlib.pyplot as plt
impo

元記事を表示

【Django】更新ページの作り方

DjangoアプリでDB情報を更新するページを作成しましたので、備忘として残します

## 処理フロー

ユーザーが更新したいDB情報を取得して更新するまでのフローは以下になります。

1. ユーザーがDB更新ページを接続する(urls.pyが実行される)
2. urls.pyに記載しているviews.pyの関数を実行する
3. views.pyの関数で渡されてたpkを元にDB情報を検索するクエリを投げる
4. 検索結果から取得したDB情報をhtmlへ渡して表示する
5. ユーザーが入力フォームからDB情報を更新する(urls.pyがPOSTメソッドで実行される)
6. urls.pyに記載しているviews.pyの関数をPOSTメソッドで実行される
7. views.pyでDB情報を更新するSQLが実行される

処理フローずつ説明していきます

## 1. ユーザーDB更新ページを接続する

クライアントからhttp://example.com/blog/1/updateというアドレスへアクセスします。

/blog/1/updateというパスがurls.pyの以下のような記載部分に

元記事を表示

pip, brew, pyenv

### pip
* Pythonのライブラリのインストール

### Homebrew
* Python以外でも使える

### pyenv
* Pythonのver管理
* Python2とPython3の切り替えとか

元記事を表示

JupyterLab 環境構築 Ubuntu 22.4

![スクリーンショット 2022-06-16 145821.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200760/a2a23705-cbdb-d24f-1388-78c1ff5c803e.png)

![スクリーンショット 2022-06-16 145914.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200760/28242a3e-bee1-9261-5cfc-ec1f54ccdfc7.png)

![スクリーンショット 2022-06-16 150038.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/200760/24035a94-9c8b-0ecf-3510-763211114405.png)

![スクリーンショット 2022-06-16 150216.png](https://qiita-image-store.s

元記事を表示

pandasのDataFrameの特定の列について、棒グラフを作成する方法

# はじめに
pandasのDataFrameの特定の列について、何が多く入ってるか知りたい時ありますよね。
そんな時のためのコードです。

# 環境
– matplotlib:3.5.2
– pandas:1.3.5
– python3:3.7.13

# データの準備
“`csv:fruits.csv
apple,banana,lemon,orange,strawberry,melon,kiwi,grape,peach
“`
## メインのコード
“`python:main.py
from csv import reader
import random

import matplotlib.pyplot as plt
import pandas as pd

if __name__ == “__main__”:
# データの準備
prefectures = []
with open(‘fruits.csv’, ‘r’) as csv_file:
csv_reader = reader(csv_file)
fruits =

元記事を表示

いろんなことに引っかかりながらAPI Gateway⇔Lambdaを試す

# はじめに
[前回](https://qiita.com/kiii142/items/b25e83d505ca049f3df5)Lambdaを使ってみたので
つぎはAPI Gateway との連携できたらいいよね!と思ってチュートリアルやってみようとしたら
初心者すぎていろんなことに引っかかったという記事です。
丁寧な公式チュートリアルはこちら
+ [API Gateway の開始方法](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/getting-started.html)

Lambda関数はどうしてもpythonで書きたかったので
公式チュートリアルからはちょっと外れてそこの処理だけpythonで書くこととします。
最初に手順を一通りなぞった後に、私が引っかかったポイントについてまとめていこうと思います。

# 公式のステップに則った手順
## ステップ 1: Lambda 関数を作成する
+ Lambdaのページに行き、「関数の作成」ボタンを押す
+ 「一から作成」を選択。「関数名」に適

元記事を表示

MeCabとmecab-ipadic-NEologdをWindowsのPythonで使用するときに注意すること

# こんにちは

2回目の投稿です。今回はWindowsでMeCabとmecab-ipadic-NEologdを、Pythonから使おうと思ったらめちゃくちゃ手こずったので、その備忘録的なものを書きます。

# インストール

情報が少なく、READMEなどを読んでも「???」だったので色々探したところ、これで行けました。

[WindowsでPythonでMeCab(mecab-ipadic-NEologd)](https://qiita.com/yakipudding/items/0372dc79bb5722fa4b8b)

gccが必要らしいです。私の場合、もう既に入っていたので大丈夫でした。
macやlinux系のOSでの解説はまあまあありましたが、Windowsは少なかったですね……WSLを推奨しているので仕方がないとは思いますが……

# 記述方法

[【Python】WindowsのMeCabでNEologdをユーザー辞書に使う](https://resanaplaza.com/2022/05/08/%E3%80%90%E8%B6%85%E7%B5%B6%E7%B0%A1

元記事を表示

PythonでMatplotlibの使い方がわからないときは、公式リファレンスを見よう

# この記事の概要
今年度(記事を記載している2022年度)にほぼ初めてPythonを覚え、データ可視化の方法などを一通り覚えた駆け出しデータサイエンティストですが、未だにMatplotlibが使いこなせないので、この際だから頭の整理をしてしまおう! というものになります。

# Matplotlibには2つの記述方法がある
あまり英語が得意じゃないのですが、Matplotlibの公式サイトを読み解きながら、2つの方法をまとめていきます。

## その1.”pyplot”による方法
とりあえずネットにあるコードをぺたぺた貼るときに、大体初めに覚えるものです。
公式サイトでは「like MATLAB」と書いてありますね。ついでに
「オブジェクト指向よりフレキシブルじゃないから、Axesオブジェクトから呼び出すのがいいよ!」
と言っているようです(若干意訳気味ですが)。
“`import.py
import pandas as pd
import numpy as np
import matplotlib.pyp

元記事を表示

selenium よく使うコード

ログイン処理

“`python
def login(driver: webdriver.Chrome, username: str, password: str) -> bool:
“””
認証情報を元にログインを実行する。
以下の情報を返す。
– 成功: True
– 失敗: False
“””
wait = WebDriverWait(driver=driver, timeout=30)

driver.get(‘URL’)
wait.until(EC.presence_of_all_elements_located)

id_form = driver.find_element_by_name(‘user’)
id_form.send_keys(username)

pw_form = driver.find_element_by_name(‘password’)
pw_form.send_keys(password)

pw_form.send_keys(Keys

元記事を表示

【Discord bot】DiscordからUbuntu上のARKサーバを起動・停止できるようにした

## 概要
“`
Server: Ubuntu20.04.4 LTS@自宅PCサーバ
Python: Python3.8.10
Poetry: Poetry1.1.13

Discordでコマンド入力 -> Discord botが反応 -> シェルスクリプトを実行
“`

## 目次
1. 導入のきっかけ
2. Discord bot用のコード
3. ARKサーバの導入
4. Discord botの導入

## 導入のきっかけ
ARK: Survival Evolvedのマルチプレイ用サーバを立てたのですが, ARKではプレイヤーが操作していない間でもゲーム内時間が進んでしまう仕様のため, 適宜サーバを停止してやる必要があります。また, サーバー管理者(ここでは私)が常にコンソールにアクセスできるわけではないので, 管理者以外のプレイヤーも任意にサーバの起動・停止を行える必要があります。そこで, Discord botを導入してサーバ上に常駐させることで自動化することにしました。

## Discord bot用のコード
今回はPythonを使ってDiscord botを動かし

元記事を表示

入社1年目の終わりにLTでPythonを使ったモジュール開発について喋ってみた

# はじめに
こんにちは!
本日は、1年目の終わりにグループ会社横断で開催されたLTに登壇して、Pythonを使ったモジュール開発について喋ってきたので、その内容について発信していきたいと思います。

# 対象者

1:LTへの登壇を迷っている方
2:今回のLTでの発表内容について知りたい方
3:新入社員の方
4:LTを企画してる方

# 目次

1:結論
2:LTとは
3:登壇したLTの概要
4:なぜ登壇しようと思ったか
5:なにを喋ったか
6:まとめ

# 結論

まず、LTへの登壇はメリットしかありませんでした。大きく3つほどあったかと思います。

1:””繋がりの形成””
→ LTを通して、他の部署/他の会社の方々に私のことを知ってもらえました。

2:””知識の定着”” 
→ 発表はアウトプットに見えますが、相手に説明ができるということは自分がしっかりと理解している必要があります。そのため、発表までの準備を通して知識の定着につながります。

3:””モチベーション向上”” 
→ 他の人の発表から刺激をもらったり、自分の発表に対して良いFBをもらうことで、もっと頑張ろうとモチ

元記事を表示

【メモ】Dockerでseleniumスクレイピング始め方

“`Dockerfile:/Dockerfile
FROM lambci/lambda:build-python3.8

COPY PROJECTNAME /var/task/PROJECTNAME
COPY tests /var/task/tests

WORKDIR /opt/python/

RUN yum install -y unzip && \
curl -SL https://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip > chromedriver.zip && \
curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-55/stable-headless-chromium-amazonlinux-2017-03.zip > headless-chromium.zip && \
unzip chromedriver.zip && \
unzip

元記事を表示

Amazon で買えるパーツでライントレーサ

# Amazon で買えるパーツでライントレーサを作ってみた
## パーツリスト
1. Raspberry Pi Pico
1. ラインセンサ
1. モータドライバ
1. ギアボックス
1. タイヤ
1. 車体

## 開発環境
1. Chromebook (または、Chromeブラウザ)
1. テキストエディタ(Caret など)
1. ターミナルエミュレータ(Beagle Term など)

### パーツ解説
1. Raspberry Pi Pico
Circuit Python をインストールしたもの
https://learn.adafruit.com/welcome-to-circuitpython
[amazon は高い](https://www.amazon.co.jp/Raspberry-%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E3%83%94%E3%82%B3-%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3RP2040-Cortex-M0-%E3%83%

元記事を表示

PDFの線を太くする(Python)

# 線の細いPDFがたまにある
たまにあります。
元がdxfやらdwgのCAD図面な奴です

# ちょっと困る事がある
画面で見る分にはAcrobatの設定変えるだけでいいんですが、印刷するとまあ普通に全然ダメです、特に、A3のPDFで来るので、普通のA4プリンタで縮小印刷すると、まずまともに印刷できません

# なので
線を太くするものを作ってみようと思いました。巷のPythonでPDFを弄る系は殆どがテキストやイメージを抽出するものばっかりだったので、なにかの一助になればと・・・

# Python用でPDF弄るものとしては
PyPDF2 , pdfminer.sixとか色々あるようですが、PyMuPDFが使いやすそうだったので、PyMuPDFを使ってみました。

“`Python:PDFlinebold.py
import fitz

path = ‘MyPDF.pdf’
opath = ‘outPDF.pdf’

scale = 10.0
maxlimit = 2.0

doc = fitz.open(path)

page_count = doc.page_count

f

元記事を表示

nfcpyの読み取り機能をhttp経由で呼び出し可能にする。

# 概要

人「NFCを読み取るアプリ欲しい」
蝦「はい」
人「見た目はリッチにしたい」
蝦「はい」
人「NFCを読むところまではPythonでできたのでいい感じにしてほしい」
蝦「はい」

# 動作環境
– ASUS Chromebook C434TA +crostini(Debian)
– python3.7以降(asyicioを使用します。)
– NFCリーダー: RC-S380/S

# 基本構成
– Uvicornでhttpリクエストの受付
– FastAPIでリクエストを処理する。
– nfcpyでUSB接続したNFCリーダーを操作する。

# 実際のコード
## 読み取り処理部分
読み取り部分は至極単純。Pythonにはアロー関数が無いので関数内で関数を宣言している。

“`python3:nfc.py
import nfc

# NFCでデータを読み込むための関数
def read_nfc_tag(clf):
data = {}
# アロー関数的な処理
def connected(tag):
# スコープの扱いに注意

元記事を表示

Pythonのglobalキーワードを省略できるケース

# Pythonのglobal変数
短いスクリプトを書いたり、サンプルコードを少し実験してみるときには、私はしっかり作り込んだりせずglobal変数に頼ったりすることが多いです。そういったシーンでは、global変数を参照する際に毎回`global`キーワードを記述するのも面倒。省略できるなら省略したい。けどどんなときに省略できるのか詳しくわかっていませんでした。
いくつか実験をしてみましたのでみなさんの参考になればと思います。

### まずはわかった結論から
– globalキーワードを省略すると?
– `def`の中など、あるローカル名前空間で`global`キーワードを省略した場合、**書き換えが行われる変数が**、グローバル変数と同じ名称だった場合、それはグローバル変数ではなく、新しいローカル変数であると判断されるようです。そして一旦ローカルであると判断されたあとはその名前空間では絶対に同一名称のグローバル変数へのアクセスができなくなるようです。
– 一方で、書き換えを行わないのであれば`global`キーワードを省略してもグローバル変数として扱われるようです。ややこ

元記事を表示

【個人開発のススメ!】未経験エンジニアの転職の決め手になった(?)ポートフォリオを紹介!

# 導入

こんにちは!

私は現在北海道のWeb系自社開発企業にてフルスタックエンジニアとして働いていますが、
元々は都内の広告代理店でWebマーケターとして勤務していました。

ですが、趣味で触り始めたプログラミングの楽しさに引きずり込まれて、現在の会社へと転職するに至っています。

今回の記事では、私がエンジニアに転職する時にポートフォリオとして提出したWebサービスの技術スタックや、うまくいったこと・いかなかったことの振り返りを共有させていただくことで、
読者の方の個人開発への知見が広がればいいなと思っております。

# サービス概要

下記が今回取り上げるポートフォリオの概要です。

* 正式名称
* 学習院大学 国社生だけのOB・OG相談サイト Kiite-me!(キイテミ)
※以下「Kiite-me!」
* 運営期間
* 2021年3月30日から2022年4月1日まで
* サービス説明
* 一言でいえば、__クローズドコミュニティ型Yahoo知恵袋__。
* 解決したい課題
* 「Kiite-me!」を立ち上げ始めていた時(

元記事を表示

iPhoneでも使えるようになったLiDARの標準ファイル形式「LAS」ってどんなデータなの?を、PDAL/Laspyを使って調べてみる。

## lasデータってなんや

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203944/3ecbdd4d-3127-cfd2-efd2-3e3c015eaa0d.png)
※掛川城の点群データをopen3Dで可視化したやつ

以前こんな記事を書きました。
ざっくり要約すると「**lasデータをOpen3Dで可視化し、plyで出力する記事**」なのですが、この記事で元データとなった「LAS」という形式についてちょろっとだけ触れています。
[Leafmap/Open3Dを使って掛川城の大規模点群データ(5GB)をPythonで可視化してみよう!](https://qiita.com/nokonoko_1203/items/63e00d279cf7efb5521d)

ただ、「点群データだよ」と「LiDARの標準形式だよ」ということ以外にはほとんど触れなかったので今回はもう少し踏み込んだ上で、Pythonから色々触ってみて、さらに点群データの超軽量化までやってしまいましょう!

## どん

元記事を表示

OTHERカテゴリの最新記事