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

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

pip list がいつまでも終わらない。

#はじめに
Raspberry Pi Zero WのPython3を更新しようと、Python3.9をビルドしてインストールしました。
すると、`pip list`でインストール済みパッケージ一覧を確認する際に、リストもエラーも表示されずに止まってしまう症状に遭遇しました。Zeroだから時間がかかるのかな?と思い数時間放置してみましたが、変化ありませんでした。
ネットで検索してもズバリの回答が見当たらなかったため、ここに解決法を記します。

##症状
`pip list`でインストール済みパッケージ一覧を確認すると、何も表示されません。
^Cで止めると、デバッグ情報がズラズラと出てきて、`self._config = {‘authkey’: AuthenticationString(os.urandom(32))…`が含まれるあたりでTerminateした事がわかります。

##確認
`python3`で対話モードを起動して、以下のように入力して、エラーが帰ってきたら同様の症状です。(エラーは記録忘れました。“`Resource temporarily unavailable“

元記事を表示

Python3からCloud Storageを利用(入門)

# はじめに
## BytesIOとは
BytesIOとは、メモリ上でバイナリデータを扱うための機能であり、Python の標準ライブラリ io に含まれています。バイナリデータとは主に画像や音声などのデータのことを示しています。(C#でいうMemoryStreamのようなものです)

# サービスアカウントの作成
[Google Cloud Platform](https://console.cloud.google.com/)にアクセスしてサービスアカウントの作成(API)を行います。
ナビゲーションメニュー > APIとサービス > 認証情報 をクリックし画面に移動します。
そしてサービスアカウントを管理をクリックします。
![GCP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/18512082-f5d6-4f93-faa8-bb2ddaaa26be.png)

次の画面ではサービスアカウントを作成をクリックします。
![GCP.png](https://qiita-image-s

元記事を表示

Numpyの型ヒント備忘録(NDArray)

`Numpy` の型ヒント・型チェックについて、ちょっとハマったので備忘録として残します

今回使っているのは `nptyping` という numpy 用の型付けのためのライブラリです。リポジトリ: [GitHub – ramonhagenaars/nptyping](https://github.com/ramonhagenaars/nptyping)

# ベクトルのとき
下の二つは要素が `int` でなくても `True` となります。**(`Any` は標準ライブラリの `typing` からインポートします)**

“`python
vec = np.array([1, 2, 3], int)
isinstance(vec, NDArray[3, int]) # True
isinstance(vec, NDArray[(3,), int]) # True
isinstance(vec, NDArray[(3, …), int]) # True
isinstance(vec, NDArray[(3,), Any]) # True
isinstance(vec, ND

元記事を表示

借金完済まで何ヶ月?【Python】

今回の記事では、
借金総額と年利、月々の返済額から、あと何ヶ月で返済し終わるかを求めるプログラム
を書いていきます。

##実行環境
– MacOS
– Python 3.7.5

##求め方
**1, 関数を作る**
まずは、関数を作ります。
debt(借金)という関数に、引数を3つ渡します.
1つ目には借金額 → borrowed
2つ目には利率(年利) → annual
3つ目には返済額 → repayment

“`debt.py
def debt(borrowed, annual, repayment):
“`

**2, 完済するまでループするWhile文**
finishedがTrueになるまでループする、While文を書いていきます。
まず、FinishedをFalseで定義してからWhile文を書きます。

“`debt(2).py
def debt(borrowed, annual, repayment):
finished = False

while finished == False:
“`

**3, 残高が返済額より多いかどうか(

元記事を表示

Pythonで最小二乗法をやってみた

#はじめに
どうも。今回は最小二乗法をPythonで実装する方法を記事にしてみました。先に述べておきますが、以下の数学の知識がないとチンプンカンプンだと思いますのであしからず。
###必要な知識
・1次関数や2次関数などの基本的な関数
・微分と偏微分
・総数(Σ)、平均について

高校生までの数学の知識があれば、特に問題はないと思います。では、早速どんなものか見てみましょうか。
#最小二乗法とは
こんなデータがあったとします。(下のグラフ)
![data_least_squares_method.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835335/5ee9bafe-2317-4b51-08af-9f4975af37b4.png)
「それぞれの点からの誤差を最小にした1次関数を描いて下さい」と言われても、無理ですよね。これを可能にする方法が**最小二乗法(最小自乗法)**です。測定データ$y$がモデル関数(元となる関数)$f(x)$と誤差$\varepsilon$の和であるときに使用できます。式で

元記事を表示

スクレイピング:Webサイトをローカルに保存

#スクレイピング:Webサイトをローカルに保存

備忘録。バックアップ目的のみ。
太陽電磁波?太陽磁気嵐?のような世界的電源停止に備えて。microCMSにはバックアップ機能がないため実施。

###コード

“`python
import os
from urllib.request import *

# 記事カテゴリー毎のURL
#base_url = “https://benzoinfojapan.org/patients-article/”
#base_url = “https://benzoinfojapan.org/doctors-article/”
base_url = “https://benzoinfojapan.org/medias-article/”

# 保存先ファイル名接頭詞
#prefix = “patients-article”
#prefix = “doctors-article”
prefix = “medias-article”

num = 1

# 各カテゴリ記事上限値をwhile num <= Xに設定. 以下2020年10月現在値. #

元記事を表示

Pythonで簡単なGUIアプリを作成する

最近AIや分析等の分野で活躍しているPythonですが、普通のデスクトップアプリケーションの作成にも利用可能です。

今回はPythonに標準で付属しているGUIライブラリ「Tkinter(ティーキンター、ティケーインター)」を利用して、入力した値をターミナルに書き出す簡単なGUIアプリを作成します。

## 使うもの

私が動作を確認した構成は以下の通りです

– Python 3.7.3

IDEはVisual Studio Codeを利用しています。

## Python のインストール

公式サイトに行ってダウンロード&インストールを行ってください。

## とりあえずTkinterを使う

Visual Studio Codeにて「新しいファイル」をクリックして、「form.py」と名前を付けて保存してください。

プログラムの先頭にtkinterを利用しますよという宣言を記述します。

“`python
from tkinter import *
from tkinter import ttk
“`

次にメインとなるフォームを以下の様に定義します。

“`

元記事を表示

宮下の解析力学の例題、演習問題を解いてアニメーションで動かした

宮下解析力学の演習問題を解いています。間違い等を発見した人はご指摘していただくと幸いです。

# 1章
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/48a09ff3-594e-ddca-3c81-a80ad7161583.png)
長さが$l$の振り子の運動では角度$\phi$だけが実質的な変数である。質点の位置はデカルト座標ではなく、極座標で表したほうが便利になる。このように束縛条件を考慮した変数をうまく利用すると、運動の実質的な変数を扱うことができる。

### 振り子(図1.3)のラグランジアンを直交座標(x,y)で求めよ。(2章の例p.11)

運動エネルギーは$T=1/2m\dot{x}^2+1/2m\dot{y}^2$、ポテンシャルエネルギーは$U=mgy$
したがって、ラグランジアンは
$$L=\frac{m}{2}(\dot{x}^2+\dot{y}^2)-mgy$$
また、ここには束縛条件
$x^2+y^2=l^2$
がある。

### 振り子(図1.3

元記事を表示

DjangoのテストでDatetime.nowを固定したい

# はじめに
Djangoのテスト作っている時にどうしてもDatetime.now(timezone.now)を固定したかった。
そのメモです。

## やること
* mock.patch で モック作る

## コード
#### テストするコード
“`test_app/views.py
from django.utils import timezone

def hogehoge():
# タイムゾーン込みで現在時刻を取得 ex. datetime.datetime(2020, 10, 30, 15, 35, 29, 482661, tzinfo=)
return timezone.now()
“`
こんな感じのコードをテストしたい。

#### テストコード
“`test_app/tests.py
from unittest import mock

class TestClass(TestCase):
@mock.patch(“test_app.views.timezone.now”)
def test_hogeho

元記事を表示

SpiderのConfigを実行時に変更する。

#概要
### 前提
ScrapyのSpiderでは、設定ファイル(settings.py)やカスタム設定(custom_setting) でクローリング設定ができる。
ただし、この設定だけで済まそうとすると各設定(クローリングする深さ、優先度…)ごとにSpiderを作ることになり非常に管理コストがかかる。

### 本記事の内容
Scrapyのコマンドを調査したところ解消したので、記載する。

#やりたいこと
Spiderのソースコードを変更せずに、以下の設定を切り替える。

* クローリングする深さ(DEPTH_LIMIT)

#追加引数
「-s DEPTH_LIMIT=2」を追加することでクローリングする深さを、コマンド実行時に設定できる。

“`bash:cmdline例
crawl sample_crawler -s DEPTH_LIMIT=2
“`

#コード例
## Spider
Spiderのコード

“`python:spider.py
import scrapy
from scrapy.spiders import Rule
from scrapy.lin

元記事を表示

Pythonでモンテカルロ法を実装してみる

#はじめに
どうも、初めまして。この度、Qiitaで書き始めたものです。どうぞよろしくお願いします。さて、最初の記事は何番煎じかはわかりませんが、モンテカルロ法をPythonで実装する方法を記事にすることにしました。
#モンテカルロ法とは
そもそも、モンテカルロ法とはどんな方法か。ご存じの方も多いとは思いますが、今一度説明します。数値解析におけるモンテカルロ法は、確率を近似的に求める手法によく使われています。また、二次元上における閉曲面に囲まれた面積を求めることもできます。今回は、モンテカルロ法で円周率を求めてみます。
#モンテカルロ法による円周率の求め方
まず、下の図のようなものがあるとします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835335/7ea045d0-3577-bdd2-9eb8-e0b0cbdcbad0.png)
青線は半径が1の円の円周を表しています。ここに、ランダムで点を置いていき、置いた数($n$)と円周内に置かれた点の数($p$)を数えます。そして、モンテカルロ

元記事を表示

python学習(補足)

先に記載したpythonのCSVモジュールについての補足である

正直ドキュメントやググれば分かる内容だが、
備忘録として残しておく

CSVファイルを開いて別ファイルにそのまま書き出したい場合
リスト形式で渡すにはreaderメソッドを使う

この時readerメソッドの返り値はもちろんリスト形式となる

“`
import csv

data=[]

#CSVをリスト形式で読み込む
with open(‘data.csv’ , ‘r’, newline=” , encoding=’utf-8′) as f:

r = csv.reader(f)
data = [ i for i in r ]

#CSVをリスト形式で書き込む
with open(‘data.csv’ , ‘w’, newline=” , encoding=’utf-8′) as f:

w = csv.writer(f)
w.writerows(data)
“`

この時dataに入るのは以下のような多重リストとなる

“`
[[‘python’, ‘1’], [‘php’

元記事を表示

python学習

pythonの学習をするにあたって開発エンジニアではない私のようなインフラエンジニアでも
すごくわかりやすく説明してくれるudemyのpython講座をお勧めしたい
特に講師の酒井潤さんは話し方も聞き取りやすく内容もかなり広い部分を網羅しているので、
実際にコードスタイルにも言及していたり実務的なナレッジも学べるのでありがたい
(※個人的にはこういうのはあまり市販の本を読んでもわからないとことだと思う)

https://www.udemy.com/course/python-beginner/

その課題の中にQ&Aでロボットがお勧めのレストランを聞いてきてその答えをCSVに書き出して答えの数をカウントアップしていくという課題があるのだがこれが難しい。。。

正直ここで一度挫折して投げたのだが最近また別件でPythonを触れる機会がありまた勉強意欲が再燃した

まだ先の課題の完成には程遠いがCSVにカウントアップされる処理について根底の部分はできたので、
自分がハマったところについて備忘録として残しておく。

【はまった部分】
まずCSV上で入力した内容のカウントアップという処理がで

元記事を表示

django-allauthで、CustomUserを使って複数種類のユーザを管理する(multi type user)

# 概要
– Djangoで、複数のユーザ種別を作れるシステムが欲しい
– 「サプライユーザ」「バイヤーユーザ」の2種類のユーザを作れるようにする
– ユーザ種別ごとに、異なる属性を持たせる
– サプライユーザは会社名、バイヤーユーザは最寄り駅を登録できるようにする
– 環境は、
– Python 3.6.9
– Django 3.1.1
– django-allauth 0.42.0 (ソーシャルログイン機能)

# Python + Django の制限
– ユーザ認証(ログインやサインアップ)に使用できるモデルクラスは1つだけ
– settings.pyの `AUTH_USER_MODEL` で指定する

# 実装の概要
– CustomUserモデルを1つ作り、userTypeをもたせる
– ユーザ種別ごとの情報は別テーブルに持ち、カスタムユーザクラスと`OneToOneField`で紐付ける
– UserDetailSupplier
– UserDetailBuyer
– ユーザの保存にはアダ

元記事を表示

Mac上でPythonかGolangでGUI開発環境を整えたい

またまた無職になった。
ニート期間中に技術力を上げるため、就職活動しながら勉強することにした。

# スクリプト言語の勉強
一昔前はPerl言語に熱中していたが、数年間離れた生活をしていた。
不倫したと思われたのか、一目Perl言語を見ただけでは理解できない感じにふてくされた態度を取られた。
構ってあげなかった私に問題があるのかもしれないが、このまま分かれようと思う。
一体いくらつぎ込んだのか分からないぐらい膨大な書籍代だが、私の一方的な貢ぎ方に問題があったと思って諦めることにする。
心機一転し、異なるスクリプト言語に本腰を入れようと思う。
しかし、まだ本命を決められないでいる。

## 本命選び
今の考えは2点ある。

* Python
* Golang

テキスト処理をしたいが、それはPerl言語をさておき、上記2点は優劣付けがたいようだ。
ちょっと触った感じでは、Go言語の方が馴染みやすかった。
如何せん、ちょっとした処理とは言え、数週間や数ヶ月後には使い方を忘れているかもしれない。
それでもテキスト

元記事を表示

Pythonで使えるメモ

#Python 早引きメモ
プログラミングするときのコピペメモ

## 入力
1行の中に複数の値が入っているのを、分けて変数に入れる
`1 2` -> `a=1, b=2`

“`python
a,b = (int(x) for x in input().split())
“`

多重リスト

“`
table = [[0] * W for i in range(H)]
“`

複数行の場合
最初に、行数を指定

“`python
num = int(input())
a=list(range(num))
b=list(a)

for i in range(num):
a[i],b[i]=(int(x) for x in input().split())
“`

## 出力

“`python
num = “Yeah”
print(“Hello”,num) # HelloYeah
print(num,end=”) # Yeah (改行しない)
“`

## if文
インデントに注意!

“`python
if a == 0:
~~
elif a <

元記事を表示

pythonでSFTP通信したら地味にハマった話

#概要
海外のライブラリはエンコーディングの考えが適当なものがあるから注意って話。

#トラブル内容
業務上、pythonでsftpを触る必要が出たからparamikoを使用し、ファイルをFTPサーバから直接ダウンロードして中身のテキストファイルを統計処理にかけようとした。
[APIのドキュメント](http://docs.paramiko.org/en/stable/api/sftp.html)では「file()関数はpythonのfileと同じ用に使えるようにしてあるよ」ってあったので適当にパスなどを指定したら下記のエラーが出た。

> UnicodeDecodeError: ‘utf-8’ codec can’t decode byte ~~ in position ~~: invalid start byte

コードは下記のような感じ。

“`python

client = paramiko.SSHClient()
client.connect(適当な接続情報)
sftp_connection = client.open_sftp()

with sftp_connect

元記事を表示

pythonでmatplotlibがなんでインストール出来ないんだ!!

#この記事の内容
この記事では僕がpythonのライブラリーとして有名な**matplotlib**をインストールするのにとても苦労したので、matplotlibがインストール出来ない時の対処法について自分メモとして残して置きます。もしわからない事、意見がある人は遠慮なくコメントを書いてください。

#状況説明
python3.9を使っていて作図をしたかったので、pip3を使ってライブラリーのmatplotlibをインストールするために次のコマンドを打った

“`terminal
pip3 install matplotlib
“`

![スクリーンショット 2020-10-28 23.23.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581846/745630a3-f7d9-ce04-1b00-ea74a44f80c0.png)

**sudo**コマンドを使って管理者権限で実行しても同じエラーを吐く。パソコンの調子が悪いからインストール出来ないと思いパソコンを再起動するがまたエラー吐く。

元記事を表示

paizaで使えそうなpython3の処理

# python3 使えそうなもの

paiza取り組んでます。
自分用のメモです。
これからも追記していきます。

## 入力の配列格納処理

“`
# 入力を分割して配列に格納
x, y, z = [int(x) for x in input_line.rstrip().split()]
print(x + y + z)

# 入力を分割せず配列に格納
tem = [int(n) for n in input_line.replace(‘ ‘, ”)]

# 複数行の入力
input_ = [input() for i in range(len_)]

# 辞書型に格納
input_ = int(input())
dic = {input_[i].split()[0]: int(input_[i].split()[1]) for i in range(len(input_))}
“`

## 配列のソート

“`
# reverse=Trueで降順
nums = sorted(input_line, reverse=True)
“`

## for文

“`
# カウン

元記事を表示

素数かどうかを判断する【Python】

この記事では、
入力された値(n)が素数か素数ではないかを判断するプログラム
を書いていきます。

##素数とは
素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。
参照: 素数 – Wikipedia

##実行環境
– MacOS
– Python 3.7.5

##求め方
① 1以下または2の場合、素数かどうか記述する。
② 3以上の場合、2~nまでループして割り切れる数があるか調べる。
  割り切れる場合は素数ではない。
③ 関数を呼び出して、結果を表示する。

###① 1以下または2の場合、素数かどうか記述する
Falseの場合、素数ではない。
Trueの場合、素数。

“`python:prime_num.py
def prime_num(n):
# 1以下は素数ではない
if n <= 1: return False # 2は素数 if n ==

元記事を表示

OTHERカテゴリの最新記事