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

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

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

元記事を表示

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
の続き

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

#scikit-learn
今回用いる機械学習ライブラリ

#課題設定
花弁と萼それぞれの長さと幅を与えると、アヤメの品種特定をする。
0は”Setosa”を表す。
1は”Versicolor”を表す。
2は”Virsinica”を表す。

#ソースコード
##インポート

“`python
from sklearn import datasets
from

元記事を表示

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番目の場所に正しい要素が入るまで、繰り返す。

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

元記事を表示

Kaggle COVID19 Global Forecasting (Week 3)

次のコンペに投稿する方法です。
>[COVID19 Global Forecasting (Week 3)](https://www.kaggle.com/c/covid19-global-forecasting-week-3/)
covid19-global-forecasting.py を covid19_apr06.ipynb に変換してアップロードしました。

“`py:covid19-global-forecasting.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# covid19-global-forecasting.py
#
# Apr/06/2020
# PM 14:49
# ——————————————————————
import numpy as np
import pandas as pd
import sys
from scipy.optimize import curve_fit

np.set

元記事を表示

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

#Pythonでバブルソート

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

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

本スライドでは、バブルソートを扱う。

##バブルソート
隣り合う全ての要素を比べ、大小関係が違う逆の場合、交換する。この比較・交換が必要なくなるまで繰り返す。

####プログラムの手順①
先頭の要素から最後の要素まで、配列の要素が逆のとき、入れ替える。

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

#整列前の配列
pri

元記事を表示

Google spreadsheet を wget でダウンロードしたい

# はじめに

– “Google Spreadsheet“はとても便利
– ただし、データ分析に使う時にブラウザからダウンロードするのがめんどくさい
– コマンドラインでダウンロードできれば、ますます便利なのではないか

# 検索 & 要約

