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

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

[Python3 入門 14日目]7章 文字列(7.1.1.1〜7.1.1.4)

###7.1.1.2 UTF-8によるエンコード、デコード

外部の世界との間でデータをやり取りするときには良い¥かの二つの手段が必要になる。

– 文字列をバイト列にエンコードする手段
– バイト列を文字列にデコードする手段
– 動的エンコード方式のUTF-8はPython、Linux、HTMLでは標準的なエンコーディングである。
– webページなどから他のソースをコピー&ペーストでPython文字列を作るときは、ソースがUTF-8形式でエンコードされていることを確かめなければならない。(例外が発生する。)

###7.1.1.3 エンコーディング(記号化)

– 情報の送信側が、伝えたいメッセージ内容を受信側に届く記号の形に変換すること。
– 文字列をエンコードしてバイトにする。
– 文字列のencode()関数の第一引数はエンコーディング名。
– **UTF-8**は**8ビット可変長エンコーディング**。

“`py

#Unicode文字列”\u2603″を代入
>>> snowman=”\u2603″
>>> len(snowman)
1

#このUnicode文字

元記事を表示

Anaconda(python 3.7)でspyderが起動できない問題を解決する

#はじめに
データサイエンスの講座に参加した時にspyderを使う機会があったのだが
受講者の中でなぜか自分だけspyderを起動できなかった。
一応解決したのでメモ

#症状
spyderを起動時に
**カーネルを開始中にエラーが発生しました**
と表示され、起動できなかった。

#環境
OS:Windows 10
[Anaconda python 3.7](https://www.anaconda.com/distribution/)(2020/1/22時点の最新版)

#解決策
1. 一度Spyderを終了し、**管理者として**Anaconda promptを実行
2. `conda update –all`を実行
3. 色々updateされるので、updateが完了されたら終了
4. spyderを起動すると正常に立ち上がるはず

管理者として実行するのがポイント
そのまま実行するとupdateが途中で失敗してしまう。

#最後に
実はspyderの[GitHub](https://github.com/spyder-ide/spyder/issues/10400)に解決策

元記事を表示

【Python】 Hartreeからボルツマン分布を計算するプログラム

#イントロダクション
Gaussianの最適化計算の結果を入れて、存在比を計算するプログラムがよく必要になります。そのたびに作るがなくしてしまうし、単位変換とかめんどくさい。
解説ないです。間違いがあったら指摘してくれると嬉しいです。
#作った

“`Python:dist.py

import numpy as np

def boltz(E_list, temp=298.15):
“””
Gaussian Energy to Boltzmann distribution
—————————
input
E_list: Hartee numpy array
temp: (K)
—————————
output
Distribution numpy array
Normalized so that the sum is 10
“””
E_list = E_list – np.amin(E_list)
kb =

元記事を表示

【Python3】Pythonを始めたときに参考にしたサイト一覧

# Pythonを始めたときに参考にしたサイト一覧

– Pythonに初めて触る方
– とりあえずPythonを動かしてみたい方

上記の状態ではじめに参考にしたサイトの一覧です。

## Pythonをインストールする(Mac版)

