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

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

Flask 単体テスト環境(test_client)

# 概要

FlaskのAPIテストをするのに「POST MAN」を使用していましたが、今更Flaskでの単体テスト方法を学んだんで備忘録。

# 例

テスト用のコードは「test.py」として別に分けています。「app.py」に簡単なルーティング設定をしています。

“`python:app.py
from flask import Flask, jsonify, request
app = Flask(__name__)

@app.route(“/”)
def home():
if request.is_json: # jsonのデータ指定
return jsonify({“msg”: “fault massage”}), 400
return jsonify({“msg”: “success message”}), 200

if __name__ == “__main__”:
app.run()

“`

今回はget通信としていますが、これはgetのところをpost等にすればその他通信が可能です。

“`python:test.py
import

元記事を表示

Seleniumを使用し自動ログイン、データ収集

>PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】の6-8勉強メモ
https://www.udemy.com/course/python-scraping-beginner/

##(基本設定)Seleniumからwebdriverをimport
“`
from selenium import webdriver
“`
##Chromeを開いて、対象URLを開く
“`
browser = webdriver.Chrome()
browser.get(‘https://scraping-for-beginner.herokuapp.com/login_page’)
“`

#Seleniumを使用し自動ログイン~Username/Passwordを自動入力
## フォームのidを取得

該当ページのフォーム部分のidを開発ツールを使用し取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68847/6ad1f4e5-933e-f330-476e-976

元記事を表示

Pythonでトポソを使って全方位木DPをする

# この記事でやること

Pythonでトポソを使って全方位DPをするのが目標です。最初にこの記事での実装方針を書いておきます。

### 実装方法

1. トポソを使う
1. 抽象化
1. 逆元がない場合にも対応
1. 左右累積和は配列を1つだけ持つ

記事としては、2. 抽象化 するための理論面の整備がメインになりそうです。

## 経緯

前回の記事の最後 に、気が向いたら全方位木 DP も書くと言ったら、早く気が向いてほしいと言われたので気を向けることにしました。

![全方位木DP_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609864/c3345dc7-40bb-5397-ce46-3ed0a4585bea.jpeg)

元記事を表示

python超入門書にてpipで詰まった(from: can’t read /var/mail/PIL)

#使用している本について
 今回の件に出てくる本はSB Creativeの「[確かな力が身につくPython「超」入門](https://www.amazon.co.jp/確かな力が身につくPython「超」入門-確かな力が身につく「超」入門シリーズ-鎌田-正浩/dp/4797384409/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=python+%E8%B6%85&qid=1584289306&sr=8-3)」です。

#本題
 この本のChapter6では、外部ライブラリを用いた話をします。その例として、Pillowを用います。その際、pipコマンドを使用します。ここで一つ詰まったことがあり、調べてみたところネット上でも同じような悩みを持っている方がいたので記事にしました。まずは本の通りPillowをインストールし、指示通りにしてみましょう。

“`python
$ pip install Pillow # MacOSならば’pip’を’pip3’に変換してください。
(結果略)
$ fr

元記事を表示

競技プログラミングでTLEのときに高速化できるアルゴリズム

# 暇があり、競プロをやっているときに気づいたことのMemo
## Level1

#### 累積和
配列の部分和を求め比較する必要がある際、一回づつ部分和を求めるのではなく、前項(i項まで)の和にi+1の項を加えてそこから部分和の範囲を考慮したほうが早い。例上記が正解、下記だとTLEになる。

“` python:ABC_D_Dice_in_Line.py
for i in range(k, len(p)):
saveSum = saveSum + p[i] – p[i – k]
if saveSum > M:
M = saveSum

“`

“` python:ABC_D_Dice_in_Line.py
for i in range(len(p) – k + 1):
# 一回づつlistの和を求めているから計算量が多い
savesum = sum(p[i:i + k])
if savesum > M:
M = savesum

“`

元記事を表示

Python&機械学習 勉強メモ⑥

#はじめに
① https://qiita.com/yohiro/items/04984927d0b455700cd1
② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c
③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5
④ https://qiita.com/yohiro/items/d376f44fe66831599d0b
⑤ https://qiita.com/yohiro/items/3abaf7b610fbcaa01b9c
の続き

– 参考教材:[Udemy みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習](https://www.udemy.com/course/learning-ai/)
– 使用ライブラリ:scikit-learn

#課題設定
手書きの数字画像(8×8 px)から、書いてある数字を認識する。

#ソースコード

##インポート

“`python
from sklearn import datasets
from skl

元記事を表示

【Python】茶色コーダーになりました〜【AtCoder】

#【祝】茶色コーダーになりました〜
12回目でようやく茶色コーダー!!!
一番初めは2重for文も書けなかったのですごい成長!!!
パチパチパチ(拍手)〜
スクリーンショット 2020-04-06 23.11.41.png

##茶色コーダーになるまでにやったこと
競プロ初心者に参考になるかも!
ということでこれまでやってきた事を記事として残しておきます!

###①けんちょんさんの記事をいろいろ読んでわくわくする!
一番最初に読んだ記事はこれ!
[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)
まずはこれを一通り見てから、実際にPythonで解いてみました!

元記事を表示

jupyterlab & matplotlibで作成したグラフのデータ点にリンクを貼る

# この記事について
記事タイトルの通りのことがやりたかった。
また使うことがあるかも知れないので、その方法を記録しておく。

# 手順
– matplotlib で リンク付きのグラフを作成
– `svg` 形式で保存
– Chrome などのブラウザでファイルを開く

# 環境
自分は jupyter-lab での作業でした。
バージョンはこんな感じ(pip freeze の結果より)

“`bash
jupyterlab-server==1.0.7
matplotlib==3.2.1
“`

# ファイル作成

“`python
# 各種設定
import matplotlib.pyplot as plt
from IPython.display import set_matplotlib_formats

set_matplotlib_formats(“svg”)

# テストデータ準備
data_list = [[0, 1], [1,0], [1,1]]
label_list = [‘google’, ‘yahoo’, ‘lightcafe’]
url_list = [

元記事を表示

Pythonの環境構築 For Mac

pythonはまるっきり初心者で、触れたことがほぼないので環境構築からやります!

### PythonのVersion確認

Macにはpythonがpreinstallされているのでまずは確認。

$ python –version
Python 2.7.10

$ python3 –version
Python 3.7.7

あるので準備はこれでOK!

なんですが、ない場合や最新のpythonを利用したい場合は別途インストールする必要があります
pyenvをhomebrewでインストールしてpythonを落としていきましょう

### Pythonのインストール

$ brew install pyenv

bash_profileなどに環境変数設定などをしたら完了

$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_pro

元記事を表示

ndarrayで行ベクトルを列ベクトルに変換するときに気を付けるべきこと

pythonのndarrayで、行ベクトルを列ベクトルに変換するときのお話です。
思わず、次のようにしてしまいがちですよね。
`print(np.array([1,2,3,4,5]).T)`
でもこれだと、結果は

“`
[1 2 3 4 5]
“`
となってしまい、行ベクトルに変換できません。
これは、行ベクトルが1次元配列で表現されているのに対し、
列ベクトルは2次元以上の配列でないと表現できないからです。
実際、
`print(np.array([[1,2,3,4,5]]).T)`
のように2次元配列で行ベクトルを渡せば、ちゃんと

“`
[[1]
[2]
[3]
[4]
[5]]
“`
という結果を得ます。

ちなみに
`print(np.transpose(np.array([1,2,3,4,5])))`
においても同様で、列ベクトルは得られません。

一次元配列としての行ベクトル`v`から(2次元配列としての)列ベクトル`m`を得たいときは、

`m = np.array([v]).T`

としましょう

元記事を表示

openpyxlのごく一部備忘録

# 概要
機能が多くて一覧化したほうが後々色々やりやすいってことで、列挙。
あくまでも自分で使ったもののみなのでこれで全部ではないです。
細かいところは[公式](https://openpyxl.readthedocs.io/en/stable/)を参照ください。

## 新しいブックを作る
ブックを作って1つシートも作る。
以降はこれをやってある前提。

“` python:
import openpyxl

book = openpyxl.Workbook()
sheet = book.active
“`

## シート名設定

“` python:
sheet.name = “しーと”
“`

## ブック保存

“` python:
try:
book.save(“book.xlsx”)
except exception as e:
# excelを開いているとPermission Error。他もあるかも。
finally:
book.close()
“`

## csvからエクセルを作る

“` python:
import csv

元記事を表示

【Mac】Selenium/jupyter notebook/Chromedriver install方法

# Selenium install方法

## 作業するフォルダへパスを通す。
例: desktopのworkフォルダにパスを通すなら
1. Terminalを開き `cd ~/Desktop/work`
2. Terminalに`pwd` を入力しパスが正しいか確認

## pipを使用する場合
`pip3 install Selenium`

##Anacondaを使用する場合
`conda install Selenium`

# jupyter notebook install方法
##pip使用する場合
`pip install jupyter`
##Anacondaを使用する場合
`conda install jupyter`

—–

下記URLが表示されるか確認
http://localhost:8888/tree

表示されているのならば、下記画像の「NEW」をクリックし新たなnotebookを作成。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68847/

元記事を表示

基本・応用情報試験のための整列アルゴリズムのメモ③

#Pythonで単純挿入法

##はじめに
ここでは、基本・応用情報処理技術者試験を受ける際に学ぶ基本的な整列アルゴリズムについて、実際に自分で手を動かしながら理解した過程を自身への整理も兼ねてまとめています。
私同様にpythonで勉強をされている初学者の方の参考になれば幸いです。また私自身も初学者ゆえ、書き方、アルゴリズム等至らない点があると思いますので、細かいことでもご指摘頂ければ幸いです。
宜しくお願い致します。

##問題
リスト [11, 42, 5, 63, 37, 54, 4]
について、3つの基本整列法を用いて昇順で整列させなさい(自作問題)
・バブルソート
・単純選択法
・単純挿入法

本スライドでは、単純挿入法を扱う。

##単純挿入法
未整列の要素の並びの先頭の要素を取り出し、その要素を整列済みの要素の中に正しく挿入していく。

####プログラムの手順①
先頭の要素が次の要素より大きければ、入れ替える。これを繰り返す。

“`python:insertion_1.py
item = [11,42,5,63,37,54,4]

#整列前の配列
print(it

元記事を表示

Python3.9の新機能(1) – 辞書型で和集合演算子が使えるようになる

## はじめに

2020年10月にリリースを予定しているPython3.9で新たに加わる変更を[Python3.9の新機能 (まとめ)](https://qiita.com/ksato9700/items/d5df9d36147796c86c77)という記事でまとめ始めました。その中で比較的分量のある項目を別記事に切り出すことにしましたが、その第一弾として辞書型で和集合オペレータを使えるようになる変更を取り上げてみたいと思います。

## 辞書型の統合

辞書型はPython組み込みの標準データ型の一つです。他の言語だとハッシュ型・マップ型・連想配列型など様々な呼ばれ方をしていますが、要は名前と値のペア (key-value pair)を格納するためのデータ型です。

この辞書型のデータ(d1, d2) が二つあり、それを混ぜ合わせて一つの辞書型データにすることを考えます。これまでも幾つかやり方がありました。

#### 1) `update`メソッドを使う

d1.update(d2)`とすれば統合された辞書型データがd1に上書き格納されます。もしd1をそのまま取っておきたい場

元記事を表示

非再帰BFSでトポソから木DPをする

# 非再帰 BFS
Python で非再帰 BFS を書きます。ついでにトポロジカルソート(トポソ)もできます。トポロジカルソートを知らない人は適当に ググって ください。

トポロジカルソートを使うと、木 DP が簡単にできます。

## 目標
木の問題は基本的にトポソすればなんとかなります (本当?) 。みんな大好き 木DP もトポソ順に処理すればその都度 BFS / DFS する必要ないのでらくちんです。この記事では BFS で木のトポソを求めて、木 DP をやるのが目標です。

### 入力
まずは入力部分。1-indexed で辺リストを `X` に格納しています。

“`test.py
N = int(input()) # 頂点数
X = [[] f

元記事を表示

Djangoで画像をURL化するなんちゃってAPIを作ってみた

![rectangle_large_type_2_5d9d414fe37a8ae4ab995a045fe86087.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541141/5e410d16-30bb-1c56-ccc3-d89929410288.jpeg)

今回は、画像ファイルを載せてPOSTリク送れば、https化されたURLを生成してくれるよってやつ作ってみました。
まだまだ試行錯誤中ですが、完成したものがこちらです(PC用サイトになります):basketball_player_tone3:
→[なんちゃってAPI](https://app.takopanman.work/)
ちなみに、使い方やコードサンプルも乗っています:v:
#やりたいこと
DjangoでファイルをPOSTで受け取りたい。
受け取ったファイルに対してのURLを発行したい。

意外と簡単だったので、ローカルで実装して紹介したいと思います。

#プロジェクトの作成

“`bash:bash
$ django-admin s

元記事を表示

AtCoder ~Judge System Update Test Contest 202004~Python解答

#はじめに
最近、AtCoderにかなりハマっている自分がいるので解けた問題について自分なりに解説をしようと思い投稿をしようと決めました。
使用言語はPythonです。

#目次

1. A問題~Walking Takahashi~
2. B問題~Picking Balls~
3. おわりに
4. 参考文献

#1. A問題~Walking Takahashi~
A問題を見た時に問題文が難しそうだなと思ったのですが、意外に簡単ですんなり解くことが出来ました。

“`python
# S座標==X座標
S, L, R = map(int, input().split())

while True:
if L <= S <= R: print(S) break if S < L: S += 1 elif S > R:
S -= 1
“`

この処理としては、まず今回の問題で標準入力をする値をmap関数でint型にしてそれぞれ受け取ります。

その次に、問題文にあったL以上とR以下の間にX座標がある時

元記事を表示

クイズアプリ「みんはや」にたくさんの作った問題セットを(半)自動で追加させる

はじめまして。記事初投稿なのでよろしくお願いいたします。
#背景
IOS,Andoridアプリ、「みんなで早押しクイズ」、略称「みんはや」では作問ができて自分で作成したクイズを遊ぶことができる。自分で作成したクイズを入れるのはいいが**手入力はめんどくさい、問題数が多すぎる**の対策として半自動入力を導入してみようと試みました。
作問の自動入力さえできればあとはプログラム実行して寝れば作成した中間試験、期末試験対策の問題はみんはや遊べます。

注意:このプログラムは完全ではありません。**極稀に暴走**を起こしますので最初はある程度監視してね。
#作成・設計・実装
結構長くなるけどごめんね

###必要なもの
PC(それはそう)
1.Python3
  3.6を使ってますが3.7でも構いません
2.Bluestacks4
3.Pythonの実行環境
  いつでも簡単に止めれるようにPyCharmの使用をおすすめします。

##1. Bluestacks4の導入
BluestacksはAndoridエミュレーターであり、このエミュレーターでみんはやを実行します。
[Bluestacksの

元記事を表示

Pythonの辞書

AtCoderなどといている時によく忘れて調べることになるが、意外に綺麗にまとまっているサイトが少なかったので自分で書いた

### 宣言
よくあるやつ

“`python
d = {}
#または
d = dict()
“`

### 要素の更新
存在するキーの有無によって挙動が両者異なる

“`python
d[‘key’] = ‘value’
#指定したキーが存在しない場合、コンパイルエラー
#指定したキーが既に存在する場合、既存の値を更新

d.setdefault(‘key’, ‘value’)
#指定したキーが存在しない場合、新たに要素を追加
#指定したキーが既に存在する場合、変更なし
“`

### 辞書同士の連結
下に書く通り

“`python
d1 = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
d2 = {‘key3’: ‘value3’, ‘key4’: ‘value4’}

d1.update(d2)
print(d1)
#{‘key1’: ‘value1’, ‘key2’: ‘value2’, ‘ke

元記事を表示

基本・応用情報試験のための整列アルゴリズムのメモ②

#Pythonで単純選択法

##はじめに
ここでは、基本・応用情報処理技術者試験を受ける際に学ぶ基本的な整列アルゴリズムについて、実際に自分で手を動かしながら理解した過程を自身への整理も兼ねてまとめています。
私同様にpythonで勉強をされている初学者の方の参考になれば幸いです。また私自身も初学者ゆえ、書き方、アルゴリズム等至らない点があると思いますので、細かいことでもご指摘頂ければ幸いです。
宜しくお願い致します。

##問題
リスト [11, 42, 5, 63, 37, 54, 4]
について、3つの基本整列法を用いて昇順で整列させなさい(自作問題)
・バブルソート
・単純選択法
・単純挿入法

本スライドでは、単純選択法を扱う。

##単純選択法
未配列の要素すべての中から最小値(または最大値)を選択し、未配列部分の先頭要素と入れ替える。この操作を最後から2番目の場所に正しい要素が入るまで、繰り返す。

####プログラムの手順①
先頭の要素を最小値と仮定し、その他の要素と順番に比べる。そして、仮定した最小値より小さい要素があれば、その要素を最小値と仮定する。すべての要素と

元記事を表示

OTHERカテゴリの最新記事