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

Python3関連のことを調べてみた2020年05月28日
目次

pyautoguiのlocateOnScreen()がマルチディスプレイ非対応な理由

## 概要
pyautoguiのlocateOnScreen()がデュアルディスプレイ環境にも関わらず一画面分でしか探索ができなかったのでわかったところまでを備忘録として記します。

## 結論
PILのimageGrab.grab()がデュアルディスプレイに対応していない
pyautgiuのマルチモニター非対応の解決策を書いている人がいました(未検証)→https://github.com/python-pillow/Pillow/issues/1547#issuecomment-185815425

## 問題発生時の環境
Winodws10 home
python 3.6.4
pyautogui 0.9.50
pyscreeze 0.1.26
Pillow 5.0.0

## pyautogui.locateOnScreen()の動作
この関数はpayautoguiの`__init__.py`の212行目で以下のように定義されています。

“`payautogui/__init__.py
def locateOnScreen(*args, **kwargs):

元記事を表示

Python3 を子供に教えるためにパスワード生成機を作ってみた(オマケ)

# マイナンバーカードの暗証番号変えるのが流行ってるみたいなのでパスワード生成機を作ってみた

 本当は仕事で任意の桁数、1000個以上のパスワードが必要になったからなんですけどね・・・
折角なので、これも Python のお勉強と以下のような仕様でパスワード生成機を作ってみました。

1. 任意の桁数のパスワード
2. 英語の小文字を混ぜる(か選択できる)
3. 英語の大文字を混ぜる(か選択できる)
4. 記号を混ぜる(か選択できる)
5. 3文字連続した文字ははじく(123 , abc , 987 , XYZ , 121 などはダメ!)
6. 上記ルールのパスワードを指定数分作成する
7. 全部ファイルに出力する

 大したことはやってないですね。自分的には `check_err3()` があんまり綺麗じゃないので他にやりようは無いんかな〜などと思ってますが。

 「子供に教える」という観点では、オセロよりこっちのプログラムの方が難解ですね。なぜなら文字コードという概念が出てくるからです。「君が今観てる画面に表示されている A は16進数の 0x41 なんですよ」なんて言っても理解

元記事を表示

Python3 を子供に教えるためにオセロを作ってみた(6)最終回

# オセロクラスについて解説していきましょう その3

## 「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」関数
 さてさて、最も難解かもしれませんが解説していきます。
 これから説明するオセロクラスの関数 `ot_next_onepeace()` は、**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**という機能の関数です。
 この言葉がとても重要になる関数です。もう1度言いますね。
 この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけです。
 仮にオセロ盤のマス目が100x100の盤だったとしても、この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけなのです。

### なぜなら「自分が自分を呼び出す関数(再帰関数)」だから!

 少なからずコマを置けると判断した場合、ひっくり返せる方角を全てひっくり返していかないとなりません。そのためには、8方向に対してひっくり返しができるかどうか?、どこまでひっくり返せるか?を考えなければなりませんよね。

元記事を表示

Pythonで文字列を変換(a -> b)する場合、if文と辞書型どちらを使うのが速いのか

# 背景とやったこと
GCPのCloud Functionsで「りんご」なら「果物」、「いちご」なら「野菜」、のように毎回入力をペアとなる単語に変換したかったのですが、
**if文でゴリゴリ変換**するのと**辞書型の対応表を用意して変換**するのどちらが早いのか疑問に思ったので試してみました。
注)なお自分の場合はコールドスタートになることが多いので、辞書型生成も含めた所要時間を計算しています

## 結論
**毎回辞書型の読み込みが発生する場合(AWSのLambdaやGCPのCloud Functionsのコールドスタート時など)は**
if文の方が速い。

keyが5文字の場合
![fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304608/a580dc25-7c51-4f71-1692-ab48a72799d2.png)

keyが10文字の場合
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

processingのコードを送信したらgifかpngで出力してくれるslackbotを作った話

# はじめに
深夜テンションで一気に書ききったのでたくさん修正するかもしれません。
この記事ではslackbotを起動に漕ぎ着けるまでの解説を行います。デプロイして運用!とかは他の記事を見ながら頑張っていただけたら…
この記事で使用してるコードは[こちら](https://github.com/kota-shiokara/processing-slackbot)に上げてます。

なお、この記事は様々な説明を省略してたりするのでご了承ください。

# 本文
## 環境など(筆者の環境なのであくまでも目安に)
– macOS Catalina 10.15.4
– Slack
– processing-java
– Python 3.7.4(Python3系なら多分大丈夫だと思います)
– [slackbot](https://github.com/lins05/slackbot) 0.5.6
– [Pillow](https://pillow.readthedocs.io/en/stable/) 7.1.2

pipでslackbot、Pillowライブラリをインストールしてお

元記事を表示

ラズベリーパイZERO-WHでカメラ画像をGoogleDriveにアップロードする(python+pydrive)

#初めに
ラズベリーパイ(Raspberry Pi Zero WH)を用いて、監視カメラを作成する前に、撮影した画像などをネットワーク上に保存できる環境を構築します。
指定したファイルをGoogleドライブにUploadする方法はネット上にいくつもありましたが、監視カメラ用の画像のアップロードとなると、たくさんの画像を上げることになります。また参照を容易にするためにも、指定した場所に日付などのフォルダーを作成して格納する必要があります。このほか実際には、通信エラーなどでうまくアップロードできない場合もあるので、指定ディレクトリのファイルをまとめて行うようにしています。

# 利用しているハードウエア
* Raspberry Pi Zero WH
* Raspberry Zero V2 Camera (今回のプログラムには不要)
* microSD カード(32GB)

# 利用しているソフトウエア
* Linux raspberrypi 5.4.35+ #1314 Fri May 1 17:36:08 BST 2020 armv6l GNU/Linux
* Python 3.7.3
*

元記事を表示

ゼロから始めるLeetCode Day38「208. Implement Trie (Prefix Tree)」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day37「105. Construct Binary Tree from Preorder and Inorder Traversal」
](https://qiita.com/KueharX/items/c5442e4cd3baa6bb1ce

元記事を表示

Python 備忘録(個人的ブックマーク)

多分、ゴミ投稿… :sweat: 逐次、更新。

# 覚書
## 商と余り

– [Pythonのdivmodで割り算の商と余りを同時に取得 | note.nkmk.me](https://note.nkmk.me/python-divmod-quotient-remainder/)

“`python
q = 10 // 3 # 商
mod = 10 % 3 # 余り
q, mod = divmod(10, 3) # 商と余りを同時に
“`

## swap

– [Pythonで変数やリストの値を入れ替え(交換・並べ替え) | note.nkmk.me]()

“`python
a, b = b, a
“`

もう tmp 要らない…。

## ユークリッドの互除法 Python 版

– [拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 – Qiita](https://qiita.com/drken/items/b97ff231e43bce50199a)

“`python
def gcd(a, n):
if

