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

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

素因数分解を O(n^(1/4)) でする

# 素因数分解を O(N^(1/4)) でする

自然数 $n$ を $O(n^{\frac{1}{4}})$ で素因数分解します。

## ナイーブな実装

自然数 $n$ を素因数分解するとき、ナイーブな実装としては、 $n$ の平方根まで順次割っていく方法があります。この方法では $O(\sqrt{n})$ の計算量が必要となり、大きい $n$ に対しては非効率です。

# 素数判定
まず、自然数の素数判定を高速に行うことを考えます。ここではミラー・ラビン法と呼ばれるものを使います。まず、フェルマーの小定理を復習しましょう。

## フェルマーの小定理による判定
フェルマーの小定理により、素数 $p$ と、 $p$ と互いに素な自然数 $a$ に対して下記が成立します。
$$ a^{p-1} \equiv 1\ ({\rm mod}\ p) \tag{1}$$

対偶を取ると、ある $a$ について
$$ a^{n-1} \equiv 1\ ({\rm mod}\ n) \tag{2}$$

が成立しなければ $p$ は素数でないことが分かります。逆に、たくさんの $a$ につ

元記事を表示

Pythonのbinaryデータの扱いで詰まった話

こんにちは。
この記事では、Pythonでバイナリーデータを扱う際に躓いた点を共有させていただきます。

##バイナリデータを扱う際のテンプレート文
はじめにバイナリーデータを開く関数を用意する。(numpy 読込済)
※本題ではありませんが、私の場合はdtypeのエンディアン設定でもよく躓きます。

“`python
def open_grd(gpv_file):
with open(gpv_file, ‘rb’) as ifile:
data = np.fromfile(ifile, dtype=’>f’, sep = ”)
return data
“`

##本命の部分
ここで返ってきたデータを図化するために、データを格子系に整形を行う。
前提条件として、下記の条件に則ってデータが格納されていると考える。

“`Python
data_info = {
‘nx’ : 150,
‘ny’ : 100,
‘data_path’ : ‘./your_data.grd’
}

data = open_grd(gpv_file).reshape(ny,

元記事を表示

pythonでLDAPにデータの追加取得をする(WriterとReader編)

# はじめに
[前回](https://qiita.com/mink0212/items/03c653dad49d05811a2e)はLDAPの追加と取得を行いました。今回は、WriterとReaderを使用した追加と取得の方法をまとめます。

# 環境
– python:3.6.5
– ldap3:2.7
– イメージ:osixia/openldap

# LDAP操作
## Readerを使用したLDAPの読み込み
ldap3には色々な機能を持ったReaderクラスがあります。それを使用してLDAPの情報を取得します。Readerにはコネクションとオブジェクトとcn(検索パス)が必要になります。例は基本的に上から順に続きものとして記載しています。

### オブジェクトの生成
オブジェクトはObjectDefクラスに対象のオブジェクト名とコネクションを渡して生成します。今回は、cnの値を取りたいため“`inetOrgPerson“`を指定します。ouを取得したいときは“`organizationalUnit“`など取得したい対象を指定します。

“` main.p

元記事を表示

Pythonメモ(文法)

#はじめに
Pythonの環境構築などは他の記事を参照してください。
何回かに分けてPythonの基本文法を記述します。
この記事で扱うコードは分量が少ないのでインテラクティブシェルで実行します。
全てのコードはターミナルで動作確認を行っています。
この記事を読めばとりあえず関数を使えるようになるとは思います。

##この記事で出てくる関数
print()関数
input()関数
int()関数
str()関数
float()関数
len()関数
##コード

###print()関数
まずはいちばん最初に書くであろうprint関数
注意点は文字列型を表示するとき`’ ‘(引用符)`で表示したいものを挟むことでしょうか?

~~~python:example1.py
print(‘Hello World!’)
~~~

~~~python:result
Hello World!
~~~

`\n(バックスペースn)`を添えて改行もできます。

~~~python:example2.py
print(‘Hello\nWorld! ‘)
~~~

~~~python:result
H

元記事を表示

Pythonについての学習メモ

