Python関連のことを調べてみた2020年06月07日

Python関連のことを調べてみた2020年06月07日
目次

第3回アルゴリズム実技検定(PAST)解説(Python)

Pythonでとく[第3回アルゴリズム実技検定](https://atcoder.jp/contests/past202005-open)

## アルゴリズム実技検定とは
アルゴリズム実技検定はAtCoder社が提供している競技プログラミング(アルゴリズム力)の試験。PASTはPractical Algorithm Skill Testの略。googleabilityが少し悪いですね。

通常は一般で8800円/人(税込)かかるが第3回は無料。通常のAtCoderのレーティングは相対評価の色表示だが、PASTでは絶対評価で5段階。全15問5時間なので1問あたり20分。

## 競プロ大前提復習
1GHzのCPUなら1s間にループをざっくり10^9回実行可能。実行の制限時間はものによるが2s程度。PythonはC++などと比べて速度が1/10程度、簡単なループなら最適化でもう少しはやく実行されるが、いずれにせよ10^10を越えると時間内に終わらない。

## A – ケース・センシティブ
小文字での比較. 3文字x2で一瞬なので計算量とか関係ないですね。

“`python
#!/b

元記事を表示

Python open() mode=’w’ で FileNotFound になった話

Python 3.x でファイルを扱う時は主に open(), with を使用するのだが、他の言語同様 書き込みモードというのが存在する。
ほかにも読み取り専用や追記モードなどもあるが割愛

“`python:sample1.py
file_path = ‘sample1.txt’
with open(file_path, mode=’w’) as f:
print(‘Hello Py!!’)
“`

同じ階層にファイルを作る場合、通常はこれで問題ないのだがWindows系の場合 **文字数制限** が存在する
[長過ぎるパス名にご用心 – AtFILE_Guide](https://secure01.blue.shared-server.net/www.yes-online.jp/atfile_guide/Filer_PathNameLength.html#:~:text=Windows%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AE,%E6%96%87%E5%AD%97%E3%81%A8%E

元記事を表示

Pythonの同じライブラリの複数versionを使いたい時(venvを使った仮想環境)

# なぜ仮想環境が必要なのか?
Pythonでは、1つの環境に同じライブラリの複数バージョンをインストールできないため、1つのバージョン飲みになってします。
例えば、ライブラリ1を使うプログラムAとライブラリ2を使うプログラムBがあるとします。この時、プログラムAかBは動かなくなってしまいます。

# Pythonで仮想環境を使うには
vencという標準モジュールを使うと仮想環境を作るkとができます。

## 仮想環境の使い方
macOSの場合

“`bash
$ python3 -m venv 環境名
“`
をすると、カレントディレクトリに環境名のディレクトリが作成されます。ディレクトリの名前は自由に設定できる

### 仮想環境を有効
activateスクリプトを実行する

“`bash
$. 環境名/bin/activate
“`

### 仮想環境を無効
“`bash
(環境名)$ deactivate
“`

仮想環境自体が不要になった場合はディレクトリを丸ごと削除する

元記事を表示

AWS IoT SDK for Python v2でフリートプロビジョニング

AWS IoTのフリートプロビジョニング機能が面白そうだなぁと思って[AWS IoT Device SDK for Python](https://github.com/aws/aws-iot-device-sdk-python)のGitHubのREADMEを眺めていると
**## New Version Available**
の文字が!!!

AWS IoT SDK for Python v2が出てました。
https://github.com/aws/aws-iot-device-sdk-python-v2
(呼び方は`AWS IoT SDK for Python v2`なのか`aws-iot-device-sdk-python-v2`なのか`AWS IoT Client SDK for Python`なのかよくわかりません)

READMEによると

> This SDK is built on the AWS Common Runtime, a collection of libraries written in C to be cross-platform, high-pe

元記事を表示

【python】TypeError: ‘NoneType’のエラー原因と対処法まとめ

#【python】TypeError: ‘NoneType’ object is not iterableの原因と対処法

再帰関数を書いているときにハマったのでその対処法。

“`:発生したエラー
TypeError: ‘NoneType’ object is not iterable
“`

上記以外でも「NoneTpye」を含むエラー全般の発生原因と対処にも役立ちます。

“`:その他のエラー例
・can only concatenate list (not “NoneType”) to list
・can’t multiply sequence by non-int of type ‘NoneType’
・unsupported operand type(s) for +: ‘NoneType’ and ‘list’
など、、、
“`

結論は2点。

**①戻り値(return)のない関数の実行結果は「値None, タイプNoneType」になる。**

**②関数を変数に代入する場合は、その関数にreturnがあること。**
 └ printではだめ。(

元記事を表示

ゼロから始めるLeetCode Day49 「1323. Maximum 69 Number」

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

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

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

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

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

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

前回
[ゼロから始めるLeetCode Day48 「26. Remove Duplicates from Sorted Array」](https://qiita.com/KueharX/items/f234d8beab96328a171a)

今はTop 100 Liked Que

元記事を表示

【python】isinstanceのエラー「isinstance() arg 2 must be a type or tuple of types」の対処法

#【python】isinstanceのエラー「isinstance() arg 2 must be a type or tuple of types」の対処法

isinstanceで下記エラーが出た場合の原因と対処法。

“`
TypeError: isinstance() arg 2 must be a type or tuple of types
“`

##発生状況
2つ目の引数が型(type)になっていないとのエラー。
正しく型(list)を設定しているのに発生。

“`python:
arr = [1,2,3]

#2つ目の引数で「list」を指定している
if isinstance(arr, list):
print (“YES”)

#TypeError: isinstance() arg 2 must be a type or tuple of types
“`

##原因
このコードより前に、listという変数を設定していたため。
list=型ではなく、list=変数になっていた。

##対処
対応方法は2つ。
①型と同じ名前の変数を使わない。

元記事を表示

Firefoxに保存されているログインデータを解読してみる

# はじめに
[Chromeに保存されているパスワードを解読してみる](https://qiita.com/Pavaux/items/9bf7597e2697bb6decc0)
[IE/Edgeに保存されているログインデータを出力してみる](https://qiita.com/Pavaux/items/be22d7c0e293d7f5212f)
に引き続き、今回はFirefoxがどのようにWebサイトのログインデータを保存しているのか調べてみました。

# Firefoxのログインデータの保存方法
調べてみたところ、FirefoxはNSS(Network Security Services)と呼ばれるライブラリを使用してユーザー名とパスワードを暗号化し、Base64エンコードしてプロファイルフォルダのlogins.jsonに保存していることがわかりました。

プロファイルは
ユーザーフォルダ\AppData\Roaming\Mozilla\Firefox\Profiles
でフォルダごとに管理されています。
また、NSSライブラリは、Firefoxをインストールしたフォルダ\nss3.

元記事を表示

PythonでFirebase Authenticationのトークン発行とFastAPIでトークン検証

# やること

FirebaseとFastAPIを用いて、クライアント側でトークンを取得し、自前のAPIを叩くときにヘッダーに貼り付け、サーバーサイドで検証することでログインしているかどうかを検証します。ここではGoogle謹製の`firebase_admin`を用いてトークンを検証します。

# トークンを発行する

FirebaseコンソールのAuthenticationでパスワードログインを有効にし、以下のような適当なアカウントを作ります。ここではこれを用いてログインします。

“`python
EMAIL = ‘test001@example.com’
PASSWORD = ‘password’
“`

必要なものをインストールします。

“`
$ pip install requests
“`

firebaseコンソールから以下のようなJSONを取得し貼り付け良い感じに成形します。(実際に使うのは`apiKey`のみ)

“`python
CONFIG = {
“apiKey”: “YOUR API KEY”,
“authDomain”: “YO

元記事を表示

Django と Let’s Encrypt でHTTPS

# はじめに

私にしては珍しくPythonを使います。仕事でPythonでWebアプリを作成しなければならず、Djangoを使いました。
Djangoは初めてだったんですが、思いのほか使いやすいフレームワークだと感じました。優れたフレームワークと親切なチュートリアルがあると、言語仕様の違いはあまり気にならないものです。

仕事で構築したのはHTTPでしたが、Let’s EncryptでHTTPS化をやってみようと思い、この稿を立ち上げました。

# サーバーの構築

## AWSのEC2サーバーを作成する

今回はUbuntuにしました。Amazon LinuxはCentOSベースだと思うのですが、sqliteのバージョンが低くてDjangoが起動できないので。

– AWSコンソールにサインインし、「インスタンスの作成」を実行します。

django_https_1.PNG【備忘録】レンタルサーバー「CORESERVER」にPython環境構築

#概要
以下の環境で、Python開発環境を構築する。
– サーバ:CORESERVER
– クライアント:Windows8.1

#手順
## CORESERVERを借りる
– https://www.coreserver.jp/
– 30日無償版を使用
– ドメインを取得すると有料になるので、外した

## CORESERVERの設定
– 参考:https://techacademy.jp/magazine/22347
– コンパネの仕様が変わったためか、以下のように読み替えた
– コンパネ ⇒ サーバー ⇒ コアサーバ ⇒ 旧コンパネ ⇒ ホスト登録情報 ⇒ 「FTP登録」「SSH登録」ボタンを押す
– 新コンパネに切り替え ⇒ サイト設定 ⇒ 規定のサイトを選択 ⇒ サイト設定のIPを記録(※1)⇒FTP/SFTP接続情報のアカウント(※2)、パスワード(※3)を記録

## Windows環境の設定

### PuTTY(SSH接続ツール)インストール
– 参考:https://tipszone.jp/20111205_putty-winscp/
– 接続情報は※1~※3を

元記事を表示

pandas.Dataframeからスプレッドシートに簡単に反映するgspread-dataframeライブラリ

gspread-dataframeライブラリについて日本語の文献が少ないと感じたのでまとめる。

#やりたいこと
Pythonでgoogleスプレッドシートを操作したい。一度スプレッドシートのデータをpandasのDataframeに入れてから、編集して、それを元のスプレッドシートに反映させたい!イメージは以下

![名称未設定.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637104/10172f59-c251-4273-24ee-1f169a0c982a.jpeg)

#やってみた
まずは、読み書きの初期設定。[画像付きでわかりやすいサイト](https://tanuhack.com/operate-spreadsheet/)があった。スプレットシートやPythonの初期設定は難なく終った。

そして実際にコピーして、編集して、スプレッドシートに反映させる作業を行った。
[とても丁寧なサイト](https://tanuhack.com/gspread-dataframe/)があり、参考

元記事を表示

【システムトレード】pythonでStochastic Oscillatorをdecomposeして遊んでみた♬

Stochastic OscillatorにNoise除去の目的でDecomposeすることにより、より長周期での変動から買目を読むことを試みる。
バックテストをするまでもなく、このアップダウンの株価は買目、売目は明らかだ。
【参考】
①[【システムトレード入門】pythonでstcを描いて遊んでみた♬](https://qiita.com/MuAuan/items/86ace0460180fbd7784a)
②[【要素分解入門】時系列解析の手法をRとpythonで並べてみる♬](https://qiita.com/MuAuan/items/3a0273ba8be4035895be)
###やったこと
・Decomposeを組み込む
・結果はどうなのよ
###・Decomposeを組み込む
組み込みは以下のとおり
利用するLibは参考②のとおり、なお、参考①の重複コードは省略します。

“`py

import matplotlib.pyplot as plt

import statsmodels.api as sm
from statsmodels.tsa.seaso

元記事を表示

[最終話]初心者がpythonでヌメロンAIに挑戦してみた

[第0回](https://qiita.com/nprimem/items/93c301b18821f7f8a186)
[第1回](https://qiita.com/nprimem/items/994914ee4369a3d000d0)
[第2回](https://qiita.com/nprimem/items/337d64ee7c90394d226c)
[第3回](https://qiita.com/nprimem/items/3f80736ca803d61cd455)
[最終話](https://qiita.com/nprimem/items/533fac5642cdb5482409)
#今回の記事について
必要な主関数は定義し終わったのでゆっくり実装していきます!
##対戦環境作成
とりあえず、今まで作った関数やplayerの数字の決定などをまとめると以下のようになります.

“`
import random

def NUMERON(CALL,ANS):
EAT=0
BITE=0
for i in range(3):
if CALL[

元記事を表示

[光-Hikari-のPython]05章-05 制御構文(for文~多重ループ~)

#[Python]05章-05 for文~多重ループ~
for文では、for i in range(10):の**:**の後にfor文内の処理を書きました。実は、このfor文内にさらにfor文を書くこともできます。

今回はfor文内にさらにfor文を書くといった、多重ループについて触れていきます。

##for文を使った多重ループ
forの2重ループを書く場合には、外側のforと内側のforで別の変数を使う必要があります。

“`.py
for 変数1 in 繰り返し対象:
for 変数2 in 繰り返し対象:
繰り返し行う処理の内容
“`
具体的に見ていきましょう。まずは2重ループでよく説明される、掛け算の九九の表を出力するプログラムを作成してみましょう。chap05の中に、05-05-01.pyというファイル名でファイルを作成し、以下のコードを書いてください。

“`05-05-01.py
for i in range(1, 10):

元記事を表示

PythonでCSVから入力してjsonに出力してexeにする時の注意点

 タイトルに通り、PythonでCSVから入力してjsonに出力してexeにする時の注意点を備忘録がてら記しておきます。実装例は完全に個人用のツールなので、概要だけ話します。重要なのはエラーメッセージと対処法。

# デコードエラーを起こすCSV

 まずcsvを読み込みます。`input.csv`というcsvにデータを用意しておいて、それを読み取ります。

“`python
import csv

csv_file = open(“./input.csv”, “r”)
c = csv.DictReader(csv_file)
“`

 いきなりですが、ここでcsvの中身を見ようとすると(たぶん)以下のようなエラーになります。

“`
Exception has occurred: UnicodeDecodeError
‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence
File “C:\Users\hoge\fuga.py”, line 19, in

元記事を表示

GrasshopperのPython開発で自作モジュールをインポートする

# はじめに

[GrasshopperのPython開発で外部エディターを使う](https://qiita.com/keiwatanabe/items/9eb6a7d6749f5e586f7f)という記事を以前書きましたが、Grasshopperで本格的にPythonのプログラムを開発しようとすると1ファイルではコードが収まらなくなってくるので、自作の関数などは別ファイルに分けておきたくなります。
また画像ファイルやCSVを読み込むとき、プラグインをつくるときなどは相対パスでファイルを参照できるようファイル構成をしっかり管理しておく必要があります。
今回は自作のモジュールや設定ファイルを使ってコードを管理しやすくする方法をご説明します。

### **自作モジュールなどでプログラムを分割するメリット**

– コードが長すぎて管理できなくなるのを防げる
– 自作の関数やクラスの個別テストがしやすくなる
– 設定ファイルをつくることでコードをいじらなくても設定変更ができる
– 別のプロジェクトでも関数を流用しやすくなる
– パッケージ化しておくことでgitなどで管理しやすくなる

#

元記事を表示

銀河の画像を複数枚タイル状に表示する方法

#環境
Google Colab
(Python:3.6.9, astroquery:0.4)
#全体の流れ

– skyviewから天体カタログ(fitsファイル)を保存
– fitsファイルを元に銀河画像を作成し保存
– ディレクトリから画像データを順番に読み、ndarray配列に格納
– プロット

#コード
##fitsファイルの保存
まずは、Vizierで指定のカタログに載っている天体名とその数の取得。

“`python

from astroquery.vizier import Vizier
v=Vizier(catalog=”J/ApJS/80/531/gxfluxes”,columns=[“Name”,”logLx”,”Bmag”,”dist”,”type”],row_limit=-1)
data=v.query_constraints()
sname=data[0][“Name”]
namelist=[]
for one in sname:
name=one.strip().split()[0]
name=one.replace(“N”,”NGC”).

元記事を表示

ELMo, BERT, USEを使って文章の異常検知をする

## 概要
以前に投稿した記事
 [Universal Sentence Encoderを使って文章の異常検知をする](https://qiita.com/jovyan/items/e5d2dc7ffabc2353db38)
では、[Universal Sentence Encoder (USE)](https://arxiv.org/abs/1907.04307)を用いて、夏目漱石の文章に混じった有価証券報告書の文章を見つけるというタスクを方向データの異常検知問題として扱いました。今回はUSEだけでなく[ELMo](https://arxiv.org/abs/1802.05365)と[BERT](https://arxiv.org/abs/1810.04805)も用いて同種のタスクを解いて、3つのエンコーダーモデルを比較してみます。

日本語事前学習済みのELMoとBERTは、どちらもストックマークが公開しているモデルを使用します。

– [大規模日本語ビジネスニュースコーパスを学習したELMo(MeCab利用)モデルの紹介](https://qiita.com/mkt3/items

元記事を表示

部屋の不快指数を定期的に測定して、危険な値ならLINE通知を送るシステムをRaspberryPiで作ってみた

## きっかけ
– 今年も暑くなってきたけれど、クーラーってどれくらいの暑さで使うのがいいんだろう?
– 不快指数を測定して「危ないからクーラー使え!」って通知が来たらきっと楽だよな……
– 屋内でも熱中症の危険がある日本の夏、命を救うことが出来るシステム……かもしれない
– ラズパイにセンサ接続して疎通だけならやってたし、作ってみるか

## システム概要図
![Untitled Diagram (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224361/8b536953-27ba-a009-2fb3-3aa9d7c13036.png)

## 注意
– 試行錯誤しながらのメモを元に書いた記事なので、手順に抜け漏れがあるかもしれません……

## 使った物
– Raspberry Pi Zero WH
– AE-BME280
– [BME280使用 温湿度・気圧センサモジュールキット](http://akizukidenshi.com/catalog/g/gK-09421/)
– [

元記事を表示

OTHERカテゴリの最新記事