Python3関連のことを調べてみた2021年08月15日

Python3関連のことを調べてみた2021年08月15日

pythonでネタ進捗バーを作ってみた。

# 動機のお話

簡単にいうと、進捗バーを作成したくなりました。
tqdmというパッケージを使えば簡単にできるっぽいのですが、それでは面白みがありません。
せっかくアスキーアートというものがあるのだから、暇な時間はそれを映したいなと思い、いろいろ試すことにしました。

## 必要な知識
まず、進捗バーを表示する際に知っておくべきことがあります。
それは、表示カーソルの動かし方です。
以下のコードを見てください。

“`python:sample1.py
import time
for i in range(10):
time.sleep(1)
print(“\r{}”.format(i),end=””)
“`
これを実行すると、表示される数字が上書きされます。
注目すべきは二つ。

1. end=””
これはprint関数のオプションにある、終端文字の指定で、デフォルトは”\n”(改行文字)です。
そのため、これを””(文字なし)に変更すると、行を下に動かさずに出力できるようになります。
元記事を表示

Pythonのバージョンを簡単に切り替えられる!pyenvのチートシート

pyenvでトラブルがあったこともあり、[README.md](https://github.com/pyenv/pyenv/blob/master/README.md)と[Command Reference](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md)を読んだので、備忘録として使い方をまとめてみました!

###### 参照元
– 2021年7月27日が最終更新の[README.md](https://github.com/pyenv/pyenv/blob/master/README.md)
– 4月9日が最終更新の[Command Reference](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md)

# そもそもpyenvとは
– いくつもあるPythonのバージョンをPCに複数入れて、その時々で切り替えて使いえたらいいな
– バージョンをいくつも入れ過ぎてカオスになってきた!整理したい!

という時に活躍する、複数バージョンを整理して管理でき

元記事を表示

一般ピープルでもPythonの自作ライブラリをpipに公開する方法

# 自作Pythonライブラリを全世界に公開
Pythonでライブラリをインストールする際は

“`
pip install [ライブラリ名]
“`
というコマンドを使うことが多いですが、
多くの人は以下のようなイメージを持っているかと思います。

**「pipで公開してるライブラリってシリコンバレーのランチ無料のオフィスで働いてる凄いエンジニアが作ったんでしょ?」**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/18f71b3b-0ccb-6ed9-b3df-954d451bdd29.png)

このように敷居が高そうに見えるpipですが、実は**一般人でもライブラリを公開することができます**

何を隠そう、一般人の味方!す○家で牛丼ランチ(500円)を食べている僕でもアップロードできました。
一般ピープルでも全世界にライブラリを公開できるのは感慨深いです。

公開方法を紹介している記事はいくつかありますが、どこかしらの必要工程が抜けているものが多いように感じた

元記事を表示

データサイエンスでコンサルティング

初めまして、Panamixkedaと申します。Qiitaもですし、技術系の投稿をアップするのは今回が初めてです。
数年間こそこそとデータサイエンス関連の勉強をしておりまして、アウトプットもしていこうかなと思った次第ですね。(ぶっちゃけ、きっかけは転職しようと思ったからです)
データサイエンスにビジネスサイドからも学問的サイドからも興味があります。kaggleは計算量をほとんどかけない範囲でしたことがありますが、実務経験はありません。

その他のスキルや興味についての紹介を、とりあえずキーワードレベルで済ませるなら、
Python/sklearn/PyTroch/テーブルデータ/画像処理/自然言語処理/強化学習/マルチモーダル
といったところでしょうか。括りの粒度の問題なのか、なんか胡散臭いですが。

これから色々と発信していきますのでおいおいわかって頂ければと思います。どうぞよろしくお願いいたします。

ちなみに、**本記事の対象者は、ある程度データ分析知識がある方で、できればデータ分析人材を採用したりしたい方です。**もっと学問的/各論な記事だったり、データ分析が専門外である人にも向

元記事を表示

Chapter 1 – §03 文字列・数値

# 文字列
[§01](https://qiita.com/confrict/items/e1e5c53dd89b79485799#%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%84%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)でも紹介したように、 `print()`の中には変数以外に直接文字を入れることができます。
`print()`文でできることを上げていきます。

## ・変数に代入した文字列を連結させて表示する
文字列を変数に代入して、それをつなげ合わせるとき、 `,` を使います。

例えば、`a = 明日は`, `b = 晴れます` 
この二つの単語を`明日は晴れます`にするために a と b の文字列を繋げるとします。
この時、

“`python
print(a, b)
“`
とすれば、

“`python
明日は晴れます
“`
と出ます。

## ・print()文でできること (+α)
## 空白行を作る
文字通り、空白

元記事を表示

【Python】print出力で文字列の差異を色で表現する

## この記事の目的
正解文字列と任意の文字列を1文字単位で比較し、消えた文字を赤文字で、増えた文字を黄色の背景色でprint出力する。

![diff.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/2e99ca52-d44b-cb7b-7821-117710ec9720.png)

ページの最後に[コード一覧](#コード一覧)があります。

## 実行環境
+ python 3.9

## 解説
使用するのは標準モジュール difflib の Differ オブジェクトの compare メソッドです。

https://docs.python.org/ja/3/library/difflib.html

compare(a, b)
>文字列からなる2つのシーケンスを比較し、差分(を表す文字列からなるシーケンス)を生成します。
各シーケンスの要素は、改行で終わる独立した単一行からなる文字列でなければなりません。そのようなシーケンスは、ファイル風オブジェクトの readlines() メ

元記事を表示

SitarHarmonicsさんが書いた物体の動きを可視化するコードを復元して、戦闘機と馬術競技のMP4動画で試した(成功)

###実行結果

>“`bash:Terminal
>% python3 trajectory_arrow_sample_2.py –file_path f_22_fighter.mp4 –start_frame 100
>“`

![](https://user-images.githubusercontent.com/87643752/129235872-940e84c9-5208-45e1-8608-fa622bfbe7c9.png)

![](https://user-images.githubusercontent.com/87643752/129235934-d2f76079-4bef-4704-b4f5-1d7e45f3fe53.png)

![](https://user-images.githubusercontent.com/87643752/129236045-78254f55-b2cf-4a43-85b3-360d35372c21.png)

![](https://user-images.githubusercontent.com/87643752/

元記事を表示

Chapter 1 – §02 計算・コメント

# Pythonで計算してみよう
今回から、開発環境を使って作っていきたいと思います。
自分は Pycharm を使いますが、VSCode などご自分が使われているものであればかまいません。
文字列以外は**すべて**半角小文字です。

## 簡単な計算
`1 + 1 = 2` を計算してみましょう。

“`python:1+1
print(1 + 1)
“`
を入れて実行すると、

“`python:1+1
2
“`

と出てきます。
↓ このようになれば成功です。
![6edfec388c1719b3a55ed472207399ca.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1581903/a68078c7-f34f-ff1e-136a-a613dc1c7e0b.png)

掛け算・割り算・累乗(羃乗)などの複雑な計算もできます。

“`python
print(6 – 4)
print(2 * 5)
print(10 / 2)
pri

元記事を表示

指定した距離よりも近づかないように、ランダムに点を平面に並べる

###はじめに
blenderのテクスチャマップで、模様の並びがランダムで、お互いに重ならないようにする必要があったので、指定した距離よりも近づかないように、ランダムに点を平面に並べるリストを作るスクリプトを書いてみた。

ランダムに点を取って、それと、既存の点の距離を計算して、距離が十分なら新たな点として採用、という仕組みなので、効率は悪い。

並べる模様が、指定した面積からはみ出さないように、変数出力をする際に、yohaku = round(distance/2)、を設定してある。

“`python
import random

dot_list = [] #点を入れるリスト。入っているのは、2次元のタプル。

distance = 70 #これ以上離れていれば良い距離。並べるものを円形としたら、その直径より大きな値にする

point_num = 20 #模様の個数

size_x = 1024 #下地の横のサイズ
size_y = 1024 #下地の縦のサイズ

#与えられた既存の点のリストと、新たに作った点に対して、新たな点が、既存の点の一覧と、離れているかの確認。
#近

元記事を表示

OpenCV2で物体追跡 〜 特徴点の移動軌跡をlineではなくarrowedLIneに変えてウインドウに動画出力

__[前の記事](https://qiita.com/electronics_diy721/items/ad9bb5a095ba90e96e37)__で取り組んだオプティカル・フローの物体移動軌跡(__*trajectory*__)を線(__*cv2.line*__)から矢印(__*cv2.arrwedLine*__)に変えてみた。

__( 前の記事 )__

– [OpenCV2で物体追跡 〜 特徴点の移動軌跡をフレーム画像から切離してウインドウに動画出力](https://qiita.com/electronics_diy721/items/ad9bb5a095ba90e96e37)

Have changed *cv2.line* tp *cv2.arrowedLine* in optical flow drawing script.

###( 変更後の出力結果 )

– 左下の画面を見ると、ところどころ小さな__矢印の先(「>」)__が見える

![](https://user-images.githubusercontent.com/87643752/129138904

元記事を表示

【解決】【Python】自作クラス内のlistに値を代入するときappendだと__dict__に代入されない

# 8/12追記

@shiracamusさんより丁寧に解説して頂き解決しました。
結論として変数をインスタンス化をしていなかったらとなります。

“`python:
class Result:

def __init__(self): # 初期化をしていなかった
self.result = []
“`
初期化することでappendでも代入されることを確認しました。
ありがとうございます。

以下追記前の記事です。

# はじめに
PythonでクラスをJSONにシリアライズするときにハマったので書き落としておきます。
まだまだ初学者で根本的な間違いをしていそうなので、理由わかる方いましたらぜひ教えて頂きたいです。

# 環境
python 3.9.6
pipenv version 2021.5.29

# 本文
###0. 前準備
実行結果をまとめておくクラスに内包されたlistを用意しておきました。

“`python:
class Result:
result: list[str] = []
“`
###1. append
さて、ここに実行結果の

元記事を表示

CartPoleを強化学習ライブラリKeras-rlを使って学習させてみた

DeepLearningの勉強中なのですが、(全くわからないので)「とりあえず他人の模倣をする」という方針で、多くの皆様方がやっておられるOpenAIのCartPoleを強化学習ライブラリKeras-RLを使って学習させてみました。

#CartPoleとは

CartPoleは横に移動できるカートの上にポールが立っており、そのポールをいかに倒さず長く維持できるかを競うゲームになっています。言い換えるとCartPoleでは「4つの入力情報(カートの位置、カートの速度、ポールの角度、ポールの角速度)を与えて、2つの出力(左に押す、右に押す:押す強さは固定)のうちどちらか1つを選ぶ、DeepLearningのモデルを作りなさい」と言うことです。

![cartpole.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593076/62664196-5983-eb54-c5e6-6055c5fdc69e.png)

#動作環境

本投稿では下のライブラリを使っています。Keras-RL2が強化学習用ライブラリで

元記事を表示

flaskを使ってRestAPIサーバを作ってみる(編集編)

# 本記事は

[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)の「編集」について記述しています。
ここまでの流れは[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)を参照してください。

# 4. 編集

次に編集です。

編集も、必要な情報はsearchと変わりませんが、どのAccountを変更するかを指定するためにアカウントIDを指定することにします。
変更が必要な項目のみを受け取り、リクエストにない項目は更新しないことにします。

受信すべきリクエストは次の様になります。

###### updateのリクエスト

“`json
{
        ”id”: 320,
“account_name”: “account”,
“start_on”: “2021-01-01 00:00:00”,
“end_on”: “2021-1

元記事を表示

PythonでJSON with Commentsを使う

# 目次

1. [Pythonファイルへのデータ直書きに待った](#pythonファイルへのデータ直書きに待った)
2. [JSON with Comments とは](#json-with-comments-とは)
3. [JSONCファイルをPythonで読み込む](#jsoncファイルをpythonで読み込む)
4. [参考文献](#参考文献)

# Pythonファイルへのデータ直書きに待った

お急ぎの方は読み飛ばしてください。

例えば、都道府県庁所在地を辞書型で持つ、という状況を考えてみましょう。
Pythonファイルにデータを直書きしてしまうと、以下のような感じになってしまうでしょう。

“`hoge.py
dict_prefectural_capital = {‘北海道’: ‘札幌’, ‘青森県’: ‘青森’,
… (略) … ,
‘沖縄県’: ‘那覇’}
“`

このデータをここからさらにいじりたい時(具体例悪くてすみません・・・)とかは、こ

元記事を表示

Pythonでオリジナルのドット絵エディタを作る(3) – FFT機能の実装

#はじめに
[前回の記事](https://qiita.com/Hisan_twi/items/d9cb985ef1ca6b660c08)で作成したドット絵エディタにお遊び機能として高速フーリエ変換(FFT)機能を追加します。
搭載する機能の仕様は以下の通りです。

– FFTボタンをクリックするとペイントツールで描いた原画像をFFTしてそのパワースペクトルと位相像を表示する。
– IFFTボタンをクリックするとパワースペクトルと位相像から原画像に逆変換する。
– ライブFFTボタンを有効にするとペイントツールや編集ボタンで描画したしたときに自動で上記の相互変換を行う。
– パワースペクトルおよび位相像のキャンバスにも原画像のキャンバスと同じようにペイントツールでドット絵が描ける。

#環境

前回から使用している環境に加えてmathライブラリを使用します。
mathは標準ライブラリのためインストールは不要です。
円周率(`math.pi`)を使用するだけなので、直接数値を入れるなどして代用する場合は不要です。

#解説
FFT機能の実装方法を解説します。

###キャンバスの準備

元記事を表示

【AtCoder】ABC213をPython3で解説(ABCD)

ABC213の解説。

https://atcoder.jp/contests/abc213

## A – Bitwise Exclusive Or
### 解説

`xor` は、排他的論理和を表す。
これについては、`^` を用いることで答えがでる。

### コード

“`python
a, b = map(int, input().split())

print(a ^ b)
“`

## B – Booby Prize
### 解説

下位から2番目の選手番号、つまり、スコアが2番目に大きい選手番号を答える問題。

`enumerate()`でスコアと選手番号をあわせてタプルにする。
その後、降順でソートし、リストの2番目の値を取ればAC。

### コード
“`python
n = int(input())
alist = map(int, input().split())
result = []

for i, v in enumerate(alist):
result.append((v, i+1))

ans = sorted(result, rev

元記事を表示

python リスト内包表記のメモ

## リスト内包表記の書き方
リスト内包表記とはリストの中にコードを書いてリストを作成する手法のことである。

“`square.py
square = [i ** 2 for i in range(10)]
# >> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
“`

リスト内包表記では、if文で分岐する記載も可能である。

“`even_square.py
even_square = [i ** 2 for i in range(1:10) if i % 2 == 0]
# >> [4, 16, 36, 64]
“`

if-else文での分岐処理も可能である。
ただしif文のみで作成する場合とは順番が異なることに注意が必要である。

“`odd_and_even_square.py
odd_and_even_square = [i ** 2 if i % 2 == 0 else i for i in range(1, 10)]
# >> [1, 4, 3, 16, 5, 36, 7, 64, 9]
“`

elifは使えない。しかし、if

元記事を表示

flaskを使ってRestAPIサーバを作ってみる

# 0. 始める前に

Webアプリケーションを作りシステム作りが初めてであってもどこからどこまで実施すれば動くシステムができるのかを開発して体験してみます。
前準備として次の記事を見てアプリケーションに必要なツールの導入をしてください。
* [Flask+MySQL on dockerを始める準備](https://qiita.com/kaorunix/items/dacb0122898c18ad6b57)
* [Flask+MySQL on docker](https://qiita.com/kaorunix/items/c04d250bda904e9f07f2)

FlaskはpythonのWebアプリ開発フレームワークです。Webサーバーを立ち上げてURLに応じた画面を表示したり、リクエストに対する処理をpythonで作り処理結果を返すことができます。

### 0.1. DBにテーブルを追加する

本記事はユーザーアカウントを想定したAccountというテーブルを使います。
異なるテーブルを使う場合、[Flask+MySQL on docker](https://qiita.

元記事を表示

flaskを使ってRestAPIサーバを作ってみる(検索編)

# 本記事は

[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)の「検索」について記述しています。
ここまでの流れは[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)を参照してください。

# 3. 検索

検索も考え方は作成とほぼ同じですが、検索に必要な項目はその時よって異なります。
全ての項目を受け取れるJSONを設計しますが、項目は任意とし、項目がなかったら検索条件に加えないことにします。
また、検索というのは与えられる項目について完全一致、部分一致、範囲検索などができるのが通常のシステムでしょう。今回は限定的に完全一致のみ実施することとします。
受信すべきリクエストは次の様になります。

###### createのリクエスト

“`json
{
“account_name”: “アカウント名”,
“start_on”: “2021-

元記事を表示

flaskを使ってRestAPIサーバを作ってみる(作成編)

# 本記事は

[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)の「作成」について記述しています。
ここまでの流れは[flaskを使ってRestAPIサーバを作ってみる](https://qiita.com/kaorunix/items/c5fb96124dcdf57c151f)を参照してください。

# 2. 作成

[参照](https://qiita.com/kaorunix/items/05f47b937d83e2324c4d)の次に、Accountレコードを作るApiを考えましょう。
入力には作られるAccountオブジェクトで必須となる情報を受け取れる様にする必要があります。

Accountオブジェクトの場合、以下の様な情報で構成されています。

|項目名|カラム名|データ型|
|–|–|–|
|アカウントID|id|数値|
|アカウント名称|account_name|文字列|
|有効開始日|start_on|時間|
|有効終了日|end_on|時間|

元記事を表示

OTHERカテゴリの最新記事