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

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

PySimpleGUIとmultithreadを使った例

##はじめに
PySimpleGUIが使いやすいので、以前使っていたLabVIEWのデザインパターンの一つの「キューメッセージハンドラデザインパターン」を実現できないか取り組んだ結果です。

LabVIEWキューメッセージハンドラの説明
[アプリケーションデザインパターン:生産者/消費者](http://www.ni.com/tutorial/3023/ja/)
[【LabVIEW スキルアップ】デザインパターン”QMH”とは?](https://forums.ni.com/t5/LabVIEW-Caf%C3%A9/LabVIEW-%E3%82%B9%E3%82%AD%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97-%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-QMH-%E3%81%A8%E3%81%AF/gpm-p/3985209?profile.language=ja)

LabVIEWについては[Wiki](https://ja.wikipedia.org/

元記事を表示

AtCoder Beginners Contest 過去問チャレンジ6

# AtCoder Beginners Contest 過去問チャレンジ6

## [ABC090D – Remainder Reminder](https://atcoder.jp/contests/abc090/tasks/arc091_b)

a を b で割った余りが K 以上ということは、b は K + 1 以上なのが確定. b で割った余りは 0..b-1 で、この1周期に出現する K 以上の個数は b – K となる. a は N 以下なので、周期数は N / b となる. 後は周期の余りについて考える必要があるが、ところで N は1から始まるので、周期は 1, 2, …, b – 1, 0 の順となる. つまり N % b が n の場合、1, 2, …, n となり、K = 0 と K = 1 の個数が同じとなることに注意.

“`python
N, K = map(int, input().split())

result = 0
for b in range(K + 1, N + 1):
result += (N // b) * (b – K)

元記事を表示

多倍長演算の活用

# 多倍長演算の活用
Python の多倍長演算を活用して、処理の簡潔化・高速化を行う方法について書きます。

## 整数と配列の対応
Python では多倍長整数が扱えます。これを、 $k$ bitごとに区切って、それぞれが $k$ bit の整数を表していると見ることことを考えます。

具体的には、 $0$ 以上 $2^k$ 未満の要素からなる配列 $A = [a_0,\ \ldots,\ a_{N-1}]$ について、対応する整数を
$${\rm number}(A) = \sum_{j=0}^{N-1}\ a_j \cdot 2^{kj} $$
と定めます。逆に整数 $n$ について、配列 ${\rm list}(n)$ を $${\rm list}(n)[i] = {\rm int}(n\ /\ (2^{ki}))\ {\rm mod}\ (2^{k}) $$ で定義します。 $A[i]$ は $A$ の $i$ 番目の要素です。
すると ${\rm number}$ と ${\rm list}$ は互いに逆写像になり、非負整数全体と $0$ 以上 $2^k$ 未満の要素から

元記事を表示

venvによるPython仮想環境作成

# venvによるPython仮想環境作成
## venvとは
pythonの仮想環境作成ツール。
ソフトウェア開発を行う上で、使用するライブラリの依存関係を環境ごとに独立させておきたい。
venvを使うことでプロジェクトごとに仮想環境を作成でき、各仮想環境は独立したPythonバイナリとPythonパッケージを保持する。

## 使い方

### 仮想環境の作成
“`
python -m venv [venvname]
“`
※venvはpython3の標準機能なので、個別インストールは不要

### 仮想環境の有効化
“`
//Linux
source [venvname]/bin/activate
//windows
[venvname]/Scripts/activate
“`
有効化を行うことで、このディレクトリでのPython実行には仮想環境が使用される。
具体的には、インストールしたpipパッケージはこの仮想環境でのみ有効になり、
スクリプトの実行にはこの仮想環境のPythonインタプリタが使用される。

### パッケージの確認
“`
pip list

元記事を表示

AtCoder Grand Contest 過去問チャレンジ1

# AtCoder Grand Contest 過去問チャレンジ1

## [AGC003B – Simplified mahjong](https://atcoder.jp/contests/agc003/tasks/agc003_b)

同じカードで最大限ペアを作って、余ったら繰り越して、繰越分を優先して使ってることにする(つまり余った場合は今のカードの方を繰り越す)で OK なのだが、0枚のカードに繰越が来た場合、優先して使うカードがないので、そこで繰越分を捨てなければいけない. そこだけ気にすれば OK.

“`python
N = int(input())

result = 0
remainder = 0
for _ in range(N):
A = int(input())
result += (A + remainder) // 2
if A == 0:
remainder = 0
else:
remainder = (A + remainder) % 2
print(result)
“`

## [A

元記事を表示

yukicoder contest 241 参戦記

# yukicoder contest 241 参戦記

# A 1009 面積の求め方

8分半で突破. ヒント通り区分求積法でスパッと解いてみた. 区間をどれくらいの数で割ればいいのかに悩んだが、適当にえいやで4096でやったら一発目で良さげな精度が出たので、提出してみたら無事 AC.

“`python
a, b = map(int, input().split())

x = a
result = 0
t = 1 / 4096
while x < b: result += abs((x - a) * (x - b) * t) x += t print(result) ``` # B 1010 折って重ねて 41分で突破. 整数で処理するコードを書いて、なんで AC しないんだと延々と悩んでいた. アホすぎる. 縦と横で短い方を限界まで折ってから、長い方を限界まで折ればいい. ```python x, y, h = map(int, input().split()) if x < y: x, y = y, x x *= 1000 y *= 10

元記事を表示

UbuntuのPythonでSplunkの実行結果を受け取る

今回はUbuntu18.04のPython3.6.9から、Splunkのクエリを実行して結果をJSONで受け取るプログラムを作ります。

#原理

SplunkにはGUIだけでなく、外部からのクエリを受け取り実行する機能があるので、この機能を利用します。この機能の利用方法は簡単で、下のURLにユーザ名、パスワード、クエリ(SPL)、出力形式を入れてPOSTするだけです。

“`
https://localhost:8089/services/search/jobs/export
“`

#プログラムの作成

下のようなプログラムをPython3で作成しました。

“`python:splunkpost.py
import requests
import urllib

requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
postdata = urllib.parse.urlencode({“search”:”search ho

元記事を表示

AtCoder Beginner Contest 160 参戦記

# AtCoder Beginner Contest 160 参戦記

## ABC160A – Coffee

1分半で突破. 書くだけ.

“`python
S = input()

if S[2] == S[3] and S[4] == S[5]:
print(‘Yes’)
else:
print(‘No’)
“`

## ABC160B – Golden Coins

2分半で突破. 500円のほうがコスパがいいので、500円を可能なだけ、余りを5円で.

“`python
X = int(input())

result = (X // 500) * 1000
X -= (X // 500) * 500
result += (X // 5) * 5
print(result)
“`

## ABC160C – Traveling Salesman around Lake

7分で突破. ジャッジが詰まっててコードテストがなかなか実行されなくて参った. N軒全て回るということは、移動開始地点と移動終了地点の間だけ歩かなくていいということなので、それが最大

元記事を表示

製薬企業研究者ゆきやのPython記事まとめ

# はじめに

私がQiitaに投稿したPythonに関連する記事のまとめです。
今後もPythonに関する記事を追加していくごとに、こちらのまとめも更新していきます。

# 初級編

## 環境構築

– [PythonとAnacondaのインストール方法](https://qiita.com/yukiya285/items/6bc3bcef00f7d13c94f1)
– [データサイエンスで用いるPythonライブラリのインストール方法](https://qiita.com/yukiya285/items/8b80879ecf13cd3f8d5d)

## 基本的な文法・構文

– [Pythonというプログラミング言語の基本的な記述ルール](https://qiita.com/yukiya285/items/109e2d26234d80566299)
– [変数とデータ型](https://qiita.com/yukiya285/items/d63d5071ca32254b2735)
– [演算子](https://qiita.com/yukiya285/items/ac774

元記事を表示

[python]twitterのフォロー相関図を作成してみた(Gremlin編)

# 記事の内容
先日Twitterのフォロー相関図を作成する記事を書きました。

[[Python]Twitterのフォロー関係を可視化してみた](https://qiita.com/bc_yuuuuuki/items/964efd17dae53d855c8b)

上記の記事ではTwitterAPIでフォローアカウントの情報を取得しmongoDBに登録する。
その後、mongoDBからデータを取得し、相互フォローしているかを確認しながらグラフに描画するというロジックでした。

GraphDBというものを使えばネットワーク分析などに便利だということを知ったので、この仕組みをGraphDBでもやってました。

# 環境
python:3.7
gremlinpython:3.4.6
gremlin:3.4.6

## Gremlinのインストール
私はWindowsで環境を構築しました。
Windows用のツールは以下からダウンロードできます。

[https://downloads.apache.org/tinkerpop/3.4.6/](https://downloads.apache.

元記事を表示

python基本的な構文メモ


####while文
条件がTrueの間は繰り返す

“`
while 条件:
“`

####for文
イテラブルの値がなくなるまで繰り返す

“`
for 変数 in イテラブル:
“`

####条件演算子

“`
Trueの場合の値 if 条件 else Falseの時の値
“`

###リスト

“`
リスト名 = []   #空のリストの作成

リスト名.append(値)  #リストの末尾に値を追加

リスト名.insert(位置,値)  #場所を指定(インデックス)してリストに値を追加する

del リスト名[インデックス] #インデックスを指定して削除。関数ではなくステートメント

リスト名.remove(値) #値を指定して削除する

リスト名.pop(インデックス) #リストから削除してその値を取得

リスト名.clear() #全ての要素を削除

リスト3 = リスト1+リスト2 #リストを結合して新しいリストオブジェクトの作成

リスト1.extend(リスト2) #リストの連結(リスト1の拡張)

リスト名[開始値:停

元記事を表示

SQLArchemyの基本的な構文など

##SQLArchemy
SQLArchemyを少し勉強して、頭の中に入らなかったのでここに書き残しておきます

###engine
どうやってDBに接続するか、設定内容を保持したものがengine
####データベースへの接続
“`
create_engine(接続するDB,ログ出力の有効化フラグ)
“`
###クラスの定義
####テーブルの作成
“`
from sqlalchemy.ext import declarative #declartiveをインポート
Base = declarative.declarative_base() #Baseクラスを作成
from sqlalchemy import フィールド定義に使用するデータ型をインポート

class 派生モデルクラス(Base):
__tablename__=”テーブル名” #テーブルを定義
カラム名 = Column(型,オプション)
id=Column(Integer, primary_key=True)
name=Column(String(255))
def

元記事を表示

Djangoをやってみた

Djangoというがあるのを知って,まずはチュートリアルのサイトがあったので試してみた.
Python初心者なので失敗する所も多かったので振り返るためにメモ.慣れてる人々には問題ないはず.というかチュートリアル通りにMacでPythonとDjangoのバージョンも合わせたら何も問題なかったはず.

#今回やってみたチュートリアルサイト
https://djangobrothers.com/
のブログ管理サイトを作るやつ

#環境
– Windows 10
– python 3.8.1
– Django 2.0.2

*チュートリアルではPython3.6なので合わせる方が良い.最新ならいいかと思って3.8.1をインストールしていたためにエラーが出たところがあった.

#つまずいた所
1.仮想環境の作成
2.仮想環境に入る
3.pip更新
4.ディレクトリ内の表示
5.空のファイル作成
6.管理ページでエラー
7.管理ページからブログを投稿できない

#1.仮想環境の作成
“`
cd /d C:\XXX\
python3 -m venv 仮想環境名
“`
エラーすら出なかった.Pyt

元記事を表示

django-filerの紹介

# はじめに

pythonやdjangoには、先人たちが構築した様々なアプリケーションがあります。

自分で1からシステムを作るのはとても楽しく、やりがいのあることです。ただ、たまには巨人の肩に乗って景色を見てみるのも悪くないと思います。

ここでは公開されているdjangoのアプリケーション、**django-filer**について、設定を紹介します。

# システム要件

下記がインストールされていることを前提とさせてください。

* Django 2系(Django 2.1を使用)
* python 3系(python 3.7を使用)

# django-filerってこんなもの

* django-filerに画像ファイルをアップロードするデモ

![djnago-filer_0_30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302006/175ad66a-901d-a1a4-a30a-e54328927597.gif)

djangoの管理者画面で画像をアップロードすることが出来ます。

元記事を表示

onionドメインのサーバを建ててみた

# はじめに
ダークウェブについて調査することになったのですが,まずはTorサービスやオニオンルーティングについての理解を深めようということで,取り敢えずonionドメインのWebサーバを実際に建ててみました。
今回は検証用ということで,Webサーバ本体は python http server を利用します。

# 環境
“`shell:OS
NAME=”Ubuntu”
VERSION=”16.04.4 LTS (Xenial Xerus)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 16.04.4 LTS”
VERSION_ID=”16.04″
HOME_URL=”http://www.ubuntu.com/”
SUPPORT_URL=”http://help.ubuntu.com/”
BUG_REPORT_URL=”http://bugs.launchpad.net/ubuntu/”
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
“`
“`shell:Python
Python 3

元記事を表示

1日目_初心者向けデータ分析基本操作①

#①csvデータを読み込む
データ分析をするにはまずはデータを読み込ませる必要があります。
pandasというライブラリを用います。データ解析を支援する機能を提供するライブラリですが、ここでは、csvデータを読み込むにはpandasを使うのねくらいで大丈夫です。
公式ドキュメント:http://pandas.pydata.org/pandas-docs/stable/

コードはこちら

“`ruby:qiita.py
#pandasをインポートしてpdという名前をつける
import pandas as pd
#csvデータのある場所を指定し、dataという変数にcsvデータを格納する
data=pd.read_csv(‘ファイルの格納パス/ファイル名.csv’)
#csvデータが読み込めたことを確認するために最初の5行を表示する。
data.head()
“`

よくあるエラー
①ファイルが存在しない:ファイルの格納先をもう一度確認し、
今作業しているフォルダから見て今回読み込みたいcsvファイルが
どこにあるかを確認してください。

#②データの各種統計量を把握する
以下のコ

元記事を表示

素因数分解を 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

元記事を表示

OTHERカテゴリの最新記事