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

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

gRPC の使い方 (python)

[Python Quick Start](https://grpc.io/docs/quickstart/python/)

“`bash
sudo python -m pip install grpcio
sudo python -m pip install grpcio-tools
“`

“`text:helloworld.proto

syntax = “proto3”;

option java_multiple_files = true;
option java_package = “io.grpc.examples.helloworld”;
option java_outer_classname = “HelloWorldProto”;
option objc_class_prefix = “HLW”;

package helloworld;

service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
rpc SayHello2 (HelloRequest) returns

元記事を表示

Backtraderのインストール

backtraderの日本語記事が少なかったので自分が書いてみることにしました。
つまづいたことや動かしてみてわかったことを書き留めていこうと思います。
間違っている部分を見つけたらコメント等で指摘していただけると幸いです。

backtrader人口が増えてもっと解説記事が増えたらいいなー、と願ってます。

私の動作環境
`Windows8.1pro 64bit`
`Anaconda3 2019.10`
`(backtrader用の仮想環境をPython3.5で構築)`

#Python3.5仮想環境にJupyternotebookインストール
Anaconda3のインストールや仮想環境の構築に関してはわかりやすくて詳しい記事がたくさんありますのでそちらを参考にしてみてください。
私の場合、仮想環境でJupyternotebookを起動した際にカーネルエラーが発生しました。Win32apiが見つからないという趣旨のことが書かれていて仮想環境にPIP経由でpywin32をインストールすることで解決できました。

こちらの記事に詳しく書かれています。
*Anacondaの仮想環境で

元記事を表示

Backtrader QuickstartページのサンプルスクリプトとCSVデータ

backtrader Document_Quickstart
https://www.backtrader.com/docu/quickstart/quickstart/

インストールを終えて、こちらのページにあるサンプルスクリプトを動かす段階で「指定されたPathにCSVファイルがない」という趣旨のエラーが出ました。

検索してみましたが、該当するフォルダそのものがローカルにありませんでした。どうやらPIPでbacktraderをダウンロードするとサンプルスクリプトを動かす際に使うデータフォルダおよびサンプルフォルダそのものが同梱されないみたいです。

https://github.com/mementum/backtrader/blob/master/datas/orcl-1995-2014.txt
そこでGitから「orcl-1995-2014.txt」をコピーしてどこか適当な場所に保存します。そしてスクリプト内のファイルパス指定部分を書き換えます。

“`python:datapath.py

datapath = os.path.join(modpath, ‘../..

元記事を表示

[Python]infで正の無限大を表す

float(‘inf’)もしくはmath.infを使う。(math.infはPython3.5から)

## 実行してみる

“`
>>> float(‘inf’)
inf

>>> import math
>>> math.inf
inf

>>> float(‘inf’) == math.inf
True

>>> math.inf > 10 ** 10
True
>>> math.inf < 10 ** 10 False ``` ## ドキュメント https://docs.python.org/ja/3/library/math.html#math.inf

元記事を表示

Tensorflow.Kerasモデルで TPU/GPU/CPU を自動的に切り替える

# はじめに

この記事は、TensorFlow.kerasを使用していたとき、ハードウェア情報(主にColaboratoryのランタイム情報)を読み取って、TPUとGPU(一応CPUも)を自動的に切り替えて実行できるプログラムを書く方法をまとめています。 ~~(手動でコメントアウトするのが面倒になってきたため)~~

大体、[公式サイト](https://cloud.google.com/tpu/docs)(Google Cloud, Cloud TPU Docs)掲載の[KerasとTPUでMNIST](https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/keras_mnist_tpu.ipynb)を要約した内容です。tensorflow.kerasに慣れている方は、参照元を読んだほうがわかりやすいかもしれません。

補足・注意など

– 動作検証はColaboratory上で実施しています。
– たぶんtensorflow ver2にも対応しています。
– tensorfl

元記事を表示

[Python]Qiitaの記事情報をmongoDBに突っ込んだ

# やりたいこと
Qiitaの記事情報をQiitaAPIで取得し、どの記事、どのタグがよく見られているのか?などを確認したい。
その第一歩として、APIで取得した情報をmongoDBに登録してみる

# Qiitaの記事情報を取得する
今回の内容はPythonで書いています。
記事情報の取得は以下の記事を参考にさせていただきました。

[Qiita APIをPythonから使ってみる](https://qiita.com/sotoiwa/items/e2254893f5b0b92bb06e)

~~~ get_qiita_info.py
import requests
import logging
import json

formatter = ‘%(asctime)s %(name)-12s %(levelname)-8s %(message)s’
logging.basicConfig(level=logging.WARNING, format=formatter)
logger = logging.getLogger(__name__)

class GetQiitaInfo(

元記事を表示

プログラミング歴1ヶ月 PythonでNYダウの株価を抽出!

初めまして、Kayです。

投資をやっていまして、今年の1月からPythonにフロンティアを感じ、投資に応用出来ないかということで、ようやくYahooファイナンスの株価の抽出くらいまでたどり着きました。
というわけで、プログラミング歴は1ヶ月です(笑)

#使用したもの

言語:Python3

ライブラリ:urllib、BeautifulSoup

MacBook Pro

#BeautifulSoupをインストールする

“`shell.sh
$ pip3 install beautifulsoup
“`
自分の場合、MacOSだったので、pip3インストールとなりました。windowsの人は違うと思うので注意してください。

#Pythonのコード
“`Python:dow.py
import urllib.request
import ssl
from bs4 import BeautifulSoup

url = “https://finance.yahoo.co.jp/quote/%5EDJI”

ssl._create_default_https_context =

元記事を表示

オブジェクト指向

“`py:
class Person(object):
def __init__(self, age=1):
self.age = age
def drive(self):
if self.age >= 18:
print(‘OK’)
else:
raise Exception(‘No drive’)

class Baby(Person):
def __init__(self, age=1):
if age < 18: super().__init__(age) else: raise ValueError class Adult(Person): def __init__(self, age=18): if age >= 18:
super().__init__(age)
else:
raise

元記事を表示

PythonでModuleNotFoundError: No module named ‘XXX’が起きた時の対応

表題の対処メモです。
今回はWTFormsが無い想定です。

##まずはpip showでモジュールが存在するか確認

“`console
pip show WTForms
Name: WTForms
Version: 2.2.1
Summary: A flexible forms validation and rendering library for Python web development.
Home-page: https://wtforms.readthedocs.io/
Author: Thomas Johansson, James Crasta
Author-email: wtforms@simplecodes.com
License: BSD
Location: /Users/XXX/.pyenv/versions/3.7.5/lib/python3.7/site-packages
Requires:
Required-by: wtforms-validators, Flask-WTF
“`
※ここで存在しなければモジュールをインストール(pip inst

元記事を表示

Google Colaboratory と IBM Watson Personality Insights を用いてクラウド環境上で性格診断ツールを作る

#Google Colaboratryの設定
**Chromeのインストール**
[Google Chrome]で検索してChromeをインストール
**GoogleDrive内にColaboratryをインストールする**
空ドライブ内で右クリックをしてアプリを追加をクリック
![Colab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518214/b9ad5049-9ac3-980c-36f2-42ca1b415711.png)
検索欄に [Colaboratry]と入力してアプリをクリック
![Colab2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518214/0bc17610-fb40-172a-0dcd-7cbe52199929.png)
インストール!!
![Colab3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

Pythonとセキュリティ – ①Pythonとは

#概要
Pythonは1991年に発表されたインタプリタ形式のプログラミング言語で、オランダ出身のプログラマ「Guido van Rossum(グイド・ヴァンロッサム)」によって開発された。
2020年1月を基準として最新バージョンは、Python2「2.7.17」、Python3「3.8.1」である。2008年の末から、Pythonは「バージョン2」と「バージョン3」に分かれて使用されている。Python2とPython3はお互いに互換ができないところも多いため、プログラムを作る際に、二つのバージョンのうち、一つ選ぶ必要がある。Python2は2020年4月に「2.7.18」が公開された後は公式な技術サポートは終了される。また、Python3から新たにサポートされるライブラリや脆弱性なども修正されているため、Pythonを習い始めようとしているのであれば、Python3をお勧めする。

#Pythonのメリット

###容易性
Pythonの一番のメリットは簡単で、だれでもすぐプログラムが作れる容易性である。下記で「Hello World」を出力する例を、CとPython言語で作って

元記事を表示

paizaでSランクを取るまでにやったこと

プログラミング学習サイトのpaizaのスキルチェックでぎりぎりSランクが取れたので、そこまでの経緯を書いてみます。
[Sランクが取れた問題の結果](https://paiza.jp/challenges/share/e9Na8-My3UFAafDn6GpEJn_SQfHK3gmR5sey3Aqmtxg?source=social)
# paizaスキルチェックとは
paizaのスキルチェックとは競技プログラミングのように指定の問題に対して、入力値を元に処理を実装し、凡そ10個くらいのテストケースで正しい結果が出るプログラムを作成するものです。
また回答までの時間も点数にかかわってきます。
# どうやってランクを上げるの?
解答時の点数に応じてどのランクに該当するかが決まります。
低いランクだと100点満点でなくともランクアップできますが、Sランクは100点じゃないとランクアップしないようでした。
筆者は一度Sランク問題で結果が99点だったためランクが上がると思ってましたが、上がりませんでした。
# 私の経歴
下記に経歴を書いていますが、歴の長い経験者です。
## 高校
情報処理科でCO

元記事を表示

[Python]No value for argument ‘self’ in unbound method callが出た

Python初心者です。
selfの考え方をイマイチ理解出来ておらず、地味に躓いたのでメモ

~~~ hello.py
class HelloWorld:
def __init__(self):
self.message = ‘Hello,World’
def gree(self):
print(self.message)
~~~

~~~ sample.py
import hello

h = hello.HelloWorld
h.gree()
~~~

このコードだとh.gree()で「No value for argument ‘self’ in unbound method call」というエラーになる。
エラーの内容は関数greeの引数selfがないよというもの

selfって関数呼び出し時の引数に指定しなくていいんじゃないんだっけ?と躓いた。

sample.pyのコードを以下にすることで解決

~~~ sample.py
import hello

h = hello.HelloWorld()
h.gree()
~~~

元記事を表示

CentOS6.xでLet’sEncrypt運用してたら、自動更新できなくなっていた件について、

##状況
Let’sEncryptで運用していても、エラーメッセージが表示されて、自動更新できない。

“`
WARNING: couldn’t find Python 3.5+ to check for updates.
Traceback (most recent call last):
File ““, line 16, in
File “/usr/lib64/python3.4/distutils/version.py”, line 58, in __lt__
c = self._cmp(other)
File “/usr/lib64/python3.4/distutils/version.py”, line 176, in _cmp
if self.version != other.version:
AttributeError: ‘StrictVersion’ object has no attribute ‘version’
“`

## 参考情報

[CentOS6系にPython3を入れる方法](htt

元記事を表示

Mac,Windows に Python3 をインストールし環境構築する方法

## for Mac[1]
Mac にはデフォルトで Python2系 がインストールされていますが、ここではbrewによる3系のインストール方法.
まずpython3系が入っていないかを確認.

“`
$python3 -V
“`
何も出力がなければ,以下に従ってインストール.

### Python3 の導入手順

Python3 を homebrew でインストールします。

1.homebrew のインストール

“`
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`
2.Python3 のインストール

“`
brew install python3
“`
3.Python3 の確認

“`
python3 -V
“`
を実行してPython 3.7.3等が表示されればインストールの完了です。

——————
## for Windows[2]

[ここ](https://www.p

元記事を表示

[Python3 入門 22日目]11章 並行処理とネットワーク(11.1〜11.3)

#11.1 並行処理

コンピュータで何かを待っているときは、以下の二つの理由である。

– I/Oバウンド:I/O処理待ち
– CPUバウンド:CPU待ち

並行処理に関する用語。

– 同期的:葬式の行列のように順番に処理すること。
– 非動的:タスクが独立して処理されること。

##11.1.1 キュー

– キューの要素は片方の端に追加され、反対側の端から取り出される。

##11.1.2 プロセス

“`py:dishes.py

import multiprocessing as mp

def washer(dishes, output):
for dish in dishes:
print(“Washing”,dish, “dish”)
output.put(dish)

#get()はキューからアイテムを取り除きそれを返す。
#task_doneはget()の後に呼び出されると処理が完了した事をキューに伝える。
#join()はキューにある全てのアイテムが取り出されるまでブロックする。
def dryer(input):

元記事を表示

【Django】.filter()でSlugFieldを指定した場合のエラー

# エラー Related Field got invalid lookup: が出た

## 原因
複数のオブジェクトを取ってくることを想定している為、pkやslugは入らないらしい。

# 発生状況
## テーブル
Authors:著者 複数のbooksを持つ。
Books:本 一つの著者を持つ。

## models.py
“`Python:
class Authors(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(unique=True, max_length=255)

class Books(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(Authors, on_delete=models.PROTECT)
“`

## views.py
“`Python:
slug = ‘dazai’
books = Boo

元記事を表示

「誕生日のパラドックス」をPythonでシミュレーションしてみた

「**何人集まれば、その中に誕生日が同一の2人(以上)がいる確率が、50%を超えるか?**」
というアレ。

– 集団の中に同じ誕生日の組み合わせの人がいる確率が**50%**を超えるのは**23人**から。
– 70人集まると**99.9%**を超える

[誕生日のパラドックス – Wikipedia](https://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9)

> 70人しか集まらなくても確率は99.9%を超え、50%を超えるのに必要なのはわずか23人である。

**※閏年や双子は考慮しません**

“`python:birthday_paradox.py
import math
from random import random

n_trials = 50000 # 1回あたりの試行回数
max_people = 100 # 検証する最大人数

print(‘人数,同一誕生日の組が

元記事を表示

高次元乱数ベクトル生成〜Latin Hypercube Sampling・ラテン超方格サンプリング〜

# はじめに

高次元空間の問題の一つとして,球面集中現象が存在します.球面集中現象とは高次元空間では点の密度が $n$ 次元超立方体の表面において大きくなる現象を指します.この現象によって,高次元空間での探索やモンテカルロ法利用時に中心付近でのサンプル数が少なくなってしまうという問題が発生します.今回の記事ではこの問題を解決するためのサンプル方法の一つであるLatin Hypercube Samplingについて紹介したいと思います.その他にもSobol列を用いた有名なサンプル方法も存在します.

# Latin Hypercube Samplingのアルゴリズム

$n$ 次元空間において,$M$ 点をサンプルする場合,Latin Hypercube Samplingではまず各軸を $M$ 個の格子に区切ります.下の図では,$n=2$,$M=5$の場合の例を上げました.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355593/97ed8f69-5c77-7749-74d0-07

元記事を表示

アクセス制限 と クラスを構造体として扱う事

“`py:1
class T(object):
pass

t1 = T()
t1.name = ‘Mike’
t1.age = 20

print(t1.name, t1.age)
“`

“`:1の実行結果
Mike 20
“`
この様に、
クラスをデータ構造体として扱う事は可能である。

しかし、
以下の様な場合は、注意が必要だ。

“`py:2
class Player:
def __init__(self, job, weapon):
self.job = job
self.__weapon = weapon

def walk(self):
print(self.job + “は荒野を歩いていた”)
self.__attack(“スライム”)

def __attack(self, enemy):
print(self.__weapon + “で” + enemy + “を攻撃”)

player1 = Player(“戦士”, “剣”)
player

元記事を表示

OTHERカテゴリの最新記事