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

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

学習するDiscord Botを作る 1.

#The introduction

  会話を記録していくChatbotを作ります。個人的な使用ならば問題無いでしょうが会話内容がファイルに残るので一応プライバシー等に注意してください。
###今回やったこと
  とりあえずdiscordのChatbotを何か作りたいと思い立って、会話の中で成長する比較的単純なbotを作りました。
###どうしてそれをするのか
https://medium.com/@kirkouimet/my-conversation-with-an-artificial-intelligence-about-coronavirus-covid-19-742c0dd9abbe
この記事に感銘を受けて、私も最終的にこれに似たものを作りたいと思いました。今回これを作ったのには二つの目的があります。一つにはChatbotのAIを作るための第一歩、チャットでランダムに振る舞うbotを作ること、もう一つには自動的に人間が作った文章を記録しデータセットとして残すこと。実際にAIの学習に使うデータセットを作るためにはこのbotで集

元記事を表示

Python3 `\x24`について

pythonは`$` (つまり`\x24`)を予約して使ってるので注意が必要.
例えばre.search()で`\x24`はヒットしない(エスケープすればもちろんヒットする)

“`python
import re
# Doesn’t match
target = b”\x00\x01\x24\x03\x04\x05″
kwyeord = b”\x01\x24″
r = re.search(keyword, target)
print(r) # -> None
“`
“`python
import re
# Does match
target = b”\x00\x01\x24\x03\x04\x05″
kwyeord = b”\x01\\x24″ # ESCAPING WITH `\`
r = re.search(keyword, target)
print(r) # -> <_sre.SRE_Match object; span=(1, 3), match=b'\x01$'>
“`

参考: https://www.python.org/dev/peps/pep-0215/#

元記事を表示

atomのautocomplete-pythonが動かなかった時の対処法メモ

atomを使ってpythonの環境構築をしていたときに、packegeのautocomplete-pythonがうまく動かず、
調べてもパッと出てこなかったのでとりあえず日本語で残しておこうと思います。

内容はここに書いてあることと同じ。
https://stackoverflow.com/questions/44602603/atom-ide-autocomplete-python-not-working/52023811#52023811?newreg=45250004097448b89124410714d158d6

# 前提
OS:macOS Catalina 10.15.5
pythonバージョン:3.8.5
atom:1.49.0×64
autocomplete-python:1.16.0

