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

Python3関連のことを調べてみた2019年11月10日
目次

オームの法則 with Python

#はじめに
Pythonを勉強していくうちに、複素数の計算が簡単にできそうということが分かったので、試しに電気工学で使われるオームの法則をPythonで本当に簡単に実装できるのかやってみました。

#オームの法則(直流)
電気工学では最も重要な法則のうちの一つで、一番初めに習う公式です。

**V = IR**
※V:電圧、I:電流、R:抵抗
上記、オームの法則をPythonで記述します。
V,I,Rのうち、空で入力したパラメータに関して計算するように組みます。

“`python:Ohm’sLawDC.py

# V = IR for DC circuit
print(‘Empty a parameter to calculate’)

strV = input(‘Input V : ‘)
strI = input(‘Input I : ‘)
strR = input(‘Input R : ‘)

if strV:
V = float(strV)
if strI:
I = float(strI)
if strR:
R = float(strR)

if no

元記事を表示

seleniumでElementClickInterceptedException , is not clickableが出た時

spanをボタンっぽくしている要素を、pythonでseleniumを使用してクリックさせようとしたとき、

“`
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element
is not clickable at point (xxx, yyy).
“`
みたいなのが出た。

spanだからクリックできないのか?と思ったが違くて、画面外の要素をクリックしようとすると出るらしい。

クリックする要素までスクロールするには

“`python
import selenium.webdriver as webdriver
from selenium.webdriver.common.action_chains import ActionChains

