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

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

php8 JIT vs いろんな言語

# php8 JITと他のサーバーサイド言語を使ってパフォーマンステストをしました。
php8 JITが早くなったということで、他の主要なサーバーサイドの言語とパフォーマンステストして比較する。
どの言語が一番速いかどうかの検証

## パフォーマンステスト用メソッド (フィボナッチ数列の総数計算)
“`php
$n = 35;
function fibonacci(int $n): int
{
return(($n < 2) ? 1 : fibonacci($n - 2) + fibonacci($n - 1)); } ``` ## php8 JIT + 比較する言語 | 1 | 2 | 3 | 4 |5| |:-:|:-:|:-:|:-:|:-:| |php8-dev JIT|go 1.13|Java 11.0.4|python 3.8.1|Node v13.6.0(javascript)| ## テスト環境 各言語の実行環境は、AlpineをベースのDockerイメージをDockerHubのものを使用しています。 ## 実行結果 | 言語 | 速度 | |:-:

元記事を表示

Bit全探索の問題ABC(147C)

# bit全探索(ABC147C)

参考URL
[これはめちゃくちゃわかりやすかった](https://qiita.com/gogotealove/items/11f9e83218926211083a)
参考動画
[この問題の基本方針はこちらの解説で](https://www.youtube.com/watch?v=tNyPYIhy9Ms&feature=youtu.be)
問題文
[AtCoderのABC147C](https://atcoder.jp/contests/abc147/tasks/abc147_c)

この問題は自分がつまずいたので、後で見返してすぐ思い出せるようにメモの意味で投稿。
説明してない部分とくどい部分があって文はカオス。
あとC問題にしてはムズスギ(個人的感想)

僕の解答

“`python
N = int(input())
testimony = [[None for _ in range(N)] for _ in range(N)]
person = [None] * N

for i in range(N):

元記事を表示

Pythonコードを書くならColaboratoryが楽ちんでおすすめ!

#Pythonのコードを書くなら「Google Colaboratory」がおすすめ

YoutubeでPython動画をググっていたら下記のような動画が!

– [いまにゅのプログラミング塾](https://youtu.be/CtPKH-Azd08)

Pythonだけでなく、様々なプログラミング言語って**始めるのが大変だったりしませんか?**

たとえば

– パソコンの用意
– もろもろのインストール
– エラーの対処
– 思うようにならないストレス・・・

ところが、Google Colaboratoryならコードを書くことに専念できる環境をGoogleが用意してくれてました!

※素人な見解なので間違っていたらすみません。

ちょうどテキストエディターを「Vim」でやろうと思っていたのですが、なかなか思うように進まず腐っていましたw

単純にプログラムを書きたい、実行してみたいと思ったら「Google Colaboratory」を検証してみてください。

# Google Colaboratoryの導入方法

Googleアカウントというのでしょうか。Gmailを登

元記事を表示

Pocket APIのアクセストークンを取得する

# はじめに
[Getting your reading history out of Pocket using Python](https://medium.com/@alexdambra/getting-your-reading-history-out-of-pocket-using-python-b4253dbe865c)を参考にして(というかそのままなのですが)APIを使うためのアクセストークンを取得しました。
元記事の内容は、
– アクセストークンを取得する
– Pocketに登録しているアイテムを取得する
– 取得したアイテムをPandasで表示する
という内容ですが、ここではアクセストークンの取得までの内容のみ抜粋して記載します。

# 1. コンシューマーキーを取得
https://getpocket.com/developer/ からコンシューマーキーを取得します。
(ここは画面の通りに進めるだけなので手順は割愛します)

# 2. リクエストトークンを取得
以下のコードの”your_consumer_key”を手順1で取得したコンシューマーキーに置き換えます。
実行

元記事を表示

[Python3 入門 17日目]8章 データの行き先(8.3〜8.3.6.1)

#8.3 リレーショナルデータベース
詳細は前の記事を。

「RDBMSとSQLについて」
https://qiita.com/Taka20200105/items/c58ac4e610954c6d263b

##8.3.1 SQL

– SQLは二つにのカテゴリに分類される。
– DDL(データ定義言語):テーブルデータベースの作成、削除、制約、許可。
– DML(データ操作言語):データの挿入、選択、更新、削除などの処理

##8.3.2 DB-API

– APIとはサービスにアクセスするために呼び出す関数を集めたもの。APIを開設するとは、一つの窓を作って外のソフトウェアと連携させることと理解。鎖国中の出島みたいなもの。
– DB-APIはRDBMSにアクセスするためのPythonの標準のAPI。
– DB-APIの主要関数まとめ

| 関数 |意味 |
|:———————-|——————:|
|connect()

元記事を表示

How to update flask-bootstrap4 CDN on your flask application

Ay up mate! Long time no see. Already 4 years, since I made the 1st post. This is my 2nd post since 2016.
Now, I want to share how to modified **flask-bootstrap4** after you installed on your flask application.
Because sometimes **bootstrap.css/fontawesome.css/popper.js/jquery.js** need an update.
This is what I’ve done.

First, **flask-bootstrap4** need to be installed to your flask app. So, you will need to activate your virtual environment first to install flask-bootstrap4, and then run your

元記事を表示

Pandas使い方メモ

#1 目的
Pandas,Numpyを使いデータ配列の操作を行う方法を記録しておく。

#2 CVSデータを扱う

##2-1 CSVデータを読み取る

CSVファイルサンプル。列名が初めから含まれている。

“`console:/home/sampletest/sample.csv
DATE,CLOSE,OPEN,HIGH,LOW,VOL
2020-01-21,22720,23140,23150,22710,4729711
2020-01-22,23050,22670,23080,22670,3345936
2020-01-23,22600,22690,22840,22570,5629196
“`
##2-2 CSVデータ読み取り(列名も一緒に読み出す)

CSVファイルを読み取るコード(CSVファイルの列名も一緒に読み出す)

“`python:/home/sampletest/sample.py
#index_col=0は列名もデータと一緒に取り出す。
matrix= pd.read_csv(“sample.csv”, index_col=0)
print(matrix

元記事を表示

2重デコレータ

動いたのでメモ。12345と出力される。

“`python
class a():

def deco1(func):
def in_deco1(self):
print(1)
func(self)
print(5)
return in_deco1

class b(a):

def deco2(func):
@a.deco1
def in_deco2(self):
print(2)
func(self)
print(4)
return in_deco2

@deco2
def fun(self):
print(3)

b().fun()
“`

# 追記

こっちでも動いた。

“`python
class a():

def deco1(func):
def in_deco1(self

元記事を表示

CNNを用いた奇数/偶数の分類

##目的

人が数字の画像から奇数か偶数か把握するとき,何の数字が描かれているのかを頭で数字に変換してから,その数字が奇数か偶数か,2段階の処理をします(多分).そこで,人間でいう奇数か偶数か考える過程をすっ飛ばして,画像を認識するだけのConvolution Neural Network(以下CNN) を用いて,数字の奇数・偶数は分類出来るのか検証してみた(出来るだろ, という意見はおいておいて…)

本記事のコードは以下においています.
[githubリンク](https://github.com/be-m1ya/mnist_classification)

##使用データ
手書き数字画像と数字のラベルのセット
The Mnist database【http://yann.lecun.com/exdb/mnist/】
トレーニングデータ数 : 60,000 samples, テスト用データ数 : 10,000 samples

##実験
Convolution Neural Networkを用いて,奇数/偶数の分類を試みました.
また,おまけで5以上/5以下の分類もやってみ

元記事を表示

Python+Cursesで、MineSweeperを試作

Python+Cursesで、minesweeperを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、`chmod +x minesweeper.py`として、実行権を付けて動かして下さい。

`$./minesweeper.py [number of mines]`として、動かします。
[number of mines]は、省略できます。省略すると、機雷の数は60個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

“`minesweeper.py
#!/usr/bin/python3

import curses
import random
import locale
import select
import sys

argvs=sys.argv
argc=len(argvs)

if argc==2:
mines=int(argvs[1])
if mines>300:
print(“too many mines”)
exit(1)
else:

元記事を表示

【認証】Vue+Python(Flask)でCORSで詰まった話

# はじめに

Vue(127.0.0.1:8080)+Flask(127.0.0.1:5000)で認証機能の実装をしているときにCORSで詰まったときの話。

# 何をしようとした

VueからAPIをたたき(login api的な)、Flask側で認証を行います。認証が成功したら、CookieにJWT形式のトークンをセットしレスポンスを返すという実装を行う際、セットしたCookieがブラウザ側でセットされず、次のAPIリクエスト時に正しく認可が行えない問題が発生しました。

JWTの生成にはflask_jwt_extendedを使っています。

# 結論

flaskのモジュール**「Flask-CORS」**を使います。

[Flask-CORS](https://flask-cors.readthedocs.io/en/latest/)

“`
pip install -U flask-cors
“`

“`python

app = Flask(__name__)
cors = CORS(app)
“`

ただ、Cookieを扱う際は上記だけではだめで、以下の「

元記事を表示

複数のCSVを各エクセルシートに変換

#概要
膨大な量のCSVファイルを閲覧するのには難があります。
Pythonで一つのエクセルファイルにまとめました。
CSVを同じシートに結合はよくみかけますが、1csv=1シートの変換は例が見つからず、
備忘録をかねて記事にしました。

#環境
ubuntu(wsl)
python3.6.8

#コード

“`python:csvtxlsx.py
import os
import glob
from pathlib import Path

import openpyxl
import csv

csvfiles = glob.glob(“(読み込み元ファイルパス)/*.csv”, recursive=False)
wb = openpyxl.Workbook()
for file in csvfiles:
wb.create_sheet(os.path.splitext(os.path.basename(file))[0])
wb.active = wb.sheetnames.index(os.path.splitext(os.path.basename(fil

元記事を表示

海賊版漫画サイトの広告をスクレイピングで消してみた

## 経緯
manga1001.comという海賊版漫画サイトで漫画を読んでいる友人が
「過激な広告が多くて外で見えないし、Adblock使うと警告出るんだよね」
と言ってたので、じゃあ消してみよう!と思った。

## 注意
* 海賊版漫画サイトの使用を助長する目的の記事ではありません。
* Qiitaを利用するようなインターネットリテラシーの高い人たちは海賊版漫画サイトを利用しないと信じてます。
* 僕自身、技術的な興味で行ったもので、今後海賊版漫画サイトを使用するつもりはありません。
* 記事執筆時(2020/01)の現行法では、海賊版漫画サイトを閲覧すること自体に違法性はないです。

また、当記事と同じようなことをする場合、

* 複数ページへのスクレイピングでサーバへの負荷をかけないこと
* 画像をダウンロードして保存した場合、第三者に渡さないこと(当記事のスクレイピングでは画像のダウンロードは行っていません)

にお気をつけください。罪に問われる可能性があります。

## 方法
1. manga1001.com内の任意のURLを入力
1. Chromeを開く
2. `img`の

元記事を表示

Python初心者が初めてのWebスクレイピングで詰まったこと

# はじめに
Pythonの文法すら知らない状態でWebスクレイピングに挑戦したら色々と詰まったので、備忘録がてらまとめる。
実装したものは、とあるWebサイトからドリンクデータを取得して、CSVファイルに出力するプログラム。

## 環境
* windows 10
* Anaconda 3
* python 3.7.3
* BeautifulSoup 4.8.2

## 複数ページからデータを取ってくる
1つのページからデータを取る方法はすぐに見つかったが、どうやって複数ページから取得すれば良いのか?

“`py
import requests
from bs4 import BeautifulSoup

import re

# 複数ページのURLを入れる配列
urls_ary = []

# トップページから、全てのaタグを検索して、そのhref属性を取得、配列に追加
url = ‘http://hoge/top’
r = requests.get(url)
soup = BeautifulSoup(r.text, ‘lxml’)
for a in soup.find_all(

元記事を表示

呼び出し元関数名取得方法

以下はどちらもbと出力される。
inspectがいかなるものかよく調べていないが、
とりあえず動いたことだけは確認できたのでメモを残しておく。

“`python
import inspect

def a():
print(inspect.getouterframes(inspect.currentframe(), 2)[1][3])

def b():
a()

b()
“`

“`python
import inspect

class c(object):
def a(self):
print(inspect.getouterframes(inspect.currentframe(), 2)[1][3])

def b(self):
self.a()

d = c()
d.b()
“`

元記事を表示

Tello Eduを用いたPythonプログラミング教育支援環境(SDK2対応,改訂版)

# Tello EduのSDK2を使ったプログラミング教育を行うための支援環境開発を行いました(ベータ版)

### 概要
ミニ(ホビー)ドローンを使って小学生高学年から高等学校の児童生徒がプログラミングを学べる教材を開発しています。巻末の参考資料を参考に作成しています。ありがとうございます。

[Tello Eduをpythonで動かそう!(SDK2対応)](https://qiita.com/yoomori/items/e847166433d44ab53c29)の改良版です。コマンドやインタフェースを変えています.

前バージョンからの主な変更点は以下の通りです.
#### Tell Eduとの間のコマンド通信ログ等 Tello Eduの状態がわかるインタフェースを作成
以下の画面に状態が表示されます.またここからドローンを実行できるようにしました.
image2.png[Docker入門]勉強して得られたDockerの知見を色々まとめてみた(Windows・Python)

社内で専門のインフラ関係の担当の方がいらっしゃって、環境などはよしなにしてくださっていたのですが、流石にそろそろDocker周りを自分でも勉強しておかないとまずいだろう・・ということで、最近Dockerにやっと入門したので、色々と学んだことを備忘録も兼ねてまとめたり試したりしていこうと思います。

経歴的にインフラ周りなど馴染みの薄いお仕事を長くしてきていたので、知識的に荒い(浅い)ところなどは色々ご容赦ください。
私も初心者ですし、あまりインフラとかに馴染みのない方向けの記事となります。

Windows環境(Docker for Windows)でLinuxやPython関係を動かしたりを中心に進めていきます。

# この記事で触れること

– コンテナなどの概要やメリット
– Docker for Windowsのインストール・設定
– コンテナとイメージ関係の基礎
– Docker Hubやタグについて
– Dockerfileの基礎
– 実際にUbuntuにPythonなどを絡めたイメージのビルド

# この記事で触れないこと

記事が長くなりすぎるので主に以下は触れません。

元記事を表示

人工衛星(Sentinel-2)の観測画像をAPIを使って自動取得してみた.

## 概要
これまで,欧州の地球観測の人工衛星(Sentinelシリーズ)の画像の取得方法について紹介しました.
[無料で最新の衛星画像を入手する方法.](https://qiita.com/nigo1973/items/9bb6a11caac8e3e1e850)

今回は,Sentinelが提供するAPIを用いて,jupyter lab などのPuythonのプラットフォームにSentinelの観測データを管理するCopernicusのサーバからの直接取得する方法,および取得したデータの画像処理,関心域の画像抽出,最後に抽出した画像のjpeg処理について紹介します.自己流ですので,よりスマートな方法がありましたらぜひコメントにてお教えください.
なお,この記事で紹介するコードは以下の記事を参考にさせていただきました.ありがとうございます.

[Satellite Imagery Access and Analysis in python jupyter notebooks](https://towardsdatascience.com/satellite-imagery-a

元記事を表示

Ubuntu等Linux上でPython3/Tkinterのアプリケーション名表示についての問題

#環境
Ubuntu 19.10 64bit
Python 3.7.5
Tkinter 上記に付属のため省略
#Ubuntu上での挙動
“`python
#python2での実行時は、tkinterをTkinterに変更する。
import tkinter

root = tkinter.Tk()
root.title(“Hello World”)
label = tkinter.Label(root,text=”Helloworld”)
label.pack()
root.mainloop()
“`
これを実行すると、
![pic1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b0cf4503-7d69-c5c6-41d7-e5a6643a4dc2.png)
![pic2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b6681484-666e-829d-7db5-9e14674b64

元記事を表示

Re:ゼロから始める競技プログラミング生活 第1章2『涙のPython』

#第2の敵
今回は前回より難しいB問題を解いていきます!!
では早速、問題どーん!!
ce1c5b58d8be6c42b4e39bd7d61f140b.png

…何じゃこれ
難易度一気に上げ過ぎではないでしょうかねぇ…
とりあえず図を描いて何を求めていけば良いのかを整理してみます。
![image0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570839/55c0c0c9-3eac-dcd0-a23f-6f8b1381dc20.jpeg)

なるほど、この小学生でもまだマシなものを描きそうなこの図を見ると、Lの回数に最初の1回を加えたものがこの問題の解答になると言うことですね。意外と簡単だった!!
では早速、C++

元記事を表示

OTHERカテゴリの最新記事