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

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

statsモジュールの関数

#cdf関数
累積分布関数を表す。cdfとは「Cumulative Distribution Function」の略。

##累積分布関数とは?
ある値以下となる確率を計算してくれる関数のこと。

###正規分布の時の関数の中身

“`math
\begin{align}
F(x)&=P(X\leq x) \\
&=\int_{-\infty}^{x}\frac{1}{\sqrt{2\pi\sigma^2}}e^{-{\frac{(x-\mu)^2}{2\sigma^2}}}dx
\end{align}
“`

元記事を表示

[Python3 入門 15日目]7章 文字列(7.1.2〜7.1.2.2)

##7.1.2 書式指定
###7.1.2.1 %を使ったスタイル

– 古いスタイルの書式設定は string % dataという形式を使う。
– %と型指定子の間には、幅の上限、文字数の上限、配置、パディングを指定できる。

“`py

#文字列
>>> “%s” % 42
`42`
#10進整数
>>> “%d” % 42
`42`
#16進整数
>>> “%x” % 42
`2a`
#8進整数
>>> “%o” % 42
`52`

#10進float
>>> “%f” % 7.03
`7.030000`
#指数形式float
>>> “%e” % 7.03
`7.030000e+00`
#桁の大きさによって変わる%g (10進floatまたは指数形式float)
>>> “%g” % 7.03
`7.03`
#整数とリテラルの%
>>> “%d%%” % 100
`100%`

>>> actor = “Richard Gere”
>>> cat=”Chester”
>>> weight=28
#文字列の挿入
>>> “My wife is favorite actor

元記事を表示

Python3のScapyでWOLを発行する(LANコン指定型)

## コントローラを直接指定してWOLを発行したい

WOLの仕様は以下(WireSharkのWiki)とか。

https://wiki.wireshark.org/WakeOnLAN

要はパケット内に

* 0xffを6つ
* その後に対象のMACアドレスを16個並べる

で普通は起きます。ポートとかは関係なくパターンの一致で見れば良いという事もあり、ハードで検出させて割り込み出すとかもまーやれるのかなこれだという感じです。

で、これを送出する場合はUDPパケット作ってでやるのが簡単だと思います。そういうツールもあるみたいですが、私がざっと調べた限りIPアドレスで指定させる物が多かったです。これだとIPアドレスを適当にして発行とかが厳しくなります。なのでコントローラを直接指定して送るやり方を実装してみました。

## Scapy

Scapyを使ってWOLパケットの生成と送信を行います。Scapy自体は前にもチラッと書いてます。以下

https://qiita.com/ken_hamada/items/736e1c22f6c40702d1a7

## 環境

* Mac OS

元記事を表示

Jupyter の kernel に pyenv 環境を追加する

## はじめに
Anaconda の環境登録などはせず,pyenv の環境を Jupyter の kernel として登録する時のメモです.
用途としては,python3系の中でバージョンを細かく分けたいときなどです.
Anaconda の仮想環境登録をする場合は[こちら](https://qiita.com/tomochiii/items/8b937f15c79a0c3eae0e)を参照.

## コマンド一発で

“`
python -m ipykernel install –user –name={name} –display-name={display-name}
“`
* `name`,`display-name` は既存のものと被らないように適宜設定.

## 手順
手元で python 3.7.4 の環境を登録した時の手順です.他のバージョンを登録する場合は適宜変更して下さい.
pyenv のインストール方法はこちらの記事が丁寧に書いてくれています.
→ [pyenv を用いた Python3 インストール](https://qiita.com/hasepyon

元記事を表示

requirements.txtの自動生成 〜Pythonスクリプトから依存パッケージを抽出する〜

# この記事の概要

– `dephell` コマンドを使うと Python パッケージの依存関係記述ファイルの相互変換ができる
– setup.py から requirements.txt を作るとか
– プロジェクトの Python パッケージの `import` を読み取って適切なフォーマットに変換できる
– 依存関係が掲載されていないプロジェクトでも使えるのでオススメ

# はじめに

データの前処理や可視化はどうやったの?みたいな話で Jupyter Notebook が残っているけど、特に requirements.txt とか setup.py が残ってない、みたいなケースがままあると思います。

もはや依存関係のバージョンの同定は不可能ですし、ほとんどの場合システムに組み込むとかしないので「動けばいい(再現すればいい)」のですが、そもそも動かすために依存するライブラリの一覧を作るのが一苦労です。ノートブックを開いて[^1]、import 文からサードパーティのライブラリを特定して、requirements.txt を作る単純作業になります。

[^1]: ほとんどの

元記事を表示

【AWS・Python】Slash Commandsを拡張性高く実装する

# 1. はじめに

本記事ではデザインパターンの一種であるChain Of Responsibilityを利用して、
SlackのSlash Commandsを拡張性高く実装する方法を紹介します。

Slash Commandsの処理を受け取るサーバーはAWSを、言語はPythonを利用します。

手軽に試せるようにコマンド3つでAWSへデプロイできるGitPod環境も用意してあります。

## 1.1 Slash Commands とは

Slack CommandsとはSlackに独自のコマンドを追加し、そのコマンドにより任意の処理を実行できるものです。
Slackが既に用意しているものもあり、有名なのは`/remind`などでしょうか。

“`
/remind me tomorrow 11:00 meeting
“`

と打てば、以下のような表示ととも明日の11時にslack botからリマインドが自分宛に飛んできます。
![62EBF581-B936-412F-9D23-902BAAD5E851.jpeg](https://qiita-image-store.s3.ap-

元記事を表示

【#3】PythonでMinecraftを作る。~プレイヤーの動きの改善(慣性の概念)と衝突判定~

Part of pictures, articles, images on this page are copyrighted by Mojang AB.

![minecraft.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/4c03684c-1ee7-4b2f-01b7-92836d12a930.png)

#概要
世界的に超有名なサンドボックスゲーム「Minecraft」をプログラミング言語「Python」で再現するプロジェクトです。

**前回の記事: [「【#2】PythonでMinecraftを作る。~モデル描画とプレイヤー実装~」](https://qiita.com/drafts/5f927b404a5c5353015a)**

#今回やること
前回は、テストテクスチャを使用してのモデル描画からプレイヤー視点の実装までを行いました。

– プレイヤーの動きの改善
– 衝突判定の検討

##プレイヤーの動きの改善
![sq6

元記事を表示

Pandas、dataframeでのデータ抽出方法

#Pandasでの抽出方法
– A列にhogeと書かれているデータの抽出

“`
df.query(‘A == “hoge”‘)
“`

元記事を表示

ラズパイ使って、外からでもテレビを消せる様にしてやる!

### はじめに
* * *
趣味で宇宙開発を行う団体[「リーマンサット・プロジェクト」](https://www.rymansat.com/)がお送りする[新春アドベントカレンダー](https://qiita.com/rsp-dgkz/items/497225739b88c817a90c) No.14です。

就職してからずっと非エンジニアで、2017年暮れからラズパイいじり始めたばかりなのに、2018年1月から[rsp-00](https://www.rymansat.com/satellites)の開発チーム(ミッション系)に入れてもらい、開発に少し携わることができました。

マジ楽しかったです!リーマンサット、特に[rsp-00](https://www.rymansat.com/satellites)開発チームの皆様には本当に本当に感謝です!

### (この記事の) サマリー
* * *

– 2018年に宇宙に放出された[rsp-00](https://www.rymansat.com/satellites)では、ラズパイ(ゼロ)を使ってる
– 人工衛星 → 遠隔操作

元記事を表示

カジノにおけるモンテカルロ法って本当に勝てるの?

https://qiita.com/kagawa_shinjiiiii/items/ff49a8c7ccc682845a2a

を読みました。興味深かったので、実際にこれを用いてオンラインカジノに100ドル入れてモンテカルロ法を実践してみてるんですけど現在+35ドルくらい稼げていてすごいなあと思いました。

しかし、その中で一度やばいパターンを引いたりして所持額が0になりかけたりもしてやばかったこともあり、「これって実際の状況だと本当に稼げるの…?」と思い、実際の状況を想定したシミュレーションをしました。

# 前提

– スタート時の金額は1000ドル
– 1単位を1ドルとする。
– 所持金がn倍になるor0未満になるまで実行をし、その一連の動作を1000回行い、勝率を計算する。
– ルーレットにおける2倍モンテカルロ法、3倍モンテカルロ法どちらも行う。
– 2倍時の1回の勝率は18/37(0~36のうちの0を除いた18通り)、3倍時の1回の勝率は12/37(同様)とする。

# (復習)モンテカルロ法って?

①初期配列として以下の配列を用意する

[1, 2, 3]

元記事を表示

Python3 で Cloud Firestore のデータを削除 (Delete)

こちらで作成したデータのひとつを削除します。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)

“`py:firestore_delete.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# ——————————————————————
sys.stderr.write(“*** 開始 ***\n”)
key_in = sys.argv[1]
#
print(key_in)
#
cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred,

