Python3関連のことを調べてみた2020年03月11日

Python3関連のことを調べてみた2020年03月11日

RaspberryPi で NFC RFID-RC522 を Python3 で使う

NFCでやってみた実験一覧

– Felica でつくる簡単な入退室管理 (Rasbpberry Pi に複数台のカードリーダ)
– https://qiita.com/nanbuwks/items/e0988d8fec131baa579d
– RaspberryPi で NFC RFID-RC522
– https://qiita.com/items/c502ba880fbb93f522b3
– element14 の EXPLORE-NFC-WW で NFC 試してみる
– https://qiita.com/items/0c436941a0c5f0a257b1
– Arduino ESP32 と STM32 で NFC RFID-RC522
– https://qiita.com/nanbuwks/items/96c3c2d2af2cf97f3797

# NFC RFID-RC522 格安モジュール

## 搭載チップ

NXP MFRC522
https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf

N

元記事を表示

Kaggle Titanic data set – Top 2% guide (Part 04)

*本記事は @qualitia_cdevの中の一人、@nuwanさんに作成して頂きました。
*This article is written by @nuwan a member of @qualitia_cdev.

##Part 04
####Data analyzing and feature engineering : cont.

######Deck
We got the Deck feature utilizing the Cabin feature. We removed the numbers from the Cabin feature and only kept the Alphabet letter.

“`titanic_demo.py
data = combined_df[combined_df[“Survived”].notnull()]
fig, ax = plt.subplots(2 ,2, figsize=(16,10))

sns.catplot(x=’Deck’, y=’Survived’, data=data, kind=’bar’, ci=

元記事を表示

1.【準備編】NNの使い方を身につけよう!

# はじめに
少し前から機械学習、特にディープラーニングの勉強をしています。

理解を深めるには自分でコーディングしてみるのが良い、と考え慣れ親しんできたObjective-Cで色々とコーディングしてみました。ある程度理解できてCNNによる手書き数字認識ができ、次に何をしようか、というタイミングで自作のツールの拡充はやめてpython3とkerasを使用することにしました。ずっと早そうだったからです。

pythonもkerasも不慣れなので、忘備録として、いつもお世話になっているQiitaに投稿することにしました。

お気付きの点がありましたらご指摘いただけますと幸いです。

##課題
全4回のシリーズでは、以下の3つの課題をクリアしたいと思います。

1. 平均と標準偏差を出力するNN
2. 正規分布に従う波形データから、その正規分布を描画するのに必要な3つのパラメータを出力するNN
3. 画像中にある円についての4つのパラメーター(x座標、y座標、半径、線の太さ)を出力する畳み込みNN(CNN)

第1回の今回は準備編です。

##numpyのndarrayの使い方の復習
ker

元記事を表示

Heroku、Flask、Python、にゃん子掲示板をデータベースで作る(その①)

#(1)まずはcsvを使って掲示板を作成する
###<ディレクトリ構成>

“`
test
├app.py
├articles.csv
├Procfile
├requirements.txt
└templates
├index.html
├layout.html
└index_result.html
“`
###①コンテンツの作成
仮想環境をディレクトリtestの直下に設定、起動。

“`
python3 -m venv .
source bin/activate
“`

必要なフレームワークとwebサーバーをインストール。

“`
pip install flask
pip install gunicorn
“`

articles.csvに、掲示板のデータをはじめに入れておく。

“`.csv:articles.csv
たま,眠いにゃー
しろ,腹減ったにゃー
クロ,なんだか暖かいにゃー
たま,ぽえーぽえーぽえー
ぽんたん,トイレットペーパーがない
なおちん,チーン
“`

app.pyを作成。

“`.py:app.py
# -*- coding:

元記事を表示

Python セイウチ演算子で複数行ラムダ

“`python
def very_long_name_func(x):
return x * 2

def func(x, y, z):
return x + y + z

f = lambda i: (
x := very_long_name_func(i),
func(x, x, x)
)[-1]

for n in map(f, range(10)):
print(n)

“`

元記事を表示

AtCoder ABC43(ARC59) C,D問題

今回はABC43のC,D問題を解いてみた。