– “google spreadsheet wget“でぐぐったら、以下の Stack Overflow がヒットした
– [Download unpublished Google spreadsheet as CSV](https://stackoverflow.com/questions/10730712/download-unpublished-google-spreadsheet-as-csv)
– 上記の回答を読んで、最終的に以下のコマンドでよいことが分かった

“`bash
wget -O {FILENAME} ‘https://docs.google.com/spreadsheets/d/{KEY}/export?gid={GID}&format={FORMAT}’
“`

– “–no-check-certi

元記事を表示

Cloud9にPython+OpenCVの環境を構築する

AWS Cloud9にPython+OpenCVの開発環境を作りたい場合の環境構築手順です。
特に、各種インストールの部分が面倒だったのでまとめておきます。(ベストな方法かはわかりません、すみません。)

## EC2の作成
私は`EC2 instance type:t3.small`で作成しましたが、任意のインスタンスタイプを選んで作成してください。

## Cloud9インスタンスのボリュームを拡張する
t3.smallのデフォルトのボリュームは10GiBです。
これだと色々とインストールしている段階で容量が足りなくなるので、容量を拡張します。(容量が足りなくなるとインストール時に`No space left on device`)と表示されます。
拡張手順は以下の記事を参照してください。
https://qiita.com/ktrkmk/items/8cf1e100da2e717f3be2
私は一旦30GiBまで拡張しました。

## homebrewのインストール
以下のコマンドでインストールします。

“`
$ sh -c “$(curl -fsSL https://raw

元記事を表示

これを見ればPythonの内包表記を完全に理解できる

内包表記とは。
一応、内包表記って何??という方に簡単に例を示します。

“`py3
n = 6
a = []
for i in range(n):
a.append(i)

b = [i for i in range(n)]

print(a == b) # True
“`

これはとても簡単な例ですが、まあなんとなくどんなものかはわかったと思います。(内部処理はまだ理解できていなくて良いです。)
aとbは、結果は同じものになっていますが、具体的にどんな処理を行っているのかを説明していきましょう。

前者は、
1. まず空のリスト(可変長オブジェクト)を生成してaという変数に代入します。
2. rangeオブジェクトを生成します。
3. 2のオブジェクトから各値を取り出し、iという変数に代入します。
4. iを1で作成したリストにappendしていきます。(3, 4を繰り返します。)

後者は
1. まず空のリスト(可変長オブジェクト)を生成します。(この中で行われるiterationの結果を格納していくための箱です)
2. rangeオブジェクトを生成します。
3. 2

元記事を表示

mod_wsgi+flask+flask-httpauthのBasic認証でうまくログインできないとき

– FlaskでBasic認証を用いたアプリを作成した
– 手元で直接実行してテストしたときに正しいユーザとパスワードで認証ができる
– しかしApache+mod_wsgiな環境で動かしたときに認証ができない。

## 環境

– 言語: python3
– ライブラリ: flask-httpauth, mod_wsgi
– Webサーバ: Apache2.4

## 解決方法
以下の設定をapacheのflaskアプリの設定部分に追記する。

“`
WSGIPassAuthorization On
“`

## 原因
解決方法を見てわかるとおり、mod_wsgiでbasic認証をするために必要な設定がされていなかった。

## 参考
– [flask-httpauthを使って、FlaskでBasic認証を5分で実装する](https://qiita.com/mitch0807/items/d5e354a4e6e5b4f04bd6)
– [Djangoで特定のページのみBasic認証をかける](https://yura2.hateblo.jp/entry/2015/04/03/D

元記事を表示

猿でも分かるPython入門 (その1)

#はじめに
 こんにちは、Rikuと申します。軽く自己紹介をさせていただきますと、普段はコンサルタントとして働いており、プログラミングは基本趣味でコードを書く程度、という人間です。それでも、エクセルなどでは行えない大容量データを用いる場合や高度な分析を行う場合は仕事でもコードを書くことはあり、データ活用が一つのビジネストレンドになりつつある昨今では何かとコードを書く機会は増えつつあります。そのため──コンサルタントという職業上必ずしも必須ではないのですが──後輩からも「エンジニアになりたいわけではないが、分析を自分で進められるようになりたいからデータ分析のためのプログラミングを教えてほしい!」などと言われることは多々あります。そこで色々と初心者向けの記事を捜してみたところ、日本語ではプログラミングのプの字も知らない超初心者向けにPythonの扱い方について体系的にまとめた記事がほとんどないことに気づき、自信の知識の伝達の練習も兼ねてここで知識ゼロ超初心者向けのPython解説を行おうと思った次第です。
 本記事はPythonの入門者から初心者への橋渡し的な記事にしようと思っており、4,

元記事を表示

AtCoder Judge System Update Test Contest 202004 参戦記

# AtCoder Judge System Update Test Contest 202004 参戦記

初の全完で、順位も上位9%という. なんで rated じゃないんですか!(机をバンバン).

## [A – Walking Takahashi](https://atcoder.jp/contests/judge-update-202004/tasks/judge_update_202004_a)

2分で突破. すでに日に当たっている場合は、現在位置が答え. 現在位置がL未満ならLが答え、現在位置がRを超えているのならRが答え.

“`python
S, L, R = map(int, input().split())

if L <= S <= R: print(S) elif S < L: print(L) elif S > R:
print(R)
“`

## [B – Picking Balls](https://atcoder.jp/contests/judge-update-202004/tasks/judge_update_202

元記事を表示

Google Code Jamの予選に参加しました

Google Code Jam2020のQualification Roundに参戦しました。
結果は75点で約4万4千人中806位でした。
予選ラウンドより先に進むためには30点取ればよく、得点状況はリアルタイムで分かるので大半の人は30点を超えた時点で諦めていたと思います。
ですが、ぼくはおよそ20時間ほど粘りました(最終Submitこそ16時間でしたが)
正直AtCoder緑でここまで問題を解くことが出来て自分でも信じられないのですが、結果は嘘をつかないので参戦記としてまとめてみようと思います。
### 解説
#### [A. Vestigium](https://codingcompetitions.withgoogle.com/codejam/round/000000000019fd27/000000000020993c)

N列N行からなる正方行列がT個与えられます。それらのトレースkと、同じ数字が含まれる行数r, 同じ数字が含まれる列数cを出力してください。

まぁ最初に「トレースってなんぞや?」となるのですが、2行目に「対角線の合計値(左上から右下に走るもの)とあること

元記事を表示

OTHERカテゴリの最新記事