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

Python3関連のことを調べてみた2019年11月09日
目次

【Python】 Bottleのソースコードを読んでみる その2

この記事は[前回](https://qiita.com/nyancook/items/7c00037c225986279eb1)の続きになっていますが、単独でも問題なく読めるはずです。
まあ、自分用の整理のための記事ですが…

# 本丸のBottleクラス

いよいよ天守閣の`Bottle`クラス。
まずは前回からの流れで、`__call__`メソッドから。

“`bottle.py

class Bottle(object):

def __call__(self, environ, start_response):
“”” Each instance of :class:’Bottle’ is a WSGI application. “””
return self.wsgi(environ, start_response)

def wsgi(self, environ, start_response):
“”” The bottle WSGI-interface. “””
try:

元記事を表示

pipのライブラリーを一括で自動更新するコマンド

自分用の備忘録です。
他の方も参考になれば幸いです。

updateできるライブラリーがあるか、確認する。
コマンドプロンプトで入力する

“`
pip list –o
“`

アップデートが一つしかない場合は以下のコードを入力

“`
pip install -U パッケージ名
“`

本題

まとめてアップデートしたい場合は、新しくライブラリーを入れます。

“`
pip install pip-review
“`

インストール完了後、以下のコマンドでアップデートが開始されます。

“`
pip-review –auto
“`

元記事を表示

Pythonでライフゲームの実装

# 初めに
久しぶりにPygameを使ってプログラムを実装しました。今回はゲームから少し離れてライフゲームを実装しました。(名前にゲームが入っていますがゲームじゃないのでセーフ)実装の難易度はそこまで高くないです。

# ライフゲームとは
ライフゲームは簡単に言うと生命のシミュレーションです。時間の経過とともに生物が誕生したり、死滅していく様子が観察できます。ライフゲームにはほんの少しのルールがあり、それに従ってセルと呼ばれるブロックの個数が更新されていきます。

## ライフゲームのルール
ライフゲームの更新規則は誕生、生存、死に分けられます。
誕生はセルが死んでいるとき、隣接するセルに生存しているが3つのときに新たにそのセルに生存しているセルが誕生します。
一方で、生存しているセルは隣接する生存しているセルの個数が3または4のときに生存し、それ以外のときに死滅します。ここでの死滅は現実世界の過疎や過密に対応しています。
ここで下の図では、中心のセルはそれぞれ左から誕生、生存、死(過疎)、死(過密)の規則が適用されます。
![Screenshot from 2019-11-09 00

元記事を表示

ラズパイでモーターを動かしたかったので、WaveshareのMotor Driver Boardを使ってみた

# とりあえず動画

[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/65pnIw8lZFw/0.jpg)](http://www.youtube.com/watch?v=65pnIw8lZFw)

こんなマニアック記事誰が読むんだ。。

Raspberry Piには、ある分野に特化したHATと呼ばれる拡張基盤がたくさん存在します。
今回、ラズパイでモーターを動かす任務が舞い込んできました。
最初はブレッドボードで頑張っていたのですが、面倒になり、

いやいや、なんかHATを探せばいいやん!!!

というわけで探しにかかりました。

## HATの条件
– ラズパイのGPIOが全て生き残ること。
– 電池だけでラズパイ本体の給電もできること。
– 5000円以下
– 2つのモーターのセットが可能

の4点でした。

そして見つけたのがこれ!!
![20191106_234520.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519741/65

元記事を表示

素因数分解、約数列挙

“`python

def prime_decomposition(n):
table = []
for i in range(2, int(n ** 0.5) + 1):
while n % i == 0:
table += [i]
n //= i
if n == 1:
break
if n != 1:
table += [n]
return table
“`
素因数分解したリストを返すプログラム。

こちらは約数列挙。競プロでは必須である。まず、リストで欲しい場合。

“`python

def make_divisors(n):
divisors = []
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors += [i]
if i != n // i:

元記事を表示

【Python】 Bottleのソースコードを読んでみる その1

# bottle.pyを読む

Pythonのwebフレームワーク、Bottleのコードリーディングをしてみました。
Bottleのソースコードはbottle.pyに集約されているので、このファイルを読むことになります。

GitHubはこちら。
https://github.com/bottlepy/bottle

以下で引用するコードは、bottle.pyから必要な部分のみを引用したものになります。
また、ところどころ勝手にコメントを付け加えています。

最初から細かい部分まで追うと大変なので、まずは全体の流れを掴みたいと思います。

# 最初の入り口: run()

起動から順番にソースを追っていきたいと思います。
Bottleの起動は、例えばドキュメントによると以下のようにする。

“`python
from bottle import route, run, template

@route(‘/hello/‘)
def index(name):
return template(‘Hello {{name}}!’, name=name)

元記事を表示

Python3 csvライブラリで想定通りにパースされない問題(クォーテーション起因)

記念すべき(?)初投稿です。

# 事の起こり
pythonに触れたての初心者なので、ネットの情報を漁りながらcsvライブラリを使い
tsvファイルを取り込む処理を書いていたところ

“`python:tsv_reader.py
import csv
import pprint

def loadTsv(filename):
with open(filename, newline=”) as f:
reader = csv.reader(f, delimiter=’\t’)
for row in reader:
pprint.pprint(row)
“`

下記のようなデータに対してパースがうまく行かない現象が発生しました。

“`tsv:sample.tsv
0 test 1 hogehoge a b
0 test 1 “fugafuga a c
0 test 1 piyopiyo a b c

元記事を表示

pillowとopencv2で画像をぼかしてみる

#目的
先日の記事のせいで、少し画像処理に興味が湧いてきました。
とは言え最後に数学を触ったのは高3の期末テスト…。しかも2点。
理解不能なところもありましたが、まずは触ってみようということでコードを書いてみました。

#まずはインストールと画像の用意
opencv2ってのが画像処理用のモジュールらしい。ということで安直に「pip install opencv2」するも見つからないらしい。どうやらこっちが正しい模様。

“`shell
$ pip install opencv-python
“`

ぼかす画像は目の保養としてフリー素材の田舎っぽい画像を採用。

![inaka.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495652/775ab469-a88c-456f-f5a9-360a4b1a2232.jpeg)

こいつをぼかしていきましょう。

#コード
ではコードを書いていきます。

##インポート部分+画像読み込み
“`python:main.py
import cv2

#画像

元記事を表示

Pythonのリスト内包表記を使って色々やってみよう

#1.はじめに
 Pythonに関して記事を書くのは初めてですね。最近はnimなるマイナー言語を嗜んでいるのですが、本当にマイナーなのでPythonも並行して勉強しつつ、友人たちに「nimはいいぞ、ジョージ…」とnimを布教する日々を過ごしてます。
 さて話は逸れましたが、今回はPythonのリスト内包表記で色んな問題を解きつつリスト内包表記に慣れていこうかなという記事を書こうかなと思います。

#2.リスト内包表記の表現の仕方(ラムダ式とかif文とか)
まずは基本から
###全要素が同じ値のリストを作りたい。
“`python:
a=[0 for i in range(10)]
#[0,0,0,0,0,0,0,0,0,0]
“`
###ある規則に則った値を要素に持つリストを作りたい。
例えば交差1の等差数列

“`python:
a=[i for i in range(10)]
#[0,1,2,3,4,5,6,7,8,9]
“`
関数f(x)を用いて

“`python:
def f(x):
return x**2
a=[f(i) for i in range(10

元記事を表示

Amazon Comprehendが日本語対応したのでAlexaスキルで感情分析してみた

# 概要
2019年11月7日にAWSの自然言語処理サービスである**Amazon Comprehend**が日本語に対応したので、早速Alexaスキルで感情分析を試してみました。

スキルの作成には[ASK CLI](https://developer.amazon.com/ja/docs/smapi/ask-cli-command-reference.html)を使い、言語はPython3を使っているのでその辺の知識があると分かりやすいかと思います。

# やった事
Amazon Comprehendの感情分析機能である**Sentiment**を使ってユーザーからの入力を感情分析し、その結果によってレスポンスが変わるAlexaスキルの作成

# 東京リージョンではまだ使えない
2019年11月8日時点でAmazon Comprehendはまだ東京リージョンに対応していないので、ASK CLIでスキル作成する前に `aws configure` でリージョンを `us-east-1` などに変更してあげる必要があります。

#### 現在対応しているリージョン一覧 (2019年1

元記事を表示

【LINE Messaging API】みんなの LINE へプログラムからメッセージを送りたい

## 概要

– 友達登録したユーザに個別にメッセージを送りたい。
– プログラムからそれを行いたい。

![line18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270842/411f0a12-b2e4-78e8-21d1-d9b7c979ab5c.jpeg)

同じような内容のページはすでにネットにある。だけれど自分が持った次のような疑問に、ストレートに応えるページがあってもいいかな、と思い、同じような疑問をもつ誰かに刺さるよう記事をかく。

## もった疑問

– 「LINE プログラムからメッセージ送信」と調べてみたけれど、 LINE Notify とか LINE公式アカウントとか LINE@ とか出てきてようわからん。
– 送信をしたいだけなのに、ネットの記事をみると「さてサーバを用意しよう」と突然サーバが出てきて困惑。

ざっくり簡単に回答すると……

– 使うのは、 LINE公式アカウントを取得したあとに利用できる LINE Messaging API。
– 「送信する」のは自分のぱ

元記事を表示

Python初心者が「Python文法詳解」を読んだメモ #3

# バックナンバー
– [Python初心者が「Python文法詳解」を読んだメモ #1](https://qiita.com/usayomo/items/7024c619c5f72462cb10)
– [Python初心者が「Python文法詳解」を読んだメモ #2](https://qiita.com/usayomo/items/9c1537678bdde813a273)

今日は短めですが、少しずつでもやっていこうと思います。
写経メインでサクッと。

“`py:累積代入文
>>> spam = 10
>>> spam += 100
>>> spam
110
>>> spam -= 60
>>> spam
50
>>> spam *= 10
>>> spam
500
>>> spam /= 2
>>> spam
250.0
>>> spam //= 3
>>> spam
83.0
>>> spam %= 10
>>> spam
3.0
>>> spam **=4
>>> spam
81.0

# ビット演算
>>> spam = 1024
>>> spam >>= 2
>>>

元記事を表示

【Python】boto3でS3ファイル操作まとめ

## ディレクトリ構成

s3で以下のようにファイルが用意されている前提。

“`
line/
└── diagonal/
└── hoge.csv
“`

## 同バケット内でファイルをフォルダ間でコピー

`line/diagonal/hoge.csv`を新たに`line`フォルダ下に`straight`フォルダを作成しそこにコピー

“`python
import os
import boto3

BUCKET_NAME = ‘your_bucket’ # バケット名
COPY_FROM = ‘line/diagonal’ # コピー元ディレクトリパス
COPY_TO = ‘line/straight’ # コピー先ディレクトリパス]
FILE_NAME = ‘hoge.csv’ # ファイル名

s3 = boto3.client(‘s3’)

copy_from_path = os.path.join(COPY_FROM, FILE_NAME)
copy_to_path = os.path.join(COPY_TO, FILE_NAME)

s3.co

元記事を表示

1行で複数代入する変数の型ヒントの書き方

関数の返り値を複数の変数に代入する時に型ヒントの書き方がわからなかったのでメモ.
こうするらしい.
ちなみに1行で複数行代入する構文の名前が不明なのだが, `unpacking a tuple` とかで出てくるっぽい.

– [Type hints when unpacking a tuple?](https://stackoverflow.com/questions/52082939/type-hints-when-unpacking-a-tuple)

“`python
from typing import Tuple

def foo() -> Tuple[int, float]:
return 1, 1.0

a: int
b: float
a, b = foo()

“`

元記事を表示

PythonでYahoo!ニュースのタイトルと配信日時を取得する

###こんにちは

ふと
“`cd desktop/python
“`をして
“`ls
“`したところ、3分クッキング的にできるスクレイピングがあったので記事にしようと思います。

###最初に

「ではこちらが環境設定のできているPCになります〜〜」なんてアシスタントの人が持ってきてくれるわけでもないので環境設定からやりましょう。

ちなみに僕の環境はmacOS Catalina10.15です、不具合だらけで最近よくいろんなアプリが落ちます。

あ、Python3は入ってる前提でお願いします。

今回用意するモジュールは
“`BeautifulSoup“`と“`requests“`です
どちらも入っていない人は“`pip3 install 〇〇“`でインストールしてください。
これでとりあえず材料が揃った感じです。
ここまでで3分経ってそうですね、頑張っていきましょう。

###次に
ターミナルを開いて“`cd destkop“`(ここは自分が保存したい場所でいいです)をして保存先を決めましょう。オススメはデスクトップに“`Python“`というファイルを

元記事を表示

【最小構成】pythonのpillowモジュールを使ってタピオカミルクティーの画像に「100円」の文字を合成する

#目的
きっかけはLINE Botのリッチメニュー。
これは自分で作ったとあるBotなんですが、画面下部にあるリッチメニューをタップすると、
それに見合った応答が返ってくるようになっています。

![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495652/0ffcb3da-7a63-4cbc-3746-06036e4ddb53.png)

さて、今回のポイントはリッチメニューの部分です。
これ、実はボタンでもなんでもなくタダの画像です(現状LINEの仕組み上は画像で表現するしかないっぽい・・・)。

で、これが作りにくいんです。
そんなイイ感じのアプリは残念ながら持っていなかったので、パワポとペイントを使って切り貼りしています。まあそれなりにイイ出来だとは思うんですけど、時間がかかってしまいました。

そこで「それ、Pythonでできるんじゃね?」と思って調べていたところ
pillowなるモジュールでできそうなことが判明!
早速ですがやり方を見ていきましょう

元記事を表示

matplotlib.pyplotでminor ticksを表示できない

# 前提
 初投稿です。
 皆様におかれましては日々の実験結果を図にまとめていらっしゃると思います。最終的には論文投稿を目指すことになりますが、その際に図の体裁にかなり気を配ることになり、基本的なグラフ作成のガイドラインを参照しながら頑張ることになると思います。
 特に、対数軸を使う時には目盛に気を付ける必要があり、例えば、$10^0$,$10^1$,$10^2$の点には長めの主目盛(major ticks)を描き、$10^0$と$10^1$の間には$2,3,4,,,$の点に副目盛(minor ticks)描く必要があります。
 筆者がpython3のmatplotlib.pyplotで図を作る際にminor ticks(副目盛)を表示できないという問題に遭遇しました。本記事では私の取った対処法を記します。

#環境
Python 3.7.3
Anaconda 2019.03
Jupyter notebook 5.7.8

# 状況
実験データを両対数グラフで表示します。
##問題
今回問題に出くわしたコードです。

“`python:jupyter_notebook_cell
im

元記事を表示

Pythonの制御構文、関数(Python学習メモ②)

今回は制御構文と関数についての学習メモです。

## if文
ポイント

* swhichはない(変わりにif, elif, elseを使用)

“`python
# こんな感じで入力待ちにできる
x = int(input(“整数を入れてください: “))

if x < 0: x = 0 print ("負数はゼロとする") elif x == 0: print("ゼロ") elif x == 1: print("ひとつ") else: print("もっと") ``` ## for文 ポイント * あらゆるシーケンス(リストや文字列)のアイテムに対し、そのシーケンス内の順序で反復を×ことができる * 反復中のシーケンスを改変する必要があるときは、コピーを取って反復をかけることが推奨される。これにはスライス表記を使うのが便利。 ```python # 文字列の長さを測る words = ['cat', 'window', 'defenstrate'] for w in words: print(w, len(w)) #

元記事を表示

Python で psd ファイルを処理できるライブラリ psd-toolsについて

# Python でPSDファイルを処理できるライブラリ psd-tools

▼公式ドキュメント
https://psd-tools.readthedocs.io/en/latest/

## テスト画像
今回はこちらの画像をサンプルとして使用します。![3070374.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69701/a118272d-c836-7635-372b-f729d3fad46b.jpeg)
Designed by Freepik

▼ダウンロード先
https://www.freepik.com/free-psd/restaurant-gift-voucher-template_5903685.htm#page=3&position=11

▼Photoshop上でみたレイヤー情報
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

python3でbasemapのインストールに失敗するとき (Mojave)

##うまくいかなかった

python3 に basemap を入れて使いたかったが、公式のやりかたでうまくできなかった人です。下記のような親切な記事通りにやってみたのですが。。。
https://qiita.com/duonys/items/c941bc2818abe5cc1da7

コマンドラインでも、jupyterでも

“`
ImportError: No module named ‘mpl_toolkits.basemap’
“`
を吐いて止まりました。

##解決編

結論としては、StackOverflow の [この記事](https://stackoverflow.com/questions/42299352/installing-basemap-on-mac-python) の 14番目(Alexander Pavlovさん)のコメントにある

“`
pip3 install https://github.com/matplotlib/basemap/archive/master.zip
“`
を実行することで解決しました。ただし、不要なライブラリも多数入っ

元記事を表示

OTHERカテゴリの最新記事