# 起こったこと
### 期待していた状態
autocomplete-pythonが正しく動作していれば、
例えばpythonファイルを開いて「i」と打った時に下の画像のような感じでpythonのキーワードが候補として出てきます。
![image.png](https://qii

元記事を表示

通勤時間でまだそんなに消耗してるの?〜無料でWEBアプリ(時給計測シミュレーター)作った〜

# 前置き
タイトルは釣りです。リモートワーク関連に期待された方はすみませんorz
内容は一年前に作った動的っぽい挙動をする静的サイトをwebアプリにしたという内容です。ご了承ください。

↓前回
【客先常駐SES向け時給シミュレーターを作る(やだ・・・あたしの年収低すぎ・・・?)+転職についての雑記】
https://qiita.com/lunalice/items/c788b82ba52ad940ac9c

最近また転職について考える事があって、前回と違って今回はそれなりにエンジニア職っぽい事を経験してやれる事は増えてるはずなんですが、プロジェクト内のコミットは持ってこれないし、何かしら作れるという事をアッピルするために何かちょいちょいコミットしておきたいなぁと思って今回2回目の作成物です、1回目はまた別記事にする予定。

# 本題
先に作成物から。

¥Time-Is-Money$
https://re-time-is-money.herokuapp.com/

元記事を表示

kleeでパスワードを言い当てる

# はじめに
kleeなるものがあると聞き,パスワードの特定をやってみたので備忘録を残す.具体的なところは全く理解できていないので,とりあえず動いたところまで.

# 解いてみる問題
kleeチュートリアルの[Using symbolic environment](https://klee.github.io/tutorials/using-symbolic/)に紹介されている`check_password()`関数をターゲットにしてみた.
この関数はパスワード`hello`を入力すると1を,それ以外の場合は0を返す.

“`c:password.c
#include

int check_password(char *buf) {
if (buf[0] == ‘h’ && buf[1] == ‘e’ &&
buf[2] == ‘l’ && buf[3] == ‘l’ &&
buf[4] == ‘o’)
return 1;
return 0;
}

int main(int argc, char **argv) {
if

元記事を表示

Qiita記事のタグからNetworkXを使ってグラフを描画してみた

# はじめに

前回の記事([Qiita記事のタグからTreemapを描画してみた](https://qiita.com/Blaster36/items/8fe99c2d861476ba52cc))では、Qiita記事に付与されたタグを取得し、Treemapを作りました。
今回はそれらタグ間の関係性に着目して、[グラフ](https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E7%90%86%E8%AB%96)を描画します。

最終的に、以下のようなモノを作ります。
![trends_of_qiita_networkx_shortver2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685193/d07c9c11-b4f1-82d3-7ea0-d74c9688be78.png)

## 本稿で紹介すること

– Qiita APIからの記事情報の取得
– グラフの描画

以下のリンク、4つ目に掲載されたCodeを見本とし、Qiitaの記事を

元記事を表示

Pythonでnetkeibaの一年分の全レース結果をスクレイピングするbotを作成した話

#はじめに
前回のエントリ
[競馬データの収集、分析、そして大金を失う迄 その2]
(https://qiita.com/kuri_tter/items/5650a36d88629a1afdde)
で書いた通り、今回は[netkeiba.com](https://www.netkeiba.com/)の一年分の全競馬場の全レースを取得するプログラムについての説明です。
前回は日本ダービーを題材に、レースデータをスクレイピングする方法について説明しました。
ここまでいけば、各レースのhtmlをを順繰りで巡回させることができれば全てのレースを自動でスクレイピングすることが可能となります。

#netkeiba.comのraceidの法則
netkeiba.comではraceidに紐づける形で、urlを生成されています。
日本ダービーのurlをみてみましょう。
https://race.netkeiba.com/race/result.html?race_id=202005021211
末尾の’202005021211’という部分がraceidになります。
このraceidは下記の法則の元に振

元記事を表示

動画ファイルのシーン画像抽出

# 概要

動画ファイル中の画像で、イメージハッシュが大きく異なる画像を抽出する処理を作成した。

# 処理手順

1. 動画ファイルをOpenCVを使ってフレーム単位で読み込み
2. OpenCV形式をPIL形式に変換
3. 変換したファイルのImageHash(アルゴリズム dhash)を取得
4. 直前のフレームのイメージハッシュと比較し、閾値以上の場合、画像ファイルを作成
5. 2~4を繰り返す

# 結果
閾値を30にしたところ差分の大きい画像のみ抽出できたが、1場面で複数の画像が抽出される。
画像数を減らしたいのであれば、閾値を上げる必要がある。

# 感想
閾値30では同一場面で複数枚の画像が出てきてしまうため、1場面1画像とするのであれば閾値を大きくしたほうがよさそう。
動画ファイルからの画像の抽出、OpenCV形式→PIL形式変換を理解できた。

# ソースコード
https://github.com/kd-ny/AnimeSceneExtractor/blob/master/main.py

元記事を表示

【Emacs】Pythonの自動補完パッケージjediのインストールで困った話(mac)

# はじめに

・環境
macOS Mojave 10.14.6
GNU Emacs 26.3

macでemacs-jediを導入しようとしたところ、ハマりました。
もともとjediを使用していたのですが、python自体の環境が変わったのに伴い再インストールを試みました。
そういえば最初にインストールした時も、大変だった記憶があります。

ちなみに、もともとの設定はこちら。

“`emacs-lisp

(add-hook ‘python-mode-hook ‘jedi:setup)
(setq jedi:complete-on-dot t)
“`

macとjediは相性が悪いのか、例えばこんな情報もあります。
https://github.com/tkf/emacs-jedi/issues/346

また、デフォルトではvirtualenvのpythonを見に行くというのもややこしい…。

# その時の状況

jedi自体のインストールは`M-x package-list-package`から問題なくできたのですが、`M-x jedi:install-server`でエ

元記事を表示

Pythonのpropertyについてまとめ

# 概要
– pythonのpropertyについて理解が怪しかったので例を交えて整理しておく目的で記事を書きました

# 例題
– 下記コードを例に説明していく

“`python

class Dog(object):
def __init__(self):
self.name = ‘John’

dog = Dog()
print(dog.name)
“`

## 何も設定しない場合
– 例題に記載してある通りのコードを実行する
– outputは”John”となる

## class変数を下記に変更

“`python

class Dog(object):
def __init__(self):
self.__name = ‘John’

dog = Dog()
print(dog.name)
“`
上記のoutputは下記となる

“`
Traceback (most recent call last):
〜(省略)〜
print(dog.name)
AttributeError: ‘Dog’ object

元記事を表示

OpenPoseのPython APIの使用方法

OpenPoseのPython APIを触ってみたので、備忘録がてら書きます

Python APIの導入手順は以下の記事で解説しております
https://qiita.com/hac-chi/items/0e6f910a9b463438fa81

公式のPython APIサンプルコードはこちらにあります
サンプルコードを解説しているだけですので、ソース読んだ方が速い方はそちらを参照したほうが良いと思います
https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/examples/tutorial_api_python

#OpenPoseの開始

“`Python
# Starting OpenPose
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()
“`

のようにして、使用を開始します

ここで渡している`params`は、辞書型です。
OpenPose

元記事を表示

新型コロナウィルスに結合するaptamer DNAを取得するためのシュミレーション

#はじめに

新型コロナウィルスに結合するDNAアプタマーを取得しようと思って実験しています。DNAアプタマーとは、特定の何かに強く結合するDNAのことで、基本的には一本鎖DNAです。結合する配列が得られれば、ウィルスの検出や治療など、様々な方面で利用できるかもしれません。

一本鎖DNAは、化学的に合成することができ、合成受託会社から買うことができます。購入時、DNA配列の中央部分をランダムな配列にしておきます。A、C、G、またはTをNで表すことにすると、例えばランダムな20塩基は、N20と表せます。ランダム配列は、20塩基程度の2つの別の配列で挟み込むようにしておきます。これら2つの配列は後にPCR増幅する時に必要です。ランダムな配列をN20とすると、配列としては全部で4の20乗つまりおおよそ10の12乗(2の10乗は1024、つまりおよそ10の3乗)の種類(=1兆種類)があることになります。色々な配列が混ざり合ったものをDNAプールと呼びます。

現在行なっているのは、新型コロナウィルスのスパイクタンパク質に結合するDNAアプタマーの取得です。スパイクタンパク質(こちらも買うこと

元記事を表示

AtCoder Beginner Contest 174

##[A – Air Conditioner](https://atcoder.jp/contests/abc174/tasks/abc174_a)

“`C++:C++
#include
#include
#include
#include
#include
#include
#include

#include
#include
#include

#define rep(i,n) for(int i=0; i<(n); ++i) #define pai 3.1415926535897932384 using namespace std; using ll =long long; using P = pair;

int main(int argc, const char * argv[]) {

int X;
cin >> X;

if(X>=30)

元記事を表示

エイシング プログラミング コンテスト 2020

##[A – Number of Multiples](https://atcoder.jp/contests/aising2020/tasks/aising2020_a)

“`Python:Python
import queue
from math import floor
from decimal import Decimal

L, R, d = list(map(int, input().split()))

c=0
for i in range(L, R+1):
if i % d == 0:
c+=1

print(c)
“`

##[B – An Odd Problem](https://atcoder.jp/contests/aising2020/tasks/aising2020_b)

“`Python:Python
N = int(input())
A = list(map(int, input().split()))

c = 0
for i in range(N):
if (i + 1) % 2 == 1 and A

元記事を表示

AtCoder Beginner Contest 169 B問題「Multiplication 2」解説(Python3,C++,Java)

AtCoder Beginner Contest 169 B問題「Multiplication 2」の解説を行います。

>問題URL :
https://atcoder.jp/contests/abc169/tasks/abc169_b

#問題概要
$N$個の整数で構成された数列 ($A_1,…,A_N$)が与えられる。
$A_1×…×A_N$, つまり

“`math
\prod_{i=1}^{N} A_i
“`

を求めよ。ただし、この値が$10^{18}$を超える場合は`-1`と出力せよ。

##制約
・$2 \leq N \leq 10^5$
・$0 \leq A_i \leq 10^{18}$
・入力は全て整数

#解説
この問題ですが多倍長整数の知識が必要な問題でした。これらの数列の値を、`int`型で入力しかけ算をするとオーバーフローが発生してしまいます。また、制約が$10^{18}$までであることから、`long int`型で入力しかけ算をしてもオーバーフローが発生してしまいます。

従って、何かしらの対策をしな

元記事を表示

pythonで小さい浮動小数値を扱う

#はじめに
自分用メモです。
python3でシミュレーションをしていて問題に当たりました。問題が起きた部分を、簡単にすると以下のコードのようになります。

“`py

def f(a):
return 1 – (1 – a)**0.5

f(0.00000000001)
# 5.000000413701855e-12
f(0.000000000001)
# 5.000444502911705e-13
f(0.0000000000001)
# 5.007105841059456e-14
f(0.00000000000001)
# 4.9960036108132044e-15
f(0.000000000000001)
# 5.551115123125783e-16
f(0.0000000000000001)
# 0.0
f(0.00000000000000001)
# 0.0
“`

数学的に言えば、関数fは引数aの値が0に向かって小さくなるにつれて、返り値が0に近くはずですが、aが0でない限り、結果は0にならないはずです。数値計算の限界として、ある程度aが小さくなった時に

元記事を表示

Pythonでビーチボール(=地震の発震機構)を書く!

#はじめに
本当はQGISのプラグインの作り方にしようと思っていたけど、思っていたより不便で残念な出来だったのでガラッと変えました。
発震機構をQGISに落とし込もうとする人はいないのかもしれませんが、別の研究・調査に彩りを添えるのにいかがですか??
GMTでいいじゃん、、、って話ですが、QGISにさえ落とし込めればコマンドをいちいち打ったりしなくて良くなるのがGOODポイント。特にプレート境界とかの広い領域の話のときは拡大・縮小ができて移動もシームレスなのがよい点です。

###バージョンなど
・python3 == 3.7.6
・QGIS3 == 3.14.1

ビーチボール作成には[obspy](https://docs.obspy.org/) を使います

#データのダウンロード
どこからでも良いですが、無難に気象庁からCMT解をzipファイルでダウンロードします
http://www.data.jma.go.jp/svd/eqev/data/bulletin/cmt.html

#プログラムの方針
データを整形し、QGISに読み込ませるデータを絞る。データ内にsvgファイ

元記事を表示

Pythonプログラミング:ウィキペディアのデータを使ってword2vecをしてみる{4. モデル応用編}

# はじめに

4本立ての記事、4本目(最後)です。

1. [データ取得&前処理編](https://qiita.com/Blaster36/items/84b1af5802f150017d84)
2. [モデル作成編](https://qiita.com/Blaster36/items/810869c8c622fc0d1091)
3. [モデル利用編](https://qiita.com/Blaster36/items/3e37282425587127fc1c)
4. モデル応用編 ★本稿

## 本稿で紹介すること

– word2vecモデルの応用

以下のリンク、5つ目に掲載されたCodeを見本とし、筆者が作ったword2vecモデルを使って試行しました!

[word2vec](https://code.google.com/archive/p/word2vec/)
[Word2vec Tutorial](https://rare-technologies.com/word2vec-tutorial/)
[Deep learning with word2vec and ge

元記事を表示

SoxとPythonでステレオをモノラルに一括変換

#ステレオモノラル一括変換
pythonでフォルダ内のファイル全て取得して、
soxでステレオモノラル変換させる。

“`terminal
brew install sox
““

“`python
# USAGE
#python streo2mono.py input output
#python streo2mono.py FOLDER_PATH
import subprocess
import sys
import os

file_path = sys.argv[1]
output_path = sys.argv[2]
file_list = os.listdir(path=sys.argv[1])

cmd_mkdir = “mkdir %s” % (output_path)
subprocess.call(cmd_mkdir, shell = True)

for i in range(len(file_list)):
if(file_list[i]==”.DS_Store”):
print(“find DSSTORE”)
else:
inpu

元記事を表示

trimeshでgltf/glbをnaiveにloadするとtransform nodeが反映されない問題とその対処法

## はじめに

Pythonでgeometry file (`.obj`, `off`, `.glb`など)を読むときにtrimeshというlibraryを使うことが多いと思います。

https://github.com/mikedh/trimesh

例えば、`trimesh.load()`を用いれば、以下のように容易にfileを読むことができます。

“`py
import trimesh

filename = “yakiniku_tabetai.obj”
geom = trimesh.load(str(filename), process=False) # trimesh.Trimesh
print(geom.vertices)
“`

この関数は基本的に`trimesh.Trimesh`を返すのですが、
fileの拡張子が`glb`(もしくは`gltf`)の時には`trimesh.Scene`というScene Graphを保持するclassのobjectを返します([Documentation](https://trimsh.org/trimesh.scene.sc

元記事を表示

OTHERカテゴリの最新記事