chrome = webdriver.Chrome(‘chromedriver

元記事を表示

WordPressから機械学習モデルの予測APIを呼び出してみた

# はじめに

先日、[機械学習モデルの予測値を返すAPIをDockerで作ってみた](https://qiita.com/dyamaguc/items/8d371a979cc70de80c7f)という記事を書きましたが、せっかくAPIで予測値を取得できるようになったのでWebページから予測を行いたいと思い、Dockerで構築してみました。今回構築するイメージは下図の通りです。

![D7DEB7E3-D41C-4632-9159-1681A1831A28.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329888/6fe3b93c-baa1-2e6a-2472-9720b719c3bb.jpeg)

Docker上に3つのコンテナを立てて、ローカルのブラウザからWordPressにアクセスして、予測結果をWordPressで確認するところまで行いたいと思います。

# 環境
使用する環境は次の通りです。

“`
$sw_vers
ProductName: Mac OS X
ProductVersi

元記事を表示

Pystanのインストール(anacondaの環境)

### インストール環境
Win10 pro 64 bit
Anaconda環境 (conda4.7)

### リポジトリconda-forgeの追加

anacondaでは、conda とpipのインストールが混在すると環境が壊れることがあります。
[condaとpip:混ぜるな危険](http://onoz000.hatenablog.com/entry/2018/02/11/142347)
[Jupyter Notebookが起動しないと思ったらAnaconda環境が壊れていた](https://insilico-notebook.com/conda-broken/)
ですので、できるだけcondaだけでインストールしたほうが良いです。
conda-forgeは、github上のコミュニティ主体のパッケージコレクションで、たくさんのパッケージを公開しており、condaのdefaultsでは見つからないパッケージをダウンロードすることが可能です。
condaのパッケージ参照リポジトリにconda-forgeをリポジトリ先に加えることがおすすめです。
[condaが探すリポジトリ

元記事を表示

ランダムなページサイズのPDFファイルを作成する

仕事で各ページのサイズが異なる(1ページ目がA4で、2ページ目がB5 など)PDFファイルが必要になりました。

各ページごとにサイズが異なるPDFファイルを作成できるようなツールはパッと見た感じ手近にはなかったので、Pythonで自作しました。

# 準備するもの

なお、使用した環境はWindows 10 Home 1903Verです。

* Python(3.7.5)
* PyPDF2
* ReportLab
* tqdm(使わなくてもいいです)

PyPDF2は空のPDFページを作ることができます。ただし、作成したページに**文章や画像など任意のオブジェクトを書き込むことはできません**。

ReportLabは直接プログラムコードから文字や図形などを書き込んだPDFを作ることができます。ただし、**(自分の見た限り)各ページのページサイズが異なるPDFを作ることはできません**。

なので、大まかには

1. ReportLabで1ページだけのPDFファイルを作成する
2. PyPDF2.PdfFileReaderで1を読み込む
3. PyPDF2.PdfFileWriter

元記事を表示

Pythonにおける変数

# はじめに
ここでは、Python初心者向けに、「変数」について解説します。
Python3系の使用を前提とします。

# 変数の定義

変数を定義する際には「変数名 = 値」という書き方をします。 このとき、=(イコール)は左辺と右辺が「等しい」という意味ではなく、左辺と右辺を「等しくする」つまり左辺に右辺を代入するといった意味になります。 ‘=’の前後はスペースがあってもなくても良いですが、見やすくするため半角スペースを入れるのが慣習になっています。

“`python:variable_1.py
var_str = ‘Hello, World!’
var_int = 123
var_bool = True
“`

変数名には、半角英数字、半角記号が使えます。 変数名が2単語以上になる場合はアンダースコア(’_’)でつなぐのが一般的です。 どんな値が格納されているのか、誰が見てもすぐに分かるような変数名をつけるようにすると良いでしょう。
ただし、変数名を予約語(既にPython内部で定義されている単語)にしたり、先頭を数字にしたりしてはいけません。

“`python:va

元記事を表示

多項式の係数のみ剰余を取る方法(Sympy)

# コード
“`python
import sympy as sym

def mod_coeffs(f, p):
f_vars = list(f.free_symbols)
f_coeffs = [f.coeff(var) for var in f_vars]
f_coeffs_mod = sym.Mod(sym.Matrix(f_coeffs), p)

ret = f_coeffs_mod.transpose() * sym.Matrix(f_vars)

return ret[0, 0]
“`

## 例

“`python
f = 123*x + 456*y

print(mod_coeffs(f, 13)) # 6*x + y
“`

## 条件
– 次数は1次のみ(定数や2次以上の多項式は正しい結果がでません)

# 背景
多項式の剰余をPythonの代数演算でよく用いられている`Sympy`を用いて計算すると以下のようになります。

## 例1
#### 数式

“`math
\begin{align}
f(x, y)

元記事を表示

【自分用メモ】PyCharm/Djangoの開発環境構築

# Pythonの仮想環境を設定
pyenvに使用するPythonがインストールされていない場合はPythonをインストールする

“`bash
# バージョン確認
pyenv –version
# Pythonをインストール
pyenv virtualenv 3.7.2
# プロジェクトで使用するフォルダで実行
# Pythonのバージョンを切り替える
pyenv local 3.7.2
# 仮想環境を作成して有効にする
python -m venv venv
source ./venv/bin/activate
“`

仮想環境を無効化したい場合は以下のコマンドで無効化できます。

“`bash
deactivate
“`
# PyCharmの設定
## Project Structureを設定する
1.Preferencesを選択する
pycharm_menu.pngレンタルサーバーとかで最新版のpythonを使うための備忘録

大体のレンタルサーバーでは既に`python`がインストールされ、特に何もしなくても使えるようになっています。しかし**バージョン**が古かったり`pip`で外部モジュールをインストール出来なかったりしちゃうので、そこら辺を上手いこと出来るようにした備忘録になります。
とりあえず`git`が使えればなんとかなるんちゃう(適当

# ケース: お名前.comレンタルサーバー

– 管理者権限: 無し
– git: ○

とりあえず`pyenv`を`git clone`してきて、初期化及び環境変数への登録をしておきましょう。`pyenv -v`が実行出来ればOKです。普通なら素直に`pyenv install`をしたいところなのですが、そのままだと`/tmp`が`noexec`やぞゴラァって怒られるので、環境変数`$TMPDIR`を`$HOME/.tmp`に設定してあげましょう。

“`bash
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo ‘export PATH=”$HOME/.pyenv/bin:$PATH”‘

元記事を表示

【Python】Flaskのソースコードを読んでみる

以前[Bottleのソースコードを概観してみた](https://qiita.com/nyancook/items/7c00037c225986279eb1)ので、今回はFlaskを見てみたいと思います。

# まずは起動から

Flaskのチュートリアルによると、最小限のアプリケーションはこんな感じで作成できるとな。

“`python
from flask import Flask
app = Flask(__name__)

@app.route(‘/’)
def hello_world():
return “Hello World!”

if __name__ == ‘__main__’:
app.run()
“`

Bottleとほとんど同じなわけです。
`run`メソッドの定義はこんな感じ。

“`src/flask/app.py
class Flask(_PackageBoundObject):

def run(self, host=None, port=None, debug=None, load_dotenv=True, **opti

元記事を表示

有機ELキャラクタディスプレイ SO1602 操作用Pythonライブラリを AdaFruit 仕様で実装

#概要

秋月電子などから販売されている、SO1602有機ELキャラクタディスプレイ(16文字×2列)はキャラクタ表示に便利だし、Arduino や RaspberryPi などで動作させるための実装は、C言語やPythonそれなりにある。それでも、BME280などのI2C経由で操作するセンサーと組み合わせるときには、Adafruit が提供している、CircuitPython のお作法に則って記述するのが見た目統一されている気がする。
なので、SO1602向けに必要なライブラリをCircuitPython風というかAdafruit風に書いて公開してみた。

#SO1602の製品情報
秋月電子さんのHPなどに、SO1602を用いたディプレイモジュールの製品やデータシートなどが記載されている。
・ http://akizukidenshi.com/catalog/goods/search.aspx?search=x&keyword=%97L%8B%40%82d%82k%83L%83%83%83%89%83N%83%5E%83f%83B%83X%83v%83%8C%83C%83%82%83

元記事を表示

dbpediaの研究 その21

#概要

dbpediaが難解なので、手出してみる。
python3で、取得してみた。

#サンプルコード

“`
import json
import urllib.request

url = ‘http://ja.dbpedia.org/sparql’
data = {
“query”: “SELECT DISTINCT * WHERE { dbpedia-ja:デ・トマソ dbpedia-owl:abstract ?abstract .}”,
}
headers = {
#’Accept’: ‘application/sparql-results+json’,
‘Content-Type’: ‘application/x-www-form-urlencoded’,
}
req = urllib.request.Request(url, urllib.parse.urlencode(data).encode(‘ascii’), headers, method=’POST’)
with urllib.request.urlopen(req) as res:

元記事を表示

【Python】 Bottleのソースコードを読んでみる その2

この記事は[前回](https://qiita.com/nyancook/items/7c00037c225986279eb1)の続きになっていますが、単独でも問題なく読めるはずです。
まあ、自分用の整理のための記事ですが…

# 本丸のBottleクラス

いよいよ天守閣の`Bottle`クラス。
まずは前回からの流れで、`__call__`メソッドから。

“`bottle.py

class Bottle(object):

def __call__(self, environ, start_response):
“”” Each instance of :class:’Bottle’ is a WSGI application. “””
return self.wsgi(environ, start_response)

def wsgi(self, environ, start_response):
“”” The bottle WSGI-interface. “””
try:

元記事を表示

pipのライブラリーを一括で自動更新するコマンド

自分用の備忘録です。
他の方も参考になれば幸いです。

updateできるライブラリーがあるか、確認する。
コマンドプロンプトで入力する

“`
pip list –o
“`

アップデートが一つしかない場合は以下のコードを入力

“`
pip install -U パッケージ名
“`

本題

まとめてアップデートしたい場合は、新しくライブラリーを入れます。

“`
pip install pip-review
“`

インストール完了後、以下のコマンドでアップデートが開始されます。

“`
pip-review –auto
“`

元記事を表示

Pythonでライフゲームの実装

# 初めに
久しぶりにPygameを使ってプログラムを実装しました。今回はゲームから少し離れてライフゲームを実装しました。(名前にゲームが入っていますがゲームじゃないのでセーフ)実装の難易度はそこまで高くないです。

# ライフゲームとは
ライフゲームは簡単に言うと生命のシミュレーションです。時間の経過とともに生物が誕生したり、死滅していく様子が観察できます。ライフゲームにはほんの少しのルールがあり、それに従ってセルと呼ばれるブロックの個数が更新されていきます。

## ライフゲームのルール
ライフゲームの更新規則は誕生、生存、死に分けられます。
誕生はセルが死んでいるとき、隣接するセルに生存しているが3つのときに新たにそのセルに生存しているセルが誕生します。
一方で、生存しているセルは隣接する生存しているセルの個数が3または4のときに生存し、それ以外のときに死滅します。ここでの死滅は現実世界の過疎や過密に対応しています。
ここで下の図では、中心のセルはそれぞれ左から誕生、生存、死(過疎)、死(過密)の規則が適用されます。
![Screenshot from 2019-11-09 00

元記事を表示

ラズパイでモーターを動かしたかったので、WaveshareのMotor Driver Boardを使ってみた

# とりあえず動画

[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/65pnIw8lZFw/0.jpg)](http://www.youtube.com/watch?v=65pnIw8lZFw)

こんなマニアック記事誰が読むんだ。。

Raspberry Piには、ある分野に特化したHATと呼ばれる拡張基盤がたくさん存在します。
今回、ラズパイでモーターを動かす任務が舞い込んできました。
最初はブレッドボードで頑張っていたのですが、面倒になり、

いやいや、なんかHATを探せばいいやん!!!

というわけで探しにかかりました。

## HATの条件
– ラズパイのGPIOが全て生き残ること。
– 電池だけでラズパイ本体の給電もできること。
– 5000円以下
– 2つのモーターのセットが可能

の4点でした。

そして見つけたのがこれ!!
![20191106_234520.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519741/65

元記事を表示

素因数分解、約数列挙

“`python

def prime_decomposition(n):
table = []
for i in range(2, int(n ** 0.5) + 1):
while n % i == 0:
table += [i]
n //= i
if n == 1:
break
if n != 1:
table += [n]
return table
“`
素因数分解したリストを返すプログラム。

こちらは約数列挙。競プロでは必須である。まず、リストで欲しい場合。

“`python

def make_divisors(n):
divisors = []
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors += [i]
if i != n // i:

元記事を表示

【Python】 Bottleのソースコードを読んでみる その1

# bottle.pyを読む

Pythonのwebフレームワーク、Bottleのコードリーディングをしてみました。
Bottleのソースコードはbottle.pyに集約されているので、このファイルを読むことになります。

GitHubはこちら。
https://github.com/bottlepy/bottle

以下で引用するコードは、bottle.pyから必要な部分のみを引用したものになります。
また、ところどころ勝手にコメントを付け加えています。

最初から細かい部分まで追うと大変なので、まずは全体の流れを掴みたいと思います。

# 最初の入り口: run()

起動から順番にソースを追っていきたいと思います。
Bottleの起動は、例えばドキュメントによると以下のようにする。

“`python
from bottle import route, run, template

@route(‘/hello/‘)
def index(name):
return template(‘Hello {{name}}!’, name=name)

元記事を表示

Python3 csvライブラリで想定通りにパースされない問題(クォーテーション起因)

記念すべき(?)初投稿です。

# 事の起こり
pythonに触れたての初心者なので、ネットの情報を漁りながらcsvライブラリを使い
tsvファイルを取り込む処理を書いていたところ

“`python:tsv_reader.py
import csv
import pprint

def loadTsv(filename):
with open(filename, newline=”) as f:
reader = csv.reader(f, delimiter=’\t’)
for row in reader:
pprint.pprint(row)
“`

下記のようなデータに対してパースがうまく行かない現象が発生しました。

“`tsv:sample.tsv
0 test 1 hogehoge a b
0 test 1 “fugafuga a c
0 test 1 piyopiyo a b c

元記事を表示

pillowとopencv2で画像をぼかしてみる

#目的
先日の記事のせいで、少し画像処理に興味が湧いてきました。
とは言え最後に数学を触ったのは高3の期末テスト…。しかも2点。
理解不能なところもありましたが、まずは触ってみようということでコードを書いてみました。

#まずはインストールと画像の用意
opencv2ってのが画像処理用のモジュールらしい。ということで安直に「pip install opencv2」するも見つからないらしい。どうやらこっちが正しい模様。

“`shell
$ pip install opencv-python
“`

ぼかす画像は目の保養としてフリー素材の田舎っぽい画像を採用。

![inaka.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495652/775ab469-a88c-456f-f5a9-360a4b1a2232.jpeg)

こいつをぼかしていきましょう。

#コード
ではコードを書いていきます。

##インポート部分+画像読み込み
“`python:main.py
import cv2

#画像

元記事を表示

OTHERカテゴリの最新記事