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

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

AWSラムダを全く理解していない人間が練習

###あくまで備忘録です
#やりたいことだけ明確に
###まず、目標
※この部分を書いている時点で一切の作業をしていません
AWSのラムダを使うとしてお金がかかるので、ローカル(Windows環境)にダウンロードできるものだけでラムダを作りたい。
htmlで書いた(ここの言語は未定)Webサイトにアクセスし、Pythonの書かれたラムダに投げて帰ってきたデータでhtmlを更新する、なんて形を取れればいいと思っている。
~~静的なWebサイトを作るのであればS3でもいいとか言ってはいけない~~

#何をダウンロードしよう
ググったところ[[参考:A]](https://dev.classmethod.jp/articles/invoke-aws-lambda-python-locally/)のサイトを見つけたので内容を確認。**python-lambda-local**というものを使えばいいらしいので早速インストール

cmdからpipでダウンロード~~pipがナニか変わらなかった無知な自分は[こちら](https://techacademy.jp/magazine/21161)~~

元記事を表示

Python3 Windowsのレジストリから不正なキー名候補を検索する

Windowsのレジストリから不正なキー名候補を検索するコードです。`”\uFEFF”`のeast asian widthが`”N”`(`unicodedata.east_asian_width(“\uFEFF”) == “N”`)だったので、このような文字を含むキー名をすべて取り出してくるコードです。出力後にレジストリを目視で確認して整理することを目的としています。

Microsoft Payとやらのよく分からないキーがヒットしたのは見なかったことにしています。

“`py
import unicodedata
import winreg
from pprint import pp

def str_has_east_asian_width_N(s):
return any((unicodedata.east_asian_width(c) == “N” for c in s))

def get_winreg_invalid_candidates(key, path, candidates=[]):
for i in range(0xffffffff):

元記事を表示

蟻本初級編をpythonで解いてみた

#蟻本をpythonで解いてみた

##2.1 全探索

###再帰関数

“`python:
#階乗
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)

#フィボナッチ
def fib(n):
if n <= 1: return n else: return fib(n-1) + fib(n-2) #配列をメモ化することで高速化 def fib_memo(n): memo = [0] * (n+1) def fib_cal(x): if x <= 1: memo[x] = x return x elif memo[x] != 0: return memo[x] else: memo[x] = fib_cal(x-2) + fib_cal(

元記事を表示

ゼロから始めるLeetCode Day50「739. Daily Temperatures」

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

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

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

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

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

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

前回
[ゼロから始めるLeetCode Day49 「1323. Maximum 69 Number」](https://qiita.com/KueharX/items/2d18458c80aa39a0c386)

今はTop 100 Liked QuestionsのMediumを優先

元記事を表示

【やってみた】AtCoder 版!蟻本 (初級編)の 2-1-2と2-1-3に類題にチャレンジ

## 初めに

* 筆者はAtCoderを取り組み始めたアラフォー・Unコーダである(非ソフトウェア職)

* [AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に蟻本記載例題の類似問題が記載されている
* 上記記事著者である、けんちょん (Otsuki)@drken氏に感謝

## 目的

* [AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に記載の探索系の問題の類題の回答と解説を掲載する

* 筆者が上記問題を解くことで、上記探索系のアルゴリズムの理解を深める

* 筆者は[過去に同問に挑み道半ばで倒れてしまった]((https://qiita.com/tagtagtag/items/56cc6ff06b514294a1e4))ため、リベンジする

* 諸兄(姉)からの指摘を受けることで見落としていた課題を補完する

## まとめ

* 類題を解き解説をつけることができた。
* 解説を書きな

元記事を表示

Windows 10 + Python3 + selenium + chromedriver + headless chrome で Fessの検索画面を操作してみる

#目的
ドロップダウンの操作もかねてFessの検索画面を操作してみる
Freeは[ローカルで動かしているもの](https://qiita.com/tabizou/items/9747d270246c0485b905)を使用
[Windows 10 Pro x64 + Python3 で selenium + chromedriver でFessの検索画面を操作してみる](https://qiita.com/tabizou/items/c74f5bdefdde6a510fa4)
を headless chrome を使用するように書き換えてみる
##サンプルコード
対象とするhtmlの抜粋

<h3 id="searchOptionsLabel">
検索オプション
</h3
ドロップダウン
<fieldset class="form-group">
<label for="contentNum">表示件数</label>
<select name="num" id="numSearchOption" class

元記事を表示

自然言語処理の素人が提出レポートの類似度を評価してみた記録

### 0. 事前に行ったこと

「AIの医療応用研究事例について一つ調べ、メリットと課題をまとめよ」というレポート課題をgoogle classroom上で課し、gdocで提出してもらったレポートを[前回の記事](https://qiita.com/shigeyuki-m/items/5538824c6c0cd95e51d7)に記載した方法で抽出した。

続いて、類似度評価のために、4種類のよく似たレポートを自作した。表現の改変(改悪)は、エキサイト日英翻訳→google英日再翻訳をした文章をベースに、提出されたレポートを参考にして読みづらい日本語表現アレンジを加えた。

**ダミーレポート1 原本 学籍番号:99999**

*・人工知能の医療応用事例
 ゲノム情報と電子カルテ情報から腹部大動脈瘤を予測する研究結果が2018年にスタンフォード大学の研究グループから発表されている。
腹部大動脈瘤は頻度が最も高い大動脈瘤であり、動脈硬化などの原因によって通常直径約2cmの腹部大動脈が3cm以上に膨張した状態を指す。破裂するまで自覚症

元記事を表示

pygribで気象庁のGRIB2ファイルを読む

# はじめに

ここでは[気象庁のサンプルデータ一覧](https://www.data.jma.go.jp/developer/gpv_sample.html)のうち、以下のファイルを対象とする。

- 全球数値予報モデルGPV (GSM)
- メソ数値予報モデルGPV (MSM)
- 局所数値予報モデルGPV (LFM)

いずれもGRIB2というバイナリ形式が採用されている。

### 検証環境

Anacondaの仮想環境を使用した。

- Windows 10 Home
- conda 4.8.2
- Python 3.7.7

# ライブラリインストール

記事タイトルの通り、pygribを利用する。pipやcondaからインストール可能。

```
conda install -c conda-forge pygrib
```

# 実装例

気象庁のサンプルファイル(MSM)から各時刻(JST)における神宮球場(35.6745, 139.7169)(に一番近いメッシュ地点)の気温[℃]を取得する。
※有効数字があやしいですが気にしないでください。

```pytho

元記事を表示

Seleniumで指定座標をクリックさせる

動的なウェブサイトなどで、タグを追いかけられないときにどうぞ。
[helium](https://github.com/mherrmann/selenium-python-helium)を使うともっと楽なんですが、Anacondaで提供されていないようなので、自作してみました。

最後の`actions.perform()`を書き忘れて、「動かない。指定するタグが悪いのか?」って結構悩みました。

```python
def click_by_position(driver, x, y):
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)

# MOVE TO TOP_LEFT (move_to_element will guide you to the CENTER of the element)
parent = driver.find_element_by_tag_name("html")
actio

元記事を表示

Numpyで日本国旗をパラオ国旗にしたい

#はじめに

日本国旗をパラオ国旗にするために,numpyで簡単な画像処理を行いました.

#日本国旗とは

>**日本の国旗-Wikipedia**
日本の国旗(にっぽんのこっき、にほんのこっき)は、法律上は日章旗(にっしょうき)と呼ばれ、日本では古くから、一般的に日の丸(ひのまる)と呼ばれる旗である。

- 縦横比 2:3
- 円の直径 縦の3/5
- 円の位置 国旗の中心

※1999年に公布・施行された「国旗及び国歌に関する法律」に定められたもの

#パラオ国旗とは

>**パラオの国旗-Wikipedia**
パラオ共和国(Beluu er a Belau)の国旗は、中央のやや旗竿寄りに黄色の円を配し、明るい青を背景色とした旗である。

- 縦横比 5:8
- 円の位置 中心から旗竿よりに1/10ずれる

※円の直径は詳しい数字が分からなかったので日本国旗の円を使いました.

#コード

```kokki.py
import cv2
import numpy as np

img = cv2.imread("./test/japan.png").astype(np.float

元記事を表示

Python3 での末尾再帰最適化

# 結論

[Pythonのクロージャで末尾再帰最適化をする。 - tanihito’s blog](http://tanihito.hatenablog.com/entry/20110119/1295459297)
[Pythonで末尾再帰する - Blanktar](https://blanktar.jp/blog/2013/06/python-tail-recurusion)

上記を参考に Python3 で書き直してみる。

```python:tail_recursion.py
from functools import wraps

def tail_recursion(func):
firstcall = True
params = ((), {})
result = func

@wraps(func)
def wrapper(*args, **kwd):
nonlocal firstcall, params, result
params = args, kwd
if firstcall:
firstcall =

元記事を表示

全探索の問題

#全探索を復習
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】](https://qiita.com/e869120/items/f1c6f98364d1443148b3#1-6-4-%E5%85%A8%E6%8E%A2%E7%B4%A2%E3%81%AB%E6%85%A3%E3%82%8C%E3%82%8B)

プログラミングコンテストチャレンジブックと並行して上記の記事を学習していきます。
モチベーションの維持の目的です。
プログラミングコンテストチャレンジブックは難しい。

そしてたまには解かないと忘れてしまいます。

##全探索の問題
###[B - 81](https://atcoder.jp/contests/abc144/tasks/abc144_b)

```python:python
from math import floor
from decimal import Decimal

N = int(input())

for i in range(1, 10):
for j in range(1, 10):

元記事を表示

PythonでJSONファイルを作成する方法

## はじめに
Pythonのjsonモジュールでは、JSONファイルを読み込んだり、JSON形式のオブジェクトを書き込むことはできるが、JSONファイルを作成することはできない。JSONファイル作成を、必要に迫られ実装したので、メモとして残しておく。

公式ドキュメントより
https://docs.python.org/ja/3/library/json.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489653/6d11c838-e4a5-bd6c-c70f-e07f62173eba.png)

## 実装方針
- 書き込みたいJSONファイルが空なら [ を挿入する
- JSON形式のオブジェクトを挿入する
- 末尾に ] を挿入する
- 次に挿入するとき、末尾が ] なら , に置き換える

## 実装例
以下の3ファイルは同階層にあるものとする

```python:json_make.py
import json
from pathlib import Path

元記事を表示

【FX】Dockerを使ってPythonでoanda-APIを叩く

## 概要
FXの取引といえば基本手作業でぽちぽちやるものだ。
これをPythonを使ってプログラミングで自動で決済したりできると凄い楽しいことになる。
機械学習を用いて未来の価格を予測したり、決められた時間や決められたロジックで自動売買の設定だってできる。
ここではそのための最初の一歩として、 Dockerからapiを叩いてPythonを使った決済ができるようになる を目標とする。

## 前提となる環境
- oandaに口座(デモ口座でもよし)を作り、APIのtokenを発行する
- docker, docker-composeを使える環境

##oandaの設定
Pythonなどのプログラミング言語を用いてFXの売買をするためにはAPIを叩かなければいけない。
SBI証券とかDMMFXなどFXをできる業者はいっぱいあるが、国内でFX用のAPIを提供しているところはoandaくらいなので、まずはoandaで口座を作る。
バグとかがあったら大変なので、最初はデモ口座でいいだろう。15分くらいあればちゃちゃっとできる。
oanda APIを使ったFXの取引についてはQiitaだと以

元記事を表示

ABCモジュールを使った抽象基底クラスを作る方法

#抽象基底クラスとは
抽象基底クラスはクラスの一つで、通常のクラスとは違い次のような特徴を持ちます。

・インスタンスを持たない (インスタンスを作ろうとするとエラーを吐きます)
・継承をすることによって使用する

抽象基底クラスの関数(メソッド)を**仮想関数**といいます。
抽象基底クラス(親クラス)に存在するメソッドは、サブクラス(子クラス)でも**用意しなければなりません**。

メリットの関しては[こちらのQiitaの記事](https://qiita.com/bluepost59/items/eef6f48fdd322b0b9791)の方が詳しく説明してくれているので、是非ご覧ください

#必要なもの
・**クラスと継承の知識**
・**Pythonの実行環境**

#ABCモジュールを使用した抽象基底クラスの作成
```Python:Actor.py
from abc import ABCMeta, abstractmethod, ABC

class Actor(metaclass=ABCMeta):

@abstractmethod
def __i

元記事を表示

Jupyter Notebookの起動時のディレクトリを変更する

# はじめに

jupyter notebook起動時のフォルダはデフォルトだとユーザーディレクトリになっていて余計なディレクトリも表示されてしまい色々と不便でした。
そこでjupyter notebook用のフォルダを新しく作り、それを起動時のディレクトリに変更したので、その時にやったことを備忘録としてまとめました。
configファイルを作成して変更する方法もあるようですが、私の環境では上手くいきませんでした。

# 動作環境

- Windows10
- conda 4.8.3
- Jupyter Notebook 6.0.3
- chrome

# 方法

Jupyter Notebookのショートカットのプロパティを変更します。

## 1. Jupyter Notebookのショートカットがあるディレクトリを開く

0. `Windowsキー`を押してスタートメニューを開く
1. `Anaconda3`をクリックして`Jupyter Notebook`を左クリック
2. `その他`>`ファイルの場所を開く`を選択

![image.png](https://qiita-im

元記事を表示

Gmailの複数アカウント対策

# 概要

gmailの特殊な仕様と複数アカウント対策をまとめます。

# 前提知識

WEBメールの仕様として、メールアドレス以下のような構成になっています。

```
ユーザー名@ホスト名
```

# gmailの仕様

以下のメールアドレス送信したメールは、gmailの仕様により**`example@gamil.com`**に届きます。

- 1) ユーザー名の大文字小文字は区別されない

**`EXAMPLE@gmail.com`**

- 2) ユーザー名のエイリアスが使える(+から後ろ)

**`example+qiita@gmail.com`**

- 3) ドットは無視される

**`ex.am.ple@gamil.com`**

- 4) ホスト名は、"gmail.com" "googlemail.com"はどちらも使える

**`example@googlemail.com`**

- 要するに

こんなメールアドレスでも送信先は同じです

**`E.x.A.m.P.l.E+qiita@googlemail.com`**

# 問題点

どんなメールアドレスでも登

元記事を表示

Python3 venvによる環境構築

venvによる環境構築メモ

## 環境を作成

`python3 -m venv ./path/to/env`

## Activate(環境を有効化)
`. ./path/to/env/bin/activate`

## Deactivate(環境を無効化)
`deactivate`

## インストールされているパッケージを確認(pip)
`pip freeze`

## 環境を削除
`python -m venv --clear ./path/to/env`

元記事を表示

製薬企業研究者がPythonを用いたウェブスクレイピングについてまとめてみた

# はじめに

ここでは、Pythonを用いたウェブスクレイピングについて解説します。

# BeautifulSoup

以下のHTMLファイルを表示するウェブページに対してクローリング、スクレイピングを行うとします。

```html

```

Pythonスクリプトは以下のようになります。

```python
import requests
from bs4 import BeautifulSoup

url = HTMLを取得するURL
response = requests.get(url)
response.encoding = response.apparent_encoding

bs

元記事を表示

Laravelに似ているPythonのWEBフレームワークMasoniteの環境をDockerで作ってみた!

## 目的
Laravelに似たPythonのWEBフレームワークMasoniteの動作環境をDockerを利用して作成する事で、共同開発で使えるようにしました。

## 動作環境
Mac: Catalina10.15.5
Docker: 19.03.8

## 環境構築方法と起動方法
作業ディレクトリに以下の内容のDockerfileとdataディレクトリを作成する。

```
FROM ubuntu:latest

COPY ./requirements.txt /opt

RUN apt-get update && apt-get -y upgrade && \
apt-get install tzdata language-pack-ja gcc libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 wget -y && \
wget -P /opt https://repo.continuu

元記事を表示

OTHERカテゴリの最新記事