[環境構築ガイド – python.jp(公式日本語版サイト)](https://www.python.jp/install/install.html)

上記の画面でmacOSなど、インストール先のOSのボタンをクリックすると、
インストール方法が詳しく書かれています。

## Pythonを試してみる

[2. Python インタプリタを使う – python.jp(公式日本語版サイト)](https://docs.python.org/ja/3/tutorial/interpreter.html)

インストールしたPythonでとりあえず何か動かしてみようと思ったときに参考にさせて頂きました。

# Pythonについて

[Python 3.8.1 ドキュメント(公式日本語版サイト)](https://docs.python.org/ja

元記事を表示

Python3でLeap Motion

# 記事の目的
[Leap Motion](https://www.ultraleap.com/product/leap-motion-controller/)というモーショントラッカーがあります。
これのPython用APIを使って、親指と人差し指の距離をリアルタイムに取得することを試みました。
PythonでLeap Motionを使う方法を紹介した記事は多くありますが、私の環境ではなかなかスムーズにいきませんでした。
ので、自分用メモとして方法を残します。

# 環境
– Windows 10 64bit
– Python 3.7.5

# まずPython 2.xで
Leap MotionのPython APIは、Python 2.xにしか対応していません。
Python3系列で動かすのはあとにして、まずはPython 2.7で動かしてみます。
Anacondaを使って、Python2.7環境を作ります。

## Leap Motion SDKの準備
次に、[Leap Motion Developerのサイト](https://developer.leapmotion.com/

元記事を表示

1/22 今日の目標と反省

はじめまして。pinaと申します。
元エンジニアで、AIエンジニアやデータサイエンティストの分野を目指して学習しています。

依然学習していたものの生活リズムの乱れとともに学習意欲が落ちてしまい続きませんでした。
今回は目標を立てて言語化することで、可視化するとともに表にアウトプットし、より意識できるようにしていきたいと思います。

今週の目標:
・環境に慣れる
ツールの使い方に慣れるまでは大変だが、焦らず一つ一つこなしていく

・プログラムを書く
トレースしながら改変し、自分で手を動かして楽しくものを作っていく

・言語化する
どう楽しかったか、どう難しかったかをこのqiitaに投稿して振り返る

今日の目標:
Tkinterを使ってGUIアプリを作る
ボタンをクリックすると関数を実行して画面に文字列を表示

元記事を表示

Pytestのjunitxmlオプションを付けると警告がでた

# 現象
pytestの勉強中に、テスト結果をJUnit形式で出力してJenkinsに食わせようと思い、–jnuixmlオプションを付けたら下記の警告メッセージが表示された

“`
============================================================== warnings summary ==============================================================
/usr/local/lib/python3.7/site-packages/_pytest/junitxml.py:436
/usr/local/lib/python3.7/site-packages/_pytest/junitxml.py:436: PytestDeprecationWarning: The ‘junit_family’ default value will change to ‘xunit2’ in pytest 6.0.
Add ‘junit_family=xunit1’ to your p

元記事を表示

PYTHON環境構築するなら絶対に理解しておかないといけない注意点

#インストール形式は3種類ある

普段みなさんがpythonの開発環境を構築するためには下記の公式ページからインストーラーをダウンロードすることでしょう。
***Python Releases for Windows***
https://www.python.org/downloads/windows/

例えば2020年1月21日付ではpython3.8.1が下記の形式で配布されている
※webの内容をコピペ

– Download Windows help file
– Download Windows x86-64 embeddable zip file
– Download Windows x86-64 executable installer
– Download Windows x86-64 web-based installer
– Download Windows x86 embeddable zip file
– Download Windows x86 executable installer
– Download Windows x86 web-based in

元記事を表示

AtCoder用にPythonの環境構築

# はじめに
最近、[AtCoder](https://atcoder.jp/)を始めました。
AtCoderは競技プログラミングサイトで、毎週リアルタイムのコンテストが開催されていて、AtCoderで評価されたレーティングを利用して、転職活動ができる[AtCoderJobs](https://jobs.atcoder.jp/)というサービスが話題になっているそうです。
最初、シェルがfishでHomebrewなどが入っている状態で色々試していましたが、うまくいかなかったので、Mac環境をきれいにして環境構築をしました。

# 環境
`macOS Catalina 10.15.2`
`Homebrew 2.1.15`
`bash 3.2.57`

# シェルをbashに戻す
ターミナルで以下コマンドを叩いて、ターミナルの再起動をするとシェルがbashに戻ります。

“`
$ chsh -s /bin/bash
“`

# Homebrewをアンインストールする
以下コマンドを叩いてパスワードを入力すると、Homebrewをアンインストールできます。

“`
$ ruby -e “

元記事を表示

pythonの二次元辞書を宣言・初期化する

## 動作環境
Windows10
PyCharm
python3.7

# やりたいこと
pythonの辞書型を二次元で初期化したい。

## コード
“`python
def main():
dic = {“a”: 0, “b”: 0, “c”: 0}
char_dic = {“a”: 0, “b”: 0, “c”: 0}
char_dic[“a”] = dict(dic)
char_dic[“b”] = dict(dic)
char_dic[“c”] = dict(dic)

# 任意の文字の次の文字の数を数える処理(二次元辞書が必要)
string = “aacbbb”
for i, n in enumerate(string):
if i + 1 == len(string):
break
char_dic[string[i]][string[i + 1]] += 1

for key, value in char_dic.items():

元記事を表示

[Python]メモ帳Twitterを作る(タイムライン表示編)

[[Python]メモ帳Twitterを作る(ツイート編) – Qiita](https://qiita.com/higuratu/items/1cf5d54a8925f0860262)の続編です。

上記の記事を投稿して1年以上経ってしまいました。
前回はツイートするところまで出来たので、今回はタイムラインを表示してみたよという備忘録。

PythonでTkinterというGUI作れるライブラリ使ってメモ帳twitter作るよ!

#前回のを少し修正
前回はツイート時に認証を通していたが、何度も認証通すのが面倒くさいので起動時に認証通すようにしてしまいました。
あとは可変があるキーはあとから修正しやすいように別ファイルに隔離しました。
起動時に認証通すと放置でセッションが切れてしまうため、
“`twitter = OAuth1Session(CK, CS, AT, ATS)“`
に関しては各関数にて認証を通します。

“`python:config.py
#twitterの認証に必要なキー一覧
CONSUMER_KEY = “XXXXXXXXXXXXXXX”
CONSUMER_

元記事を表示

Macでptyhon3

#Macでptyhon3
備忘録として残しておく
##環境
MacOSのバージョン10.14.6
Pythonのバージョン2.7.10

##3系の導入 
公式pkgをDL
https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg
指示通りにインストール

##デフォルトをpython3にする
“`
$ echo ‘alias python=python3’ >> ~/.bash_profile
$ source ~/.bash_profile
“`
##2.7.10はpython2として起動できるようにシンボリックリンクを貼っておく
“`
$ cd /usr/local/bin
$ sudo ln -s /usr/bin/python2.7 python2
“`

##動作確認
“`
$ python -V
Python 3.8.1

$ python2 -V
Python 2.7.10
“`

元記事を表示

Python命名規則(PEP8より)

Pythonには 「[PEP8: Pythonコードのスタイルガイド](https://pep8-ja.readthedocs.io/ja/latest/)」があって、変数名や関数名などの命名規則も書いてあります。
命名規則やコーディングスタイルを合わせることで、ソースコードを読んでくれる人たち、レビューしてくれる人たちの負担を下げることができます。
命名規則だけでなく「[リーダブルコード](https://qiita.com/search?q=tag%3Aリーダブルコード)」に書かれている命名方法も参考にしましょう。

### PEP8

| 用途 | 命名規則 |
|:—————–|:——————|
| 非公開、プライベート | 先頭にアンダースコアを1個つける |
| サブクラスで名前衝突回避 | 先頭にアンダースコアを2個つける |
| 予約語や組込み関数名と衝突回避 | 最後にアンダースコアを1個つける |

| 用途 | 命名規則 |
|:—————–|:——————|
| パッケー

元記事を表示

Pythonの正規表現が覚えられない

使い方のかんたんなメモ

“`py
import re
ptn = re.compile(r”hoge+”) # 使い回すならcompileしたほうが速い
ptn_with_capture = re.compile(r”(hoge)e*”) # キャプチャはカッコを使う
string = r”hogee_qwerty_hogeeeeee”

# マッチする最初の部分を取得
first_matched_string = re.search(ptn, string).group()
print(first_matched_string)
# => hogee
# キャプチャをつけるとgroup(番号)でその部分だけ取得
first_matched_string = re.search(ptn_with_capture, string).group(1)
print(first_matched_string)
# => hoge

# マッチするすべての部分をリストで取得
matched_string_list = re.findall(ptn, string)
print(match

元記事を表示

teratailのダウンローダーを作った

#はじめに
スクレイピングの練習に何か作ろうということで、teratailの記事の中にあるコードをダウンロードする「teratailer」というソフトを作りました。teratailerは[howdoi](https://github.com/gleitz/howdoi)というソフトを参考にしました。

#teratailerの説明
指定したURLのページからコードの部分を取得し、teratail1.txt(?には数字が入る)というファイル名で保存します。コードの箇所が複数ある場合は teratail1.txt teratail2.txt teratail3.txt … という感じで複数のファイルに保存します。URLは複数指定できます。
また、-nで指定したURLに含まれるコードの数を表示、-tでファイルに保存せずターミナルに直接表示します。

#環境
Ubuntu 18.04 LTS
Python 3.6.9
Requests 2.22.0
lxml 4.4.2
cssselect 1.1.0

#ファイル構成

“`
teratailer
├── README.md
├── s

元記事を表示

Ubuntu18.04にPython3とOpenCV環境を構築する

# モチベーション
ラズパイとカメラでPythonを使って顔認識による顧客分析をやってみようと思い、VMでテスト環境を構築する。今回のゴールは、MacにUbuntuの仮想環境を作り、Ubuntu上でPython3とOpenCVを動作させるまでとする。

# 環境
– Ubuntu16.04が動作することが前提
– Python 3.6.9を導入
– OpenCV 4.2.0を導入

# OpenCVと依存するライブラリのインストール
gitコマンドを使って、ソースコードを取得しています。

“`
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
“`

#ソースコードの入手
gitコマンドを使っ

元記事を表示

【その設定値をゼロにするなんてとんでもない!】SQSで同じメッセージを複数件受信してしまう

SQSをポーリングする処理を実装していたところ、**同一メッセージを同時に**受信してしまう事象に遭遇した。

解説コードはPythonだが、事象は他の言語/SDKでも発生するものと考えられる。

# 何が起きたか

以下は、SQSキューからメッセージを最大10件取得するPythonコード。

なお、対象のキューにはメッセージが1つしか格納されていない状態とする。

“`python

import boto3

# SQSにリクエスト送信
client = boto3.client(‘sqs’)
messages = client.receive_messages(QueueUrl=my-url, MaxNumberOfMessages=10).get(‘Messages’)
“`

受信したメッセージを表示する。

“`python
for i, message in enumerate(messages):
print(i)
print(‘MessageId: ‘ + message[‘MessageId’])
print(‘MD5: ‘ + mes

元記事を表示

メディアンフィルタを使って,空画像から星を抽出した

## はじめに
メディアンフィルタをかければごま塩ノイズが軽減されることを利用して,
空の画像から星を抽出してみました.

[こちら](https://github.com/be-m1ya/star_detection)に全コードがのっています.

左:元画像 , 右:星抽出画像
![E58741_right.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/eb9cb621-6903-e7d5-57d3-b1b033697c95.jpeg)

## どうやって?

星はごま塩ノイズにそっくり.フィルタをかけたら消えてくれそう
→フィルタをかけた(星の消えた)画像と元画像の差として星が抽出できるはず…

## 結果
上:元画像
中:フィルタをかけた画像と元画像の差分
下:差分画像を2値化したもの
![E00012_right.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/abfad136-c

元記事を表示

ServerlessFrameworkでスクレイピング用Lambda-Layerを作る

# 前書き
最近AWSの勉強をしていてLambda Layerの存在を知りました。
スクレイピングもLambdaで楽にできるのでは?と思いチュートリアル的な記事を色々やってみましたがハマったので備忘録を残します。

チュートリアル?は[こちら](https://hacknote.jp/archives/49974/)を参考にしました。
最終的にIaCにしたかったのでServerlessFrameworkも使ってみました。
作成したコードは→[touka9029/selenium-lambda-layer](https://github.com/touka9029/selenium-lambda-layer)

DockerやAWS Cloud9、AWS CloudFormationなど周辺機能については解説しません。

# 環境やライブラリバージョン
– AWS Cloud9, AMI: ami-081330c4becd75920
– [adieuadieu/serverless-chrome](https://github.com/adieuadieu/serverless-chro

元記事を表示

無限小数を乗算して丸め誤差が起きた計算事例

# 概要

以下のような問題を解いていた。

“`
1000m先に信号機がある。この信号は、15秒ごとに赤になり、また15秒後に緑に戻ることを繰り返す。
ある自動車がこのエリアにs km/hで突入し定速で走り続けたが、この信号を緑で通過したい。
0<= s <= 200とするとき、これを実現できる最大の速度を求めよ。ただし、sは整数とする。 尚、信号はこの地点に到達した瞬間に緑であれば通過できるし、赤であれば通過できないとする。 この信号はエリアに入った瞬間に緑になったものとする。 ``` # 考え方 まず、ある信号機のある地点についた時間tが$ 0 \leqq t \lt 15$や$ 30 \leqq t \lt 45$, $ 60 \leqq t \lt 75$であれば通過でき、$ 15 \leqq t \lt 40$や$ 45 \leqq t \lt 60$であれば通過できない。つまり、tを15で除算した結果を切り下げたとき、偶数であればOK(通過), 奇数であればNG(通れない)となる。 次に、スピードは時速(km/h)であり、信号機の地点は(m)であるので単位を合わせ

元記事を表示

OTHERカテゴリの最新記事