まず[C問題](https://atcoder.jp/contests/abc043/tasks/arc059_a)から。
![Screenshot from 2020-03-10 21-36-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263503/637af69a-43cd-5698-39ee-5877fb732b34.png)

“`python:abc43_c.py
n = int(input())
a = list(map(int,input().split()))
avg = 0
for i in a:
avg = avg + i

avg1 = avg//n
avg2 = avg//n + 1
ans1 = 0
ans2 = 0

for i in a:
ans1 = ans1 + pow((i-avg1),2)
ans2 = ans2 + pow((i-avg2),2)

print(min(ans1,ans

元記事を表示

Flask-Babelで多言語化をやってみる

# Flask-Babelとは?
[Flask-Babel](https://pythonhosted.org/Flask-Babel/)とは、PythonのFlaskで多言語対応(i18n, l10n)をするためのライブラリ。
多言語化対応にコンパイルが必要という、ちょっと使い勝手が特殊で理解に時間がかかったためメモを残す。

## インストール
“`shell
$ pip install Flask-Babel
“`

## HTTPリクエストのAccept Languagesヘッダで言語判別する設定
下記のコードの`request.accept_languages.best_match`には対応する言語を[ISO 631-1](https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7)に従って指定する
※ 日本語対応にはjaのみで基本的には問題ないが、IEではja_JPが無ければ動かないという報告がある

“`python
from flask import F

元記事を表示

「コロナ」に関するツイートをpythonで収集して、「コロナ」の影響で話題になった単語を自動検出する

Twitterデータのpythonでの収集方法と、時系列のテキストデータに対するバースト検出方法の説明です。

技術的には、以下の過去記事と同様です。

過去記事:
「クッパ姫」に関するツイートをpythonで収集して、バースト検出してみた
https://qiita.com/pocket_kyoto/items/de4b512b8212e53bbba3

この時に採用した方法の汎用性を確認するために、2020年3月10日時点で話題の「コロナ」をキーワードとして、Twitterデータの収集と、「コロナ」と共起する語のバースト検出を実践してみました。

# 「コロナ」に関するツイートを収集する

収集方法は、基本的に過去記事とほぼ同じです。

まずは、ライブラリの読み込みなど、ツイート収集の準備を行います。

“`python
# Twitterデータ収集用のログインキーの情報
KEYS = { # 自分のアカウントで入手したキーを記載
‘consumer_key’:’*********************’,
‘consumer_secret’:’

元記事を表示

PythonのプロジェクトをTeamcityで自動テストする

## 目的

Pythonの自動テスト環境を構築する。

## 環境

* TeamCity Professional 2019.2.2 (build 71923)
* dockerコンテナubuntuバージョン
* Python 3.7.6
* Poetry 1.0.5

## 概要

以下の条件であればTeamcityでなくても問題はない。
TeamcityのビルドエージェントはDockerコンテナで環境がわけられていい。

* Pythonの実行環境がある
* 単体テストの全実行ができる
* フォーマッタを全ソースに自動適用できる
* 静的コード解析を全ソースに自動適用できる

## Pythonの実行環境

### Python用ビルドエージェントコンテナ

MinimalのエージェントコンテナをベースにPythonの環境を構築していく。
pyenvを使うとコードが短くなるしanacondaなど実装系とも共通化できるので利用した。

“`dockerfile:Dockerfile
FROM jetbrains/teamcity-minimal-agent:latest

元記事を表示

discord.py入門(一日目)~discord.pyの準備編~

#ご挨拶
初めまして。あめみんと申します。discord.py始めたばかりですが、
これから自分が教わったこと・共有できることどんどん共有するので、
上級者の皆様温かい目で見守ってください…
一緒に頑張りましょう!

#~動作環境~
python V3.8.1
pip V19.3.1
discord.py V1.2.5
Windows10

#discordのbotを作るうえで必要なもの…
##①discordbot用のアカウント
[discord developer portal](https://discordapp.com/developers/applications)で以下の画像を参照に初期設定を行います!

1.portalのapplicationから、”New Application”を選択する
![qitta1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600026/304f3d91-9d4e-c721-6f0b-0c2f4b3cdb64.png)

2.botの名前を決める

元記事を表示

CentOS上でFlaskの開発環境構築

簡単なWebページを作成しようと思い環境構築したので備忘として
訳あってちょっと古いCentOSを使用

# 大まかな流れ
– Python3をInstall
– Pythonの仮想環境(venv)を起動
– Flaskを使ってブラウザからHelloWorldを出力

## Python3をInstall
– Ubuntu16.4では最初から入っていたので、Linux系には最初から入っていると思っていた

### OSのversionを確認
“`
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
“`

### yumでインストール
“`
# yumリポジトリにパッケージを追加
$ yum install -y https://centos7.iuscommunity.org/ius-release.rpm
$ yum search python36
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hos

元記事を表示

Pythonにおける並列処理について

 Pythonにおけるconcurrent.futuresとmultiprocessingの挙動についてテストしてみたのでメモ代わりに投稿します。
 目的はPythonによる仕様を確認することではなく、あくまでも「どう動くか」ということです。

## CPU thread数と引数max_workersについて
#### そもそもmax_workersをCPUのthread数と一致させる必要はあるのか?
という疑問がふと沸いたので検証しました。
特に対照実験や統計学的検証は行っていません。ご了承ください。

###検証環境
– CPU core i7 6800k (6core,12thread base clock=3.40GHz)
– Memory 32GB(DDR4-2133)
– OS Windows 10 Pro

###検証コード 1
“`python:concurrent-futures.py
from concurrent import futures
from time import time as t

def primes(x):
primelist_ =

元記事を表示

Python開発環境

## 目的

品質を安定させるためにPython開発環境のツールセットを作る。

* Pythonの開発環境の整備の観点
* プロジェクト構成管理
* ディレクトリ構成
* プロジェクト構成管理ツール
* テストツール
* コーディング規約
* コードフォーマッター
* 静的コード解析ツール

## 開発環境

* Python 3.7系(動作確認は3.7.0を利用。現在だと3.7.6が同系だと最新)
* Poetry 1.0.5

## プロジェクト構成管理

### ディレクトリ構成

* APIドキュメントの自動生成を行う場合では[Sphinx](http://www.sphinx-doc.org/ja/stable/index.html)を利用するのが一般的のようだ。
* APIドキュメントが不要な場合はREADMEなどはMarkdownでもよいだろう。
* Java経験者などはルートモジュールの親ディレクトリとしてsrcを置く人もいるかもしれないが、Pythonでは無い方が望ましい

元記事を表示

monitで監視した諸々のプロセス監視に関する通知をPythonスクリプトでSlackに連携する

# 概要
サーバー内のプロセス監視と自動復旧にmonitを積極利用しており、チームのコラボレーションツールとしてSlackを利用しています。
monitのデフォルトの通知はメールであり、状況の把握が遅くなることがあったため、SlackのIncoming Webhookを利用してSlackのチャンネルに連携することにしました。
実装にあたってはmonitの仕様もあれこれ調べたので、Pythonのスクリプトとmonitのコンフィグ数種もあわせてご紹介。
(monitのコンフィグは大体一緒だから書かなくても良かった気がする)

# 詳細
## 構成
* OS : CentOS 6.10 (古い)
* 監視ツール : monit 5.25.1 # ver.5.14だとelseの構文でエラーが出たので、動かない場合はVerUpしてあげてください
* Python version : Python 3.5.6

## 通知スクリプト
monitから呼ばれるスクリプトをPython 3.5.6を作ったのですが、CentOS 6.xでPython 3系を使うにはお決まりの環境構築が必要になるので

元記事を表示

Python3 からいろいろなバージョンの SQLite3 を使ってみましょう!

# はじめに

Python3 で、いろいろなバージョンの SQLite3 や自分たちで改良した SQLite3 を使う必要がありまして、備忘録としてまとめました。

# 環境

OS は、CentOS 7.7 を使用しています。Proxyなどを設定して、外部にアクセスできる状況になっています。

“`bash
$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
“`

まず、Python3 をインストールします。Python3 のバージョンは 3.6.8 です。

“`bash
$ sudo yum install python3
$ python3 –version
Python 3.6.8
“`

SQLite3 のバージョンを SQLite3 コマンドと Python3 で確認します。

“`bash
$ sqlite3 –version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
$ python3

元記事を表示

for文でサブテストをぶん回すのはやめて動的にテスト関数を生成する。

## 目的

unittestモジュールのsuitでは、テスト関数(プレフィックスtestで番号を末尾に書くとその順にテストしてくれる)を連ねておくと一連のテストを回してくれるのだが、やっているとだんだん同じような関数が量産されてくる。
これを回避するのにサブクラスを使ってfor文の中でぶん回す方法があるが、やってみると以下の不満が出てきた。

* ループ途中でコケる(assert関数でraiseされる)と残りのサブテストが丸ごとスキップされて次のテストに行ってしまう。
* サブテストの数をカウントできないので別途カウンタを用意する必要がある。

そこで、テスト関数をテストケースの数分だけ動的に生成し、テスト数が増えてもコードの変更を伴わないように以下のUT用のコードを作った。
(lambda上に書いたUT対象のコードをUT用lambdaからコールするケースで想定)

## コード

“`:ディレクトリ構成
.
├── errorCases
│  ├── errorCase1.py
│  ├── errorCase2.py
│  └── errorCase3.py
├──

元記事を表示

Python, read(), readline(), readlines()の違い

#read()やreadline()、readlines()の違いについてメモ

#前提
例えば、testsディレクトリに以下のテキストファイルがあったとする。

“`txt:articles.txt
たま,眠いにゃー
しろ,腹減ったにゃー
クロ,なんだか暖かいにゃー
たま,ぽえーぽえーぽえー
“`

#(1)read()※文字数制限あり
readメソッドは開いたファイル全体を文字列として取得する。\nは含まれる。
引数に数字を入れると字数制限をする。

“`
with open(‘tests/articles.txt’,encoding=’utf-8′) as f:
test = f.read(10)
print(test)
“`
とすると、

“`
たま,眠いにゃー

“`
となる。

#(2)read()※文字数制限なし
引数に何も入れないと全てを取得する。

“`
with open(‘tests/articles.txt’,encoding=’utf-8′) as f:
test = f.read()
print(test)
`

元記事を表示

COTOHA APIを使ってDIOっぽいセリフを生成ッ!

# 背景ッ!

[オレ プログラム ウゴカス オマエ ゲンシジン ナル](https://qiita.com/Harusugi/items/f499e8707b36d0f570c4)
[「募ってはいるが、募集はしていない」 人たちへ](https://qiita.com/omiita/items/0f811f15e569bf2539b8)

上の二つの記事に感銘を受け、似たような記事を書いてみたくなりました
[COTOHA API](https://api.ce-cotoha.com/contents/index.html)を使って、漫画[『ジョジョの奇妙な冒険』](https://ja.wikipedia.org/wiki/ジョジョの奇妙な冒険)に登場するカリスマ的悪者DIOっぽいセリフの生成に挑戦しました
(初投稿です、お手柔らかに?‍♂️)

こんな感じになります

“`
$ python TheWorld.py 僕はお腹が空いた。
このDIOはお腹が空いたッ!
$ python TheWorld.py 人生は楽しい!
人生は楽しいッ!最高に「ハイ!」ってやつだアアアアアアハハ

元記事を表示

Pythonを使って、Jupyter Notebookのテンプレートを作るCLIツールを作成した

# 3行で。
* Notebookのテンプレートを作成するツール『notelate』を作成しました。
* “`pip install notelate“`でインストール。
* “` notelate [template name]“`でカレントディレクトリにipynbファイルが生成されます。

# 動機
Jupyter Labをよく使用するのですが、毎回“`import pandas as pd“`などと書くのが非常に面倒でした。
テンプレートを用意してコピペで増やすことで対応していました。

検索すると、Jupyterlabのアドインが公開されていました。([jupyterlab_templates](https://github.com/timkpaine/jupyterlab_templates))
しかし、自らテンプレートを登録する必要があり、面倒でした。

そこで、テンプレートをシェアできる機能をもたせたツールを作ろうと思いました。

# 使い方
## インストール
pip環境下で以下を入力することでインストールされます。
“`pip install notel

元記事を表示

AtCoder日立製作所(略)2020の振りかえり

# 本ページについて
本ページは、自身が参加した2020年3月8日に行われた日立製作所 社会システム事業部 プログラミングコンテスト2020について後学のために振りかえりを行うページです。

# 結果
問題A,BはACでした。C以降は提出に至りませんでした。

# 問題Aについて
問題AについてはACになったものの、納得のいかない解答をしてしまいました。
コンテスト終了後の復習で気付いたのですが、Sの長さが1以上10以下となっており、とても短いので
“hi” x n (nは5以下の自然数)のどれかにあたるだけ見ればよかったんですね。

制約をちゃんと見なかったため、S の長さが10の5乗でも対応できるような不必要な実装をしてしまいました。

ちゃんと問題文はしっかり読みたいですね。

# 問題Bについて
問題文を理解するのに少し時間がかかりましたが、
冷蔵庫の最小値と電子レンジの最小値の和の値と、割引を使える時の値を比較すればいいということは問題なく理解できました。

### コードのその1
当初、下記のコードを提出し、WAになりました。

“`
A,B,M = [int(x) fo

元記事を表示

OTHERカテゴリの最新記事