#自己紹介
趣味でPythonをいじっている大学一年生です。
特に話すことがないのでこれで紹介は終わり。
休日に勉強したこと、大学の講義で勉強したことを主に記録していきます。
基本的に書籍を使って勉強しています。
##使用PC、Pythonのバージョン、環境
MacBook Pro (Retina, 13-inch, Late2013)
Python 3.7.3
Jupyter notebook(使いがち/起動までが遅い)
VS code(たまに使う/使いやすい)
Google Colaboratory(書籍で使用していたので使用/起動までが楽)
ターミナル
##現在所持している書籍
[いちばんやさしいパイソンの本Pythonスタートブック[増強改訂版]](https://honto.jp/netstore/pd-book_28912467.html)
[退屈なことはPythonにやらせよう](https://honto.jp/netstore/pd-book_28393889.html)
[Python言語の基本から仕事のやり方まで 独学プログラマー](https://honto.j

元記事を表示

amazon linux2上でのPython環境構築方法

メモとして残しておく

“`sh
# Amazon Linux コンパイラ周りのインストール
yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel xz-devel

## pyenvのインストールとpath通す
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_profile
echo ‘eval “$(pyenv init -)”‘ >> ~/.bash_profile
source ~/.bash_profile

## pythonのインストール
pyenv install 3.8.1
pyenv global 3.8.1
“`

Pythonのvers

元記事を表示

Python によるアービットラージ仮想通貨Bot作成 その1

#アービットラージとは

相場の差分を取る取引手法
価値が確認された時のみ取引を行う

特徴;将来の予測ではなく、現時点の相場間の差分を取るため”負けない”手法を作成できる。

特に差分が発生しやすい仮想通貨に関してその可能性について検証していく。

#基本情報の確認

仮想通貨の流通量:Volume
取引の際の約定可能性、変動性等の確認のために各仮想通貨の流通量を確認する
https://coinmarketcap.com/ja/

#取引所の選択
実際の取引所を決めるための取引量を確認する
先行して変動する取引所と、遅れて変動する取引所を抽出するのも一つの観点となる
ちなみに日本人の利用を制限している取引書があるので注意
(2020/2/11時点で、Binanceは日本人の利用を停止するとのアナウンスがあった)
https://coinmarketcap.com/ja/rankings/exchanges/

bkex.com : Trading fee: maker 0.15%; taker 0.2%.
bilaxy.com ; Trading fee:0.1% transa

元記事を表示

Kaggle COVID19 Global Forecasting

Kaggle で公開されているデータ・セットで日本の情報を得る方法です。

[COVID19 Global Forecasting (Week 2)](https://www.kaggle.com/c/covid19-global-forecasting-week-2)

データの読み込み

“`text
data = pd.read_csv(‘../input/covid19-global-forecasting-week-2/train.csv’)
“`

今までの日本の感染者数の表示 (3月25日で 1307 人)

“`text
data.loc[data[‘Country_Region’] == ‘Japan’]
“`

![kaggle_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/60f2c76b-5cae-ded3-557d-1a5d9cf6837d.png)

今後の感染者数の表示 (ある方が作成したモデルを使った場合)

“`text
test_dat

元記事を表示

Python、辞書型についてメモ

#python辞書型についてメモ

“`py
dic = {“みかん”:2,”りんご”:10,”いちご”:2}
“`

keyを取り出す

“`py
dic.keys()
“`

“`py
dict_keys([‘みかん’, ‘りんご’, ‘いちご’, ‘メロン’])
“`

値を取り出す

“`py
dic.values()
“`

“`py
dict_values([2, 10, 2, 44])
“`

キーと値の両方を取り出す

“`py
dic.items()
“`

“`py
dict_items([(‘みかん’, 2), (‘りんご’, 10), (‘いちご’, 2), (‘メロン’, 44)])
“`

for文でキーと値の両方を取り出す

“`py
for i,k in dic.items():
print(i,k)
“`

“`
みかん 2
りんご 10
いちご 2
メロン 44
“`

新たなキーと値を追加する。

“`py
dic[‘ぶどう’] = 10
dic.items()
“`

“`py
dict_item

元記事を表示

【Selenium】リンクを新しいタブで開いて移動【Python/ChromeDriver】

#ブラウザ操作してますか?
毎日同じブラウザ操作してませんか?

そんなブラウザ操作はSeleniumに任せましょう!

ブラウザを触っているときにリンクをCtrlを押しながらクリックして新しいタブで開くことありませんか?
僕はとてもよくやりますw

そんな一連の流れになります。

#リンクを新しいタブで開いて移動

“`python:sample.py

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

import platform

driver = webdriver.Chrome(“chromedriver.exe”) #chromedriver.exe読み込み

#
#
#該当ページまでの処理
#
#

#クリックする要素
e

元記事を表示

Kaggle ConnectX

次の課題に submit するまでの流れです。
[Connect X](https://www.kaggle.com/c/connectx)

次のページの通りに行いました。
[ConnectX Getting Started](https://www.kaggle.com/ajeffries/connectx-getting-started)

Kaggle の Notebook でコードを書き、コードをダウンロードして、
次のように、py に変換しました。

“`bash
jupyter nbconvert –to script kernel1290ab112b.ipynb
“`

“`py:kernel1290ab112b.py
#!/usr/bin/env python
# coding: utf-8

# In[1]:

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docke

元記事を表示

topic、projectID、サービスアカウントキーなどをexportせずに、GCP Pub/Subのtopicにメッセージをpublishする(python3)

env.pyで環境変数など設定すれば、コマンドでのexportを実施せずに済みますので、楽です!

ポイント:

*サービスアカウントキーファイル(jsonファイル)はenv.py、publish.pyと同じディレクトリに置いておくと、便利です!

*リクエストを Pub/Sub サーバーに送信する際に、
“`publisher = pubsub_v1.PublisherClient()
“`
を使わず、

“`publisher = pubsub_v1.publisher.Client.from_service_account_file(JSON_KEY)
“`
に変更すればokです!

“`env.py
# GCPサービスのプロジェクトID
GOOGLE_CLOUD_PROJECT = ‘[PROJECT_ID]’
# Cloud Pub/Subのトピック名
TOPIC = ‘[TOPIC_NAME]’
# サービスアカウントキーファイル(jsonファイル)の保存パース
JSON_KEY = ‘[PATH_TO_JSO

元記事を表示

CentOS8とDjango3とMySQL8のセットアップメモ(pure python版)

# はじめに
CentOS8を入れてみたかった。それはCentOS7のシステム側のpythonが2で、プレーンなpython環境にしようとすると、ケンカするんだよね。CentOS側のpythonが3になってAnaconda縛りから解放されるってだけでやって見る価値あるでしょってことでさくらのVPSの2台めを検証用に借りてしまった!Wow!

# 参考URL
サーバーワールド
https://www.server-world.info/query?os=CentOS_8&p=install
いままではここの内容ですら難しかったけど今なら大丈夫でしょ

# CentOS8
## サーバーの契約
わくわくするね。休日つぶしにぴったり。
いったんCentOS7を入れる必要があるみたい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/46c8d751-fcf3-48e5-2986-07bc7bce2a51.png)
## パケットフィルタの設定(Web, FTP)
teratermをつ

元記事を表示

pythonでLDAPにデータの追加取得をする

# はじめに
認証やツリー構造のデータの管理などでLDAPが使用されます。RDBと比べるとLDAPは使用される機会が少なく使用方法も異なるのでpythonでLDAPを操作する方法をまとめます。さらにLDAP認証のサンプルは色々なところで紹介されていますが、もっと簡単にするためシンプルな例を紹介します。

# 環境準備
## LDAPサーバ
LDAPサーバは、UbuntuやCentosにldapをインストールしてもできますがdockerイメージがあったため、そちらを使用します。

### dockerイメージのpull
dockerイメージは単純にpullするだけです。

“`

docker pull osixia/openldap
“`

### dockerイメージの起動
イメージの起動時にldapのパスワードとトップのドメイン、各ポートのマウントをしておきます。dockerネットワークを利用している場合は、ポートのマウントはせずにネットワークとIPアドレスの設定をします。

“`

docker run -p 389:389 -p 636:636 –env LDAP_D

元記事を表示

Kaggle Digit Recognizer

次の課題に submit するまでの流れです。
[Digit Recognizer](https://www.kaggle.com/c/digit-recognizer)

次のページを参考にしました。
[kaggle Digit Recognizer をKerasで試してみる](https://trueman-dev`eloper.blogspot.com/2019/07/kaggle-digit-recognizer-keras.html)

Kaggle の Notebook でコードを書き、コードをダウンロードして、
次のように、py に変換しました。

“`bash
jupyter nbconvert –to script kernel23614dc019.ipynb
“`

“`py:kernel23614dc019.py
#!/usr/bin/env python
# coding: utf-8

# In[1]:

# This Python 3 environment comes with many helpful analytics libraries

元記事を表示

Kivy-iOS メモ

#Kivyとは?
python3 でiOSアプリやandroidアプリなどのUIを記述可能なライブラリ

#Kivy導入時に参考にした情報をまとめておく。
###導入
– https://qiita.com/sobassy/items/b06e76cf23046a78ba05
– https://github.com/kivy/kivy-ios
– https://qiita.com/tea63/items/c318ac7a1c09a78acab0

###pathの繋げ方(エラー出た人だけ)
-https://qiita.com/yoshinbo/items/8eb71d8015291ac6a3bc

元記事を表示

【Python】Atomで競技プログラミング用の環境構築(input()使えます!)【Mac】

Atomで競プロに必須のPythonの標準入力
`input()`
が使用できる環境構築の情報がググってもあんまりなかった…
ので記事にしてみます!
たぶん全作業30分かかりません!超簡単!
ちなみにMacです。Windowでもできるかは不明!

#python3のインストール
[公式サイト](https://www.python.org/downloads/)からダウンロード
#Atomのインストール、初期設定
以下の記事が参考になりました!
[atom・pythonで競技プログラミングのテスト環境構築](https://qiita.com/crukky/items/73c1322f5929b1ca5834#%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99)
#その他やる事
ホームディレクトリ(同階層にはダウンロードとかデスクトップとかあるよ)
に「python」というフォルダを作ってそのフォルダ内に

– input.txt
– test.py

の2ファイルを作る。
これで準備完了。

イメージはこんな感じ↓
</p

元記事を表示

Python3 で 十字キーが入力された判定をとる方法

## はじめに
この記事を書いた直後に、
https://docs.python.org/ja/3/library/curses.html#constants
このページを見つけました。以下の記事はほぼほぼ虚無です。

## まえがき
自分用のメモです。愚直実装です。
やりたいことは十字キーなど特殊な文字が入力されたことを検知することです。

前提としてUnicode制御文字の知識があることが望ましいです。
[wikipedia](https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97)

## 詰まったところ
getchは入力を1文字ごとに取得します。しかし、矢印キーは3回文字分の入力がありました。 例えば上矢印は`27 91 65` とはいってきます。このままでは、矢印キーなどの特殊なキーを判定することができないばかりか、望まない入力を受け取ってしまいます。そこで、以下のように実装しました。

## ソース
getch 1文字の入力を受け取る関数
ord は文字をUnicodeに変換する関数、
chr

元記事を表示

【Python】AGC043A(問題読解力とDP)【AtCoder】

しっかり問題は読んで理解しよう!
難しい問題文に出会ってもすぐに諦めないで!

#[AGC043A](https://atcoder.jp/contests/agc043/tasks/agc043_a)
Difficulty:803
強敵!
でも以下のポイント2つをクリアすればこの問題はとける!
①問題読解力
②DP(動的計画法)

##①問題読解力
問題文の後半の「以下の操作」が頭に全く入ってこなかった!
ここでは「以下の操作」の解読をしていきます。
「以下の操作」の部分を問題より引用
>4つの整数r0,c0,r1,c1(1≤r0≤r1≤H,1≤c0≤c1≤W)を選ぶ。
r0≤r≤r1,c0≤c≤c1を満たす全てr,cについて、(r,c)の色を変更する。つまり、白色ならば黒色にし、黒色ならば白色にする。

???

諦めないで!
とりあえず具体例を考えよう!
ノートとペンを用意!
※競プロにノートとペンは必須です!
[【Python】ABC159D(高校数学nCr)【AtCoder】](https://qiita.com/rudorufu1981/items/f9f1e679606d

元記事を表示

5代血統表内に漢字の馬名が含まれるここ最近の競走馬を調べる【スクレイピング】

#はじめに
(以下、競馬用語を注釈無しで使用していきますのでご了承下さい。)

なんとなく5代血統表に漢字の馬名が入っている馬がどれくらいいるのか気になったので競馬データベースサイト[「JBISサーチ」](https://www.jbis.or.jp/index.html)のページをスクレイピングして調べてみました。

近年活躍した競走馬で、5代血統表内に漢字の馬名がある馬といえば[ゴールドシップ](https://www.jbis.or.jp/horse/0001104811/pedigree/)が一番有名でしょう。
![FireShot Capture 001 – 血統情報:5代血統表|ゴールドシップ|JBISサーチ(JBIS-Search) – www.jbis.or.jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253705/ff43ca2a-a8dc-b898-0dfa-69ffda89bbbf.png)
5代母が1959年生の「風玲」という馬です。

昔は競走馬名にカタカナ使用の制限が

元記事を表示

OTHERカテゴリの最新記事