Python関連のことを調べてみた2021年03月27日

Python関連のことを調べてみた2021年03月27日

Flaskのsessionでmutableなオブジェクトを扱う

Flaskのsessionではmutableなオブジェクトの変更は検知されず、変更が反映されない。
例えば以下のコードがそれに該当する。

“`python
from flask import Flask, session

app = Flask(__name__)
app.secret_key = b’a’

@app.route(‘/’)
def index():
if not ‘mutable’ in session:
session[‘mutable’] = []
session[‘mutable’].append(1)
return str(session[‘mutable’])

if __name__ == “__main__”:
app.run(‘localhost’, port=80, debug=True)
“`

`http://localhost/`にアクセスした時に期待する挙動は`[1]`、`[1,1]`、`[1,1,1]`のようにアクセスするたびに配列に1が追加されていくものだが、実際には1つ目以降の1は

元記事を表示

[HackDay2021] 群れるかわいいロボットのつくり方

今回[HackDay2021](https://hackday.jp “HackDay2021”)に初参加しました。24時間でゴリゴリ作品を作ってそれを90秒のプレゼンで表現するというのはなかなか刺激的な体験でした。うまくいかなくて辛いと思うこともありましたがとても楽しかったです。せっかく作ったのでここでは全体システムとロボットの作り方について紹介したいと思います。

## 完成品


こんな感じのロボット9台を24時間で作りきりました。何度見てもほんとかわいいですよね。

## 全体システ

元記事を表示

Django 投稿機能作成【Django つぶやきアプリ開発 #3】

#0. はじめに

[前回](https://qiita.com/1219mai0410/items/cac42d441707649844f6)アプリケーションを作成した続きになる。
今回は投稿機能を作成する。
ユーザーがメッセージを送信→送信された内容を受け取る→データベースに保存→データベースからメッセージ内容を受け取る→表示
このような流れで投稿機能を作成していく。

#1. メッセージモデル

まずはデータベースを設定していく。データベースは項目ごとにデータを保存する。この項目をテーブルと言う。例えば、メッセージというテーブルには投稿者、投稿内容、goodの数、etc…グッドというテーブルにgoodしたユーザー、goodされたメッセージetc…といった具合だ。
そしてこのテーブル定義をモデルと呼ぶ。
`post`ディレクトリ内の`models.py`ファイルを開く。これがモデルを作成するファイルだ。

“`python:models.py
from django.db import models
“`

初期段階で上記が入力されているだろう。ここでインポートしている

元記事を表示

OMC021 プログラミングを用いた解法

# はじめに
数学コンテストサイト「OnlineMathContest」の「OMC021 (for beginners)」において、B, C問題を解く際に、プログラミング (Python) を利用しました。
そのコードと解法・解説を記載します。
(コンテスト終了後に、より良さそうな方法やより分かりやすそうな記法などを発見した場合には、そちらを記載しています。)

OMC021 (for beginners)
https://onlinemathcontest.com/contests/omc021

# B問題
問題
https://onlinemathcontest.com/contests/omc021/tasks/omc021_b

最小公倍数が $10^{10} = 2^{10} 5^{10}$ であることより、 $a, b$ はどちらも $10^{10}$ 以下であり、かつ $2, 5$ 以外の素因数をもっていてはいけないことがわかります。
よって $a, b$ は、それぞれ $2^p 5^q \; (0≦p, q≦10)$ と表すことができます。
ここからさら

元記事を表示

PythonとSeleniumを使って楽天銀行の明細取得(CSVダウンロード)する

PythonとSeleniumを使って、楽天銀行サイトにログインして明細データを取得(CSVダウンロード)する方法を解説します。サンプルコード全文も記事の後半に載せているので参考になれば幸いです。

※2021/03/27時点の情報です。

## 環境
– Windows 10
– Python 3.8
– Selenium 3.141.0

## はじめに
ログインのみのサンプルは、こちらの記事に書きました。

https://qiita.com/yoshi2045/items/2fff5bf5f0fa763f7104

この記事では、CSVダウンロードする部分にポイントを絞って解説していきます。全体の流れはサンプルコード全文でご確認ください。

なお、お試しで書いた状態なので、クラス化もメソッド化もしてません。エラー処理も考慮してない状態です。いずれキレイに書き直したいと思っています。

## プロファイル設定をする
まず、ファイルをダウンロードするための準備を行います。

“`python
# ダウンロードフォルダ
# 相対パス指定はできない模様
# dl_folder =

元記事を表示

Python/C APIを読む その3(超高水準レイヤ)

#概要
Pythonの構造を理解する助けとして、C APIのドキュメントを読み砕いていく。

#内容
##環境
Python 3.7 (CPython)に話を固定するため、
以下のコミットに話を限定したいが、必ずしもそうはならない。
[tree](https://github.com/python/cpython/tree/a144feeb7ec501aaf30072d50e70d54b200e5ef0) ([コミット](https://github.com/python/cpython/commit/79373951b3eab585d42e0f0ab83718cbe1d0ee33); [ブランチ](https://github.com/python/cpython/tree/3.7))
(↑ githubのリンク)

##Py_\*Main
###`int Py_Main(int argc, wchar_t **argv)`
####<概説>
標準インタプリタのためのメインプログラム。`argc`と`argv`引数をCプログラムの`main()`関数へ渡す。
戻り値はインタプリ

元記事を表示

ウェット(wet)出身者がバイオインフォマティクス始めました

#まえがき
この記事は著者の初投稿記事になります。
読み苦しい点が沢山あると思いますが、生温い目で見てください。
色んな方の記事などを参考にしつつ、わかりやすくアウトプットしていけたらなと思います。

#記事を書こうと思ったきっかけ
大学時代からずっとウェットで実験しかしてこなかった私ですが、最近仕事の縁もあり、バイオインフォマティクスっぽい業務をやることになりました。ついにDRYとWETの間の大きな溝を少し乗り越えられそうな気がするので、その経験を記録に残しつつ、同じ境遇の人がいたら参考になればと思ったのがきっかけです。
(基本、自己満足になりそうな予感です。)

###こんな人に読んでもらえたら
DRYを始める前の私は、漠然以下のようなことをずーっと思っていましたが同じようなことを思っている人って世の中にたくさんいるんじゃないかなーって思います。

* WET専門だけどDRYの解析もできたらかっこいいなあ
* WETで実験ばかりやっていてスキルが身についているのかなあ
* でもDRYって何からやればいいかわからないなあ
* 参考書とかWEBサービスとか色々スタートしてみて、少しはで

元記事を表示

paiza.IO の API を優しく触ってみる

# はじめに

私の初めての記事なので優しく見てください.

[paiza.IO](https://paiza.io/) は色んな言語のコードを実行できる素晴らしいサイトです.このサイトには API が用意されていて簡単に自分のプログラムに組み込むことができます.

この記事のゴールは色んな言語をコマンドラインで実行できるようにする事です.具体的には,

“`py:hello.py
print(‘hello world’)
“`

というファイルを作って

“`
$ ./paiza.py python3 hello.py
“`

とすると

“`
–stdout–
hello world

–build_stderr–
None
–stderr–

“`

と表示されるようにする事です.

## 前提知識

– Python の基本的な文法

## 著者の環境

– macOS Catalina 10.15.7
– Python 3.8.1

# 説明

`paiza.py` というファイル名で作っていきます.

ファイル名で実行できるように最初に Sheban

元記事を表示

はじめてのDjango〜プロジェクトを作成する〜

## はじめてに
あいかわらず、Mac M1に苦戦しまくっています。(クソ初心者が購入するんじゃなかったと、軽く後悔もしています。私がバカですね。。。)
今もtensorflowをいまだにインストールできず、ニューラルネットワークもチマチマしかできていません。。。
そんな中、pythonの勉強になればと思い、Djangoに手を出していました。
ここでは、すぐ忘れている私自身のために、備忘録として書いていきます。

# Djangoとは
そもそもDjangoとは、Pythonで実装されたWebアプリケーションフレームワークです。
基本的な機能は、標準装備されており、必要に応じてカスタマイズしていくという、初心者でも優しいフレームワークです。

## プロジェクトを作成する
はじめてなので、プロジェクトを作成して、ローカルサーバーを起動するまでを書いていきます!

### 前提
端末はMac M1です。
conda環境で構築します。
(Mac M1の場合は、miniforgeをインストールしてconda環境を構築してください。)

### condaでDjango環境を作る
ターミナルを開

元記事を表示

Numpyについて

## Numpyについて
今回はNumpyについて学習したのでまとめてみました。
要点だけまとめて記述していきます。

## Numpyとは
まずNumpyの定義として、
「Pythonにおいて数値計算を効率的に行うための拡張モジュール」
となります。
特に線形代数やベクトルや行列の演算を行うライブラリです。

## インストール
numpyのインストール方法。

“`python:qiita.py
$ pip instal numpy
“`
## np.array()
numpyで配列を作るのにはarray()関数を使います。

“`python:qiita.py
$ x = np.array([1, 2, 3])
# array([1, 2, 3])
“`

## 行列、次元数を確認
行列のサイズを確認する時は、shapeを使います。

“`python:qiita.py
$ x.shape
# (3,)
# これでは1次元配列になっているので、
$ x = np.array([[1, 2, 3]])
# このように書き換えてshapeを使うと、
$ x.shape
#

元記事を表示

PythonのUdemyパッケージを使ってUdemyのコースにあるレクチャーの一覧を取得しcsvで保存する

# はじめに

私はUdemyというサイトを利用してよく学習します。

購入したコースが増えてきた結果、複数のコースで同じ内容のレッスンを扱っているケースも出てきました。
なのであるコースのレッスンが十分に理解できなかった場合に別のコースで似た内容を扱っているならそれを見て補足するという事がしたくてコースで扱うレッスンの一覧を作成する事にしました。

コースを開いてレッスンを全て選択してテキストエディターに貼り付けるという事を以前やっていましたがアナログ感があったので勉強をかねてPythonを使って一覧を取りPandasに格納して最期にcsvで保存します。

# 事前準備

– Udemy APIの申請
– Udemy packageのインストール
– Pandas packageのインストール
– 環境変数の設定

## Udemy APIの申請

Udemyパッケージは内部的にUdemy APIを使っており、APIを使うにはclient id と Client secret取得の為APIの申請が必要です。

[https://www.udemy.com/](https://www

元記事を表示

法律文書における単語の共起

法律文書において共起される単語ペアを列挙する。
前記事までn-gramで頑張っていたけれど本記事ではおとなしくMeCab利用。

# 参考
以下を参考にさせて頂いた。ただし、元記事ではグラフまでやっているが、本記事では頻出のペアを表示するまで。
[3. Pythonによる自然言語処理 2-1. 共起ネットワーク](https://qiita.com/y_itoh/items/7aa33ba0b1e30b3ea33d)

# 異なる点
元記事から手を加えた点だけ記載する。

## 利用しない単語
元記事では、名詞の共起をやっていた。本記事でもその点は同じ。名詞の中でも数(数詞)ではないものは削除した(あらかじめ削除したほうが良かったかも)点は異なる。法律の文書に〇〇条などの表現が邪魔になりそうな感じがした。

“`python
noun_list = [[v.split()[2] for v in m.parse(line).splitlines() if (len(v.split())>=3 and v.split()[3][:2]==’名詞’ and v.split()[3][3

元記事を表示

nlplotを使って自然言語データを可視化してみた

* 製造業出身のデータサイエンティストがお送りする記事
* 今回は自然言語データの可視化にnlplotというライブラリーが良さそうでしたので試してみました。

##はじめに
今までずっと構造化データを扱っておりましたが、非構造化データも扱えるようになりたいと思い、まずは自然言語データを対象に可視化から勉強してみました。

##nlplotとは
nlplotは基本的には、自然言語(NLP)において基本的な可視化を簡単にできるようにしたパッケージらしいです。
NLPにおいては、知識が無いので、詳しいことは[nlplotのGithub](https://github.com/takapy0210/nlplot)を参考にご確認ください。
[ブログの記事](https://www.takapy.work/entry/2020/05/17/192947)も見つけましたので、確認して頂けますと幸いです。

##nlplotを使ってみる
今回、使用するデータはlivedoorニュースコーパスの「[ldcc-20140209.tar.gz](https://www.rondhuit.com/downlo

元記事を表示

【Segtree編】AtCoder Library 解読 〜Pythonでの実装まで〜

# 0. はじめに
2020年9月7日にAtCoder公式のアルゴリズム集 [AtCoder Library](https://atcoder.jp/posts/517) (**ACL**)が公開されました。
私はACLに収録されているアルゴリズムのほとんどが初見だったのでいい機会だと思い、アルゴリズムの勉強からPythonでの実装までを行いました。

この記事では**Segtree**(**セグメント木**)をみていきます。

## 対象としている読者

* セグメント木ってなに?という方。
* セグメント木を理解し自分で実装できるようにしたい方。
* ACLのコードを見てみたけど**何をしているのかわからない**方。
* C++はわからないのでPythonで読み進めたい方。

## 参考にしたもの

関連する数学の参考記事です。

* [日本語版Wikipedia-二項演算](https://ja.wikipedia.org/wiki/%E4%BA%8C%E9%A0%85%E6%BC%94%E7%AE%97)
* [日本語版Wikipedia-モノイド](https://ja.

元記事を表示

Python の HTTPS リクエストを Fiddler でキャプチャしようとしてエラーになるときの対処法

#何が起きたのか
Python の Requests ライブラリが発行している HTTPS POST リクエストを Fiddler でキャプチャして中身を見ようとしたら “check_hostname requires server_hostname” というエラーで例外を吐いてアプリが落ちてしまった。

#何をしようとしてたのか
Azure の Cognitive Services の Long Audio API の REST API の仕様がイマイチわからなかったので、ドキュメント中にある Python のコードの動きからリバースエンジニアリングを仕掛けようとしてた。

Long Audio API
https://docs.microsoft.com/ja-jp/azure/cognitive-services/speech-service/long-audio-api

#見立て
Fiddler が HTTPS の終端をしたうえで通信内容をキャプチャ、その後再暗号化をして Python に通信を受け渡すという(中間者攻撃的な)プロキシの働きをしているのを、Python の証明

元記事を表示

Django本番環境(heroku)でcssが文字化けして読み込まれなかったのをなんとか直した

#バグの内容
Djangoで作ったアプリケーションをherokuでデプロイしたらブラウザによってはcssが全く読み込まれなかった。
cssが読み込まれたブラウザ->MacOS版Chrome,Android版Chrome
読み込まれなかったブラウザ->Mac版Safari,ios版Safari,ios版Chrome
#バグの原因
cssが読み込まれなかったブラウザで開発ツールを用い、htmlファイルのlinkタグに貼ってあるcssファイルの中身を見ると文字化けしていた。
heroku run bashで本番環境に入り、collectstaticでできたフォルダ内を覗くとcssファイルが圧縮されたcss.gzファイルがあった。
試しにcss.gzファイルの中身をcatコマンド見てみると文字化けしており、開発ツールで見た文字化けと完全に一致していた。
このことからhtmlファイルのリンクが解凍前のcss.gzファイルにつながっていることが原因だと考えられる。
#対処方法
解凍後のcss.gzファイルにリンクを繋げられたら一番よかったのだがやり方がわからなかったので(知ってる人教えてもらえたら

元記事を表示

Python初心者のためのTips & Tricks

 新人のpython使いのためのTips & Tricksを書きます。要点は以下の6点です。

1. 標準ライブラリを使ってコードを簡素化
2. 無駄なfor/while文を排除
3. コードの実行とリソース要件のトラック
4. 2つのテーブルを結合する際の行数の増加を防ぐ
5. Stack Overflowでコーディングソリューションを見つける
6. コードのユニットテスト

#1. 標準ライブラリを使ってコードを簡素化
 標準ライブラリはガンガン使いましょう。単にコードが見やすく短くなるだけでなく、より効率的に動作するようになります。

* 良くない例

“`python
import CSV

rows = []
colnames = [‘a’, ‘b’, ‘c’]

with open(‘filename.csv’, ‘rb’) as f:
reader = csv.reader(f)
for row in reader:
rows.append(rows)

data = pd.DataFrame(rows, cols = colnames)
“`

元記事を表示

pipでeditable mode以外のパッケージを更新

`pip install -e`でインストールしたパッケージ以外を全更新

“`bash:Terminal
pip list | awk ‘NR>2&&$3==””{print$1}’ | xargs pip install -U
“`

元記事を表示

Djangoでゲームを作る

#背景
学びのためにDjangoでゲームを作ってみることにする。
テトリスなど色々候補はあると思うがスロットゲームにすることにする。
#モヤモヤ
Djangoと言ったってRestもあるし・・・画面も面倒だし・・・
どうしたって業務・即戦力がきになる・・・オシャレなこともしたいし・・・
→ データアクセスがどっちも1つの山なんでデータベースから取ってきて
JSONで投入するという一旦完璧を目指す。
この時に、スクレイピングとかデータ解析などもやってしまう。
#考えないこと
DjangoRest
#ロードマップ 作り物系
・公式やってみる。
・toDoリスト作ってみる
・ゲーム作ってみる
    → 今ここ
・データベースから取ってきて管理画面だけのを作ってみる。
 →JSONでデータ投入
#仕様
・スロットマシン
・初期表示 4 が3枚並んでいる。
・ボタンを押すとランダム検索が起こる。
・スロットの絵柄と得点 例
6 3個揃うと 10000点 
7 3個揃うと  7000点
5 3個揃うと 300点
・結果を表示する。
・Python3 Djangoを使用
#やって見て
もちろんや

元記事を表示

slackAppで絵文字ジェネレータっぽいのを作る(Python&Gyazo&slack-bolt)

# slackAppで絵文字ジェネレータっぽいのを作る(Python&Gyazo&slack-bolt)

## 目次

– [slackAppで絵文字ジェネレータっぽいのを作るPython&Gyazo&slack-bolt](#slackapp%E3%81%A7%E7%B5%B5%E6%96%87%E5%AD%97%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%A3%E3%81%BD%E3%81%84%E3%81%AE%E3%82%92%E4%BD%9C%E3%82%8Bpythongyazoslack-bolt)
– [目次](#%E7%9B%AE%E6%AC%A1)
– [概要](#%E6%A6%82%E8%A6%81)
– [目標](#%E7%9B%AE%E6%A8%99)
– [使うもの](#%E4%BD%BF%E3%81%86%E3%82%82%E3%81%AE)
– [構成](#%E6%A7%8B%E6%88

元記事を表示

OTHERカテゴリの最新記事