元記事を表示

how can I convert pdf to image using pdf2image in python on Mac OS X?

I want to convert pdf to image using pdf2image in python on Mac OS X.

“`
from pdf2image.exceptions import (
PDFInfoNotInstalledError,
PDFPageCountError,
PDFSyntaxError
)
# define pdf path
pdf_path = “./pdf_file/ooo.pdf”

# convert pdf to image(1200dpi)
images = convert_from_path(str(pdf_path), 1200)
# save image files one by one
image_dir = “./image_file”
for i, image in enumerate(images):
file_name = pdfpath + “{:02d}”.format(i + 1) + “.jpeg”
image_path = image_dir / file_

元記事を表示

辞書型リストとDataFrameの相互変換

#辞書型リストをDataFrameに変換して処理したい
もう何度も調べたくない・・・。そんな自分へ備忘録です。
みなさんのお役にも立てればいいな・・・

##環境情報
・python: 3.7.3
・pandas: 1.0.3

##実装サンプル

“`python:辞書型リストとDataFrameの相互変換.py

import pandas as pd

dict_list = [
{“A”: “a1”, “B”: “b1”, “C”: “c1”},
{“A”: “a2”, “B”: “b2”, “C”: “c2”},
{“A”: “a3”, “B”: “b3”, “C”: “c3”}
]

# 辞書型リスト -> DataFrameへ変換
df = pd.DataFrame(dict_list)
print(df)
# A B C
# 0 a1 b1 c1
# 1 a2 b2 c2
# 2 a3 b3 c3

