- 1. 本題
- 1.0.3. Pythonでライフゲームの実装
- 1.0.4. ラズパイでモーターを動かしたかったので、WaveshareのMotor Driver Boardを使ってみた
- 1.0.5. 素因数分解、約数列挙
- 1.0.6. 【Python】 Bottleのソースコードを読んでみる その1
- 1.0.7. Python3 csvライブラリで想定通りにパースされない問題(クォーテーション起因)
- 1.0.8. pillowとopencv2で画像をぼかしてみる
- 1.0.9. Pythonのリスト内包表記を使って色々やってみよう
- 1.0.10. Amazon Comprehendが日本語対応したのでAlexaスキルで感情分析してみた
- 1.0.11. 【LINE Messaging API】みんなの LINE へプログラムからメッセージを送りたい
- 1.0.12. Python初心者が「Python文法詳解」を読んだメモ #3
- 1.0.13. 【Python】boto3でS3ファイル操作まとめ
- 1.0.14. 1行で複数代入する変数の型ヒントの書き方
- 1.0.15. PythonでYahoo!ニュースのタイトルと配信日時を取得する
- 1.0.16. 【最小構成】pythonのpillowモジュールを使ってタピオカミルクティーの画像に「100円」の文字を合成する
- 1.0.17. matplotlib.pyplotでminor ticksを表示できない
- 1.0.18. Pythonの制御構文、関数(Python学習メモ②)
- 1.0.19. Python で psd ファイルを処理できるライブラリ psd-toolsについて
- 1.0.20. python3でbasemapのインストールに失敗するとき (Mojave)
【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 pprintdef 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 boto3BUCKET_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 Tupledef foo() -> Tuple[int, float]:
return 1, 1.0a: 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
“`
を実行することで解決しました。ただし、不要なライブラリも多数入っ