元記事を表示

Poetryでライブラリがインストールできない時の解決方法

## 起こるエラー

poetryを使っていると、よく遭遇する

“`sh
$ poetry config virtualenvs.in-project true
$ poetry new project-name
$ poetry add lib-name
“`

みたいにしたときに、以下みたいなエラーが出た時の解決方法

“`
[SolverProblemError]
The current project’s Python requirement (>=2.7,<2.8) is not compatible with some of the required packages Python requirement: - environs requires Python >=3.5

Because environs (7.1.0) requires Python >=3.5
and no versions of environs match >7.1.0,<8.0.0, environs is forbidden. So, because ops depends

元記事を表示

Python3 で Cloud Firestore のデータを更新 (Update)

こちらで作成したデータを更新します。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)

“`py:firestore_update.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# ——————————————————————
def data_read_proc(doc):
results = doc.to_dict()
str_out = doc.id + ‘\t’
str_out += results[‘name’] + ‘\t’ + str(results[‘population’])
str_out += ‘

元記事を表示

Python3 で Cloud Firestore のデータを読む (Read)

こちらで作成したデータを読みます。
[Python3 で Cloud Firestore のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/4288176394947283c84a)

“`py:firestore_read.py
#! /usr/bin/python
#
import sys
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# ——————————————————————
def data_read_proc(doc):
results = doc.to_dict()
str_out = doc.id + ‘\t’
str_out += results[‘name’] + ‘\t’ + str(results[‘population’])
str_out += ‘\t’

元記事を表示

Python3 で Cloud Firestore のデータを作成 (Create)

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

“`bash
sudo pip install –upgrade firebase-admin
“`

“`py:firestore_create.py
#! /usr/bin/python
#
import sys
import datetime
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# ——————————————————————
def add_data_proc(db,key,name,population):
sys.stderr.write(“key = ” + key + “\n”)
doc_ref = db.collection(‘cities’).document(key)
doc_ref.set({
‘name’: name,
‘population’: populat

元記事を表示

【Python】beautifulsoup4の備忘録

## はじめに
“beautifulsoup4“による、htmlタグ検索の備忘録。

## 環境
– python: 3.7
– beautifulsoup4: 4.8.2

## 基本の検索
“`py
# pタグ全部
find_all(“p”)

# 一番初めに見つかったpタグのみ
find(“p”)

# aタグかつhrefがhogehogeから始まるもの
import re
find_all(“a”, href=re.compile(“^hogehoge”))
“`

## cssセレクタ使った検索
“`py
# 親子関係を指定、ゆるく
select(‘body div p’)

# 親子関係その2、きびしく
select(‘body > div > p’)

# クラス名
select(‘.myclass’)

# id名
select(‘#myid’)

# AND条件
select(‘.myclass1.myclass2’)
“`

## n番目のタグ
“`py
# 下記のhtmlの3番目の

  • タグを検索する
    #
    #
    # <

  • 元記事を表示

    文字列からそれぞれの文字がいくつあるか調べる。

    “`py:1
    s = ‘aeqwtwegwa’
    d = {}

    for c in s:
    if c not in d:
    d[c] = 0
    d[c] += 1

    print(d)
    “`

    “`:1の実行結果
    {‘a’: 2, ‘e’: 2, ‘q’: 1, ‘w’: 3, ‘t’: 1, ‘g’: 1}
    “`

    “`py:2
    s = ‘aefqwdqfqwe’
    d = {}

    for c in s:
    d.setdefault(c, 0)
    d[c] += 1

    print(d)
    “`

    “`:2の実行結果
    {‘a’: 1, ‘e’: 2, ‘f’: 2, ‘q’: 3, ‘w’: 2, ‘d’: 1}
    “`

    標準ライブラリからdefaultdictを読み込んで書くと、

    “`py:3
    from collections import defaultdict

    s = ‘raegiowejgohg’
    d = defaultdict(int)

    for c in s:
    d[c] += 1

    print(d)
    pri

    元記事を表示

    【Python】特定の文字列で始まる要素のみを配列に残す

    # はじめに
    備忘録。
    特定の文字列から始まる要素のみを配列に残したい。
    “[‘hogehoge.form’, ‘hugahuga.form’, ‘hogehoge.form2’]“という配列があり、“hogehoge“から始まる要素のみを残し、他の要素は削除したい。

    ## 解決方法
    ### 文字列メソッド“startswith()“を使う
    文字列の先頭を判別できるメソッド

    “`py
    moji = ‘hogehoge’

    # trueを返す
    moji.startswith(‘hoge’)

    # falseを返す
    moji.startswith(‘huga’)
    “`

    ### サンプルコード
    “`py
    # 元の配列
    moji_ary = [‘hogehoge.form’, ‘hugahuga.form’, ‘hogehoge.form2’]

    # 新しい配列new_aryに、元の配列moji_aryの要素のうち`ho`から始まる要素のみを入れる
    new_ary = [hoge for hoge in moji_ary if hoge.startswith(‘ho’)

    元記事を表示

    Django 開発者への道② ~ URLを設計する ~

    さて、Djangoの技術記事連載企画「Django 開発者への道」
    第二弾がやってきました!

    **前回の記事**
    [Django 開発者への道① ~ Modelsを理解する ~]
    (https://qiita.com/kotayanagi/items/3cfadae951c407ac044a)

    ## はじめに

    前回記事の第一弾では、
    DjangoのModelsとDBの設計方法について学習しました。

    今回の第二弾では、
    URLの設計とルーティングの実装方法について学習していきます。

    まずは、フォルダ構成を再確認しながら、
    Djangoのプロジェクトに存在する2つの `urls.py` ファイルを見ていきます。

    2つ同じ名前のファイルが存在する意味を、
    しっかり理解した上で、
    **ルーティングの実装方法**や、、
    **ベストプラクティス**などをみていきます。

    最終的に、ルーティングを設計し、
    **動的にルーティングを設計できる**ようになるのがゴールです!

    ## ルーティングって何ですか?

    まず、ルーティングとは何でしょうか?

    ルーティングとは、

    **送られてき

    元記事を表示

    Dockerを使って数分でOpenCV&Python環境を構築して試す

    #コード

    下記のコマンドを指定して完了。
    `/mygit/appdir/`は実行したいpythonファイルが有るフォルダを指定してください。

    “`shell
    docker run -it –rm –name pythoncv -w /mygit/appdir/ -v “$PWD”:/mygit/appdir/ jjanzic/docker-python3-opencv python index.py
    “`

    #各オプション
    ## -w
    作業フォルダ指定

    ##-v
    マウントディレクトリ指定

    “`text
    “is not shared from OS X and is not known to Docker.”というエラーが出る場合があります。
    こちらの記事を参照して回避してください。
    “`

    【Docker For Mac】Error response from daemon: Mounts deniedの対応
    https://qiita.com/nishina555/items/a75ce530d9382aa09511

    #感想
    環境構築で時間が取られなくて最高。

    元記事を表示

    OTHERカテゴリの最新記事