# DataFrame -> 辞書型リストへ変換
dfToList = list(df.to_dict(‘ind

元記事を表示

Pythonの基礎

# まえおき

– この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book)の本の特定の章の部分抜粋です。
– 入門本なので初心者の方向け。
– Pythonの基本的なところの章が対象となります。
– Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。面倒なのでQiita用に調整するのやりたくない。気になる方は↑のリンクの電子書籍版をご利用ください。
– コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。

# Pythonの基礎

この章では、Pythonの基本的なところを学んでいきます。地味な内容もまだ多いですが、大切な内容であり且つ基礎がしっかりしていると学習がスムーズになります。スキップせずに、且つ実際に皆さん自身で手を動かしてコードを実行してみて進めてみてください。

## 足し算、引き算・掛

元記事を表示

Python3 を子供に教えるためにオセロを作ってみた(5)

# オセロクラスについて解説していきましょう その2

## 型について話しましょう
 血液型ってありますよね?A型、B型、O型、AB型・・・と本当かどうかはさておいて「几帳面なA型」「自分勝手なB型」みたいな感じで型にはその型なりの特徴があります。プログラミングでは型というのは血液型のように重要な区分けをするために使われます。

 今まで**変数**について色々説明してきましたが、敢えて型について触れてきませんでした。配列は list() というクラスだと説明しましたし、ディクショナリ変数も dict() というクラスです。プログラムで言うデータ型は血液型同様、そのデータの性質を表すものです。

|データ型の名前 |データ型|記述|
|:—:|:—:|:—|
|文字列|str| “文字” または ‘文字’|
|整数|int| +-数値|
|浮動小数|float|+-浮動小数|
|虚数|complex|+-実数部+-虚数部j|
|真偽|bool| True または False|
|日付時刻|datetime|日付と時刻|
|リスト(配列)|list|データ型を問わない配列|

元記事を表示

Pandas覚書 自分用

複数データフレームを1つのExcelファイルにまとめて出力。`index`で行名を、`header`で列名を無視する。

“`python
writer = pd.ExcelWriter(“data.xlsx”, engine=’xlsxwriter’)
df1.to_excel(writer, sheet_name = “sheet1”, index=False, header=False)
df2.to_excel(writer, sheet_name = “sheet2”, index=False, header=False)
writer.save()
“`

元記事を表示

Windows10でwxpython使ったらdatetime.datetime.strptimeで「ValueError: unknown locale: ja-JP」

wxpython使ってWindows向けGUIを作ってみていたのですが、
「application = wx.App()」とした後に
「datetime.datetime.strptime(’20/Aug/2020:17:28:00′, ‘%d/%b/%Y:%H:%M:%S’).strftime(‘%Y/%m/%d %H:%M:%S’)」としたら
「ValueError: unknown locale: ja-JP」となってしまいました。

デバッグで追っていったところwx.App()をするとイニシャル処理で「InitLocale()」が実行されて
「self._initial_locale = wx.Locale(wx.LANGUAGE_DEFAULT)」
と処理されて実行OSのlocaleが設定されるようなのですが・・・
https://docs.wxpython.org/wx.Language.enumeration.html
それが「ja\_JP」となるようです。

「ja_JP.UTF8」とかじゃなくて「ja_JP」です。

localeに「ja_JP」が設定されている状態で

元記事を表示

値を入れるだけで行列をTeXの形式で出力して計算もしてほしい!!

# TeXめんどい
大学に入ってから初めてTeXというものをつかった.便利で大変良い.まだB1なので行列計算とかもまだ簡単.でも手書きでレポート出すなら簡単で,ぱっとやって提出できるけど,TeXだとそうは行かない.紙に計算して,TeXの形式に打ち込んでとまあまあめんどくさい.慣れてないし,補助ツールがぐぐってもみつからない.TeXの形式で渡したら自動で計算してくれるところとかさがしたけどあんまりしっくりこない.

# つくった
ということで行列を入力したら計算してくれるやつを作った.

“`python

import numpy as np

# tex
def tex_text(A):
A_mat = “”
for l in A:
l_tex = “”
for r in l:
l_tex += str(r)
l_tex += “&”
l_tex = l_tex[:-1] + r”\\”
A_mat += l_tex
A_mat = r”””\le

元記事を表示

WindowsのVSCodeでPythonのIntelliSenseが表示されないときの対処法

最近のエディタでやっぱり優秀なのはIntelliSens(Autocomplete)だと思う。入力の手間が省けるだけじゃなくて、引数の形とかも出してくれるし、ちょっとしたドキュメントもついてるからめっちゃ有能。

でも、VSCodeを使ってPythonの開発をしていて、“`opencv-python“`, “`numpy“`, “`scipy“`, “`pandas“` などの巨大なライブラリではIntelliSenseが出てこなかったので、色々調べて直した方法をメモ。ただ、あんまり情報がなかったので、これで全員が解決するかはわからない()

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628276/23a18141-e571-309e-dfa0-d7dd697208f4.png)

## 環境
– OS : Windows 10 Home
– VSCode : 1.45.1
– Python : 3.8.3

**Anaconda経由ではなく、Pythonを直接イン

元記事を表示

ゼロから始めるLeetCode Day37「105. Construct Binary Tree from Preorder and Inorder Traversal」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day36「155. Min Stack」](https://qiita.com/KueharX/items/e0fe029974c5e26a0b4f)

今はTop 100 Liked QuestionsのMediumを解いています。
Easy

元記事を表示

Pythonでドラクエのポーカーを実装してみた

# はじめに

今回は[前の記事](https://qiita.com/p-t-a-p-1/items/ef34310e5a58fce8d217)にある山札を利用してドラクエのポーカーを実装してみたいと思います。

通常のポーカーは基本的にplayer同士で行われますが、

* player同士のリアルタイム対戦機能が大変
* ブラフ(はったり)が一切なくなる
* 強いカードと思わせ、相手を降ろして勝つ
* 弱いカードと思わせ、相手により多くのお金を賭けさせる

こういった理由からplayer同士のポーカーではなく、
ドラクエのポーカーのような一人用のゲームを実装していこうと思います。

## ゲームの流れ

ポーカーで役を作る → ダブルアップゲームでスコアを倍にしていく
というのが基本的な流れです。

## 機能要件

### 基本

* デッキはポーカー、ダブルアップゲーム共に毎回リセット
* プレイヤーの初期スコアは0
* ポーカー終了後、1ペア以上の役があればダブルアップゲームスタート
* ジョーカーはなし

### ポーカー

1. 5枚のカードが配られる

元記事を表示

anacondaなしでVSCodeとSpyderを使いたい!!!

anacondaを使わず、初心者の頃から慣れ親しんだSpyderを使いたい。その備忘録です
これでSpyder 5.0.0.dev0(Python 3.8.2)が使えます。
テスト環境(前提として入っているもの)
Windows 10(64bit)
version:1909
OS build:18363.836

VisualStudioCode
version:1.45.1

Python 3.8.2
*****
https://github.com/spyder-ide/spyder
zipを任意の場所に解凍するかcloneします

必要なモジュールをインストールしていきます。自環境での必要だったものを纏めました。

“`requirements.txt
PyQt5
qtpy
chardet
atomicwrites
psutil
zmq
pickleshare
qtawesome
pygments
qtconsole
docutils
jinja2
sphinx
qdarkstyle
diff_match_patch
intervaltree
cloudpickle
wa

元記事を表示

3D U-Net Convolution Neural Network with Keras で躓いたとこ

Kelasで3D U-Net ([3DUnetCNN](https://github.com/ellisdg/3DUnetCNN))を試してみようと思い、githubに示されているのデータセットと一緒にダウンロードした。
途中、`ANTs`の`N4BiasFieldCorrection`をダウンロードしてインストールしろとあるが、[Anacondaのconda](https://anaconda.org/Aramislab/ants)を使って入れた。

## ひとつめの躓き
指示の通りサブディレクトリの `brats` で `python`から
`from preprocess import convert_brats_data`

と打ったら
>AttributeError: module ‘keras.backend’ has no attribute ‘set_image_dim_ordering’

と言われてしまう。
ググると、どうやら最近の`keras.backend`には`set_image_dim_ordering`が無いらしく、代わりに`keras.backend.c

元記事を表示

OTHERカテゴリの最新記事