Python関連のことを調べてみた2021年11月25日

Python関連のことを調べてみた2021年11月25日

MD5によるダイジェスト値を取得する

“`Python
$ cat test1.py
#!/usr/bin/env python3

import hashlib
import datetime

class Animal:
def __init__(self, name=’John’, height=180):
dt_now = datetime.datetime.now()
self._id = hashlib.md5(str(dt_now).encode()).hexdigest()
self._name = name
self._height = height

def __del__(self):
print(self._id, ‘is destruted…’)

@property
def id(self):
return self._id

@property
def name(self):
return self._name

@property
def height(self):
return self

元記事を表示

paizaラーニング 「長テーブルのうなぎ屋」の考え方【初級】 (Python)

:::note warn
この記事はネタバレを含みます。
まずは自分で挑戦してみましょう
:::

問題へのリンク:[長テーブルのうなぎ屋](https://paiza.jp/works/mondai/skillcheck_sample/long-table )

:::note
この問題は「paizaラーニング」問題集の問題のため、解説・解答の公開が許されています。
スキルチェックの問題は内容に関わる一切が公開を禁止されています。
気をつけましょう。
:::

:::note alert
この記事で作成するコードは不完全です。
あくまで「考え方」と「考えをコードにする」ことが目的です。
「処理の最適化」までは考えないものとしています。
:::

## 目次

[0. 読み方](#0-読み方)
[1. 問題理解](#1-問題理解)
[2. やること](#2-やること)
[3. 処理組み立て](#3-処理組み立て)
[4. 構築](#4-構築)
[5. 動作確認](#5-動作確認)
[6. おわりに](#6-おわりに)

## 0. 読み方
 深く考えず書いたら「3. 処

元記事を表示

なんでもナイトコアにする

# ナイトコアとは

> 原曲のテンポを高速化させ、場合によっては意図的にピッチも上げて作られた、リミックスを指す音楽ジャンルである

[ナイトコア 出典: フリー百科事典『ウィキペディア(Wikipedia)』](https://ja.wikipedia.org/wiki/%E3%83%8A%E3%82%A4%E3%83%88%E3%82%B3%E3%82%A2)

# ナイトコアにする
とりあえず早くする

“`python:
import pydub
from pydub import AudioSegment

path = “xxxxxxx.mp3″

base_sound = AudioSegment.from_file(path, format=”mp3”)
base_sound = base_sound.speedup(playback_speed=1.5, crossfade=0)

base_sound.export(“nightcore.mp3″, format=”mp3”)

“`

おしまい

音を高くするとかも多分すぐできるでしょ

# 今後の展開

元記事を表示

いろいろな言語でAPIコールするよ!

## 導入
webAPIの叩き方を各言語でまとめました。
後で見返す用です。
2021年11月23日時点:Postリクエスト送信

### json リクエストのサンプルパラメータ

“`python
sample_endpoint = “http://localhost:8888/sample”
sample_parameter = {
“title”: “トマトスープ”,
“making_time”: “15分”,
“serves”: “5人”,
“ingredients”: “玉ねぎ, トマト, スパイス, 水”,
“cost”: “450”
}
“`
### Curl
“`terminal
curl –location –request POST ‘http://localhost:8888/recipes’ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“title”: “トマトスープ”,
“making_time”: “15分”,

元記事を表示

【Python】Excelに書かれたURLから動画をダウンロードしたい

#はじめに
Pyhtonを使ってExcelに書かれたURLから動画をダウンロードするツールを作ったので、せっかくなので記事としてまとめることにしました。
PythonはおろかIT初心者が書いた記事ですが、何かの助けになれば幸いです。

#作ったもの

|ファイル名|URL|
|:—:|:—:|
|動画1.mp4|http://example.com/sample1.mp4|
|動画2.mp4|http://example.com/sample2.mp4|
|:|:|

このような形式のエクセルから、リンク先の動画をファイル名に書かれた名前で保存する。

#環境
MacBook Pro (M1, 2020)
macOS Big Sur 11.6.1
Python 3.9.7

#ソースコード

“`python:download.py
import requests
from openpyxl import load_workbook
from pathlib import Path
from tqdm import tqdm

# Excelファイルのロード
excel_pa

元記事を表示

Pythonでnumpyを使わずにargsortとかargmax

[Equivalent of Numpy\.argsort\(\) in basic python? \- Stack Overflow](https://stackoverflow.com/questions/3382352/equivalent-of-numpy-argsort-in-basic-python)
range()をソートするkeyで対象のリストをインデクシングするとできます。

### argsort
“`python
x_list = [4, 1999, 2]
i_list = sorted(range(len(x_list)), key=x_list.__getitem__)
print(i_list) # [2, 0, 1]
“`

### argmax

“`python
x_list = [4, 1999, 2]
i_max = max(range(len(x_list)), key=x_list.__getitem__)
print(i_max ) # 1
“`

元記事を表示

備忘録 spreadsheet をPythonで操作する(gspread)

初心者が何とか使ってみるために色々やって
なんかよくわからんけど唯一動いた()のがこの方法だったので自分用に保管しておく。

**1.Google側でAPIを使う設定を済ませる**
いきなりPython側で操作せず、まずはGoogle側で設定する。
以下のサイトを参考にした。
https://hituji-ws.com/code/python/python-spreadsheet/ 
(2021.11.25閲覧)
 GoogleCloudPlatformにアクセスしてAPIを有効化、その後スプレッドシート側に移動して共有の設定をする。

:::note warn
注意
ここでDLする.jsonファイルは後々プログラムを書くファイル(.py)と同じフォルダに保管する
:::

**2.pythonのターミナルでライブラリをインストールする**
今回使いたいgspreadとoauth2clientはインストールする必要がある為、pipコマンドを用いてPythonにインストールする。
(ターミナルから)

“`py:install.py
pip install gspread
pip in

元記事を表示

物体の形状変化を伴う画像変換

[CycleGAN](https://junyanz.github.io/CycleGAN/)は画像の文脈を保ったまま画像変換を行うことができる手法です([以前に書いたCycleGANの解説記事](https://qiita.com/hrs1985/items/050acb15ce33675f07ec))。しかし、形状の変化を伴うような画像変換は苦手としていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134222/5e9ed141-ebec-c1da-78b7-63c09fcae661.png)

これに対処するため、物体のマスク情報を明示的に使って画像だけでなくマスクも変換しようというInstaGANが提案されています。画像に対してインスタンスごとにマスクが与えられた状態のデータを必要としてますが、面白い手法なので解説したいと思います。

#InstaGAN
[InstaGAN: Instance-aware Image-to-Image Translation](htt

元記事を表示

備忘録 ストリーミング

#複数クライアントでストリーミング

##目的
1.複数PCで同一画像をPythonで受け取り画像処理の性能の比較や画像共有したい。
2.カメラ側は手軽に起動させたい。
3.作成に時間はかけたくない。

ということで送信側をC++アプリ、受信をPythonで作成。
ちゃんと作成するなら カメラ側(サーバ)のクライアント管理はTCP,画像送信はUDPでマルチキャストになるが3.が目的になっている(作業備忘録です)。

**実行環境**

– サーバ : Windows 10
– クライアント: Python実行環境(opencv 4.3.0)

**開発環境**

– サーバ: VisualStudio 2019 (opencv, pthread 使用)
– クライアント: python 3.8

##サーバ(画像送信)

https://qiita.com/tarot_shogun/items/73373f2d9ba2ed09920a

https://krhb.hatenablog.com/entry/2020/01/16/181858

上記2サイト参考にopencv, pthre

元記事を表示

【Python】RedmineチケットのカスタムフィールドにPythonからファイル添付する

PythonでRedmine APIを操作するための`python-redmine`モジュールを使用したファイルタイプのカスタムフィールド更新を説明したいと思います。

# 通常のカスタムフィールド更新方法

ファイルタイプの更新方法について説明する前に、通常のカスタムフィールドの更新方法をおさらいします。

`redminelib`はPythonでRedmine APIを使用するためのモジュールです。
`pip install python-redmine`でインストールできます。

ざっくりとした流れは、以下です。

1. Redmineの接続情報(APIキーとURL)を指定
1. チケットIDを指定
1. カスタムフィールドIDを指定(分からない場合は、カスタムフィールド名から求める)
1. チケットIDとカスタムフィールドID・カスタムフィールドに設定する値を指定して、チケットを更新

詳細はソースのコメントに書いています。

“`python:通常のカスタムフィールドの更新
from redminelib import Redmine

# Redmine接続情報

##

元記事を表示

TensorFlow Certificateに1日で合格する方法

[TensorFlow Developer Certificate](https://www.tensorflow.org/certificate)に合格しました。受験体験記を共有したいと思います。
![Screenshot from 2021-11-24 23-15-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208363/6811445c-15c5-231c-7357-19ce534aab8a.png)

# 合格するためにやったこと
## DeepLearning.AI テンソルフロー開発者 プロフェッショナル認定 – Coursera
ローレンスさんとアンドリューさんの講座をやりました。
無料で動画の視聴ができ、登録しても7日以内に解約すれば無料でテストが受けれます。
https://www.coursera.org/professional-certificates/tensorflow-in-practice
4コースx4Weekありますが、集中してやれば1日で終わります。日本語字

元記事を表示

Pyhton_ローカル変数とグローバル変数

# 関数外で定義した変数はグローバル変数

“`Py
num = 50
def printnum():
print(num)

print(num)
printnum()
print(num)
“`

>50
50
50

# 関数の中で代入した変数はローカル変数
* 関数内が範囲
* グローバルに同名の変数があっても関数内では優先される

“`Py
num = 50
def printnum():
num = 20
print(num)

print(num)
printnum()
print(num)
“`
> 50
20
50

# 関数内でglobal変数を更新する
“`Py
num = 50
def printnum():
global num
num = 20
print(num)

print(num)
printnum()
print(num)
“`
> 50
20
20

# ネストした関数で1段上の関数の変数を更新する
何もしていない時はそれぞれのローカル変数を読み込む。

“`Py
num = 0

元記事を表示

Python_*args, **kwarge(可変長引数)

# *args
いくつでもの引数をタプルとして受け取る
*argsはargsではなくどんな文字列でもよい。

“`py
def challenge_args(*args):
print(args)
print(args[0])
print(sum(args))

challenge_args(1, 2, 3, 4)
“`

“`text:実行結果
(1, 2, 3, 4)
1
10
“`

“`py
def challenge_apple(*apple):
print(apple)
print(sum(apple))

challenge_apple(1, 2, 3)
“`

“`text:実行結果
(1, 2, 3)
6
“`

# **kwargs
いくつかのキーワード引数を辞書として受け取る。

“`py
def challenge_kwarges(**kwargs):
print(kwargs)
apple = kwargs.get(‘apple’, None)
print(apple)

元記事を表示

sqlalchemy パスワードに@を含む場合の対処方法

# 概要
sqlalchemyとを使用してDBに接続する際に、パスワードに@を含む場合の対処方法です。
パスワードに@が含まれている場合、URLの @ と区別が出来ずエラーになります。

# 対処方法
quote_plusを使用してパスワードをURLエンコードしてから使用します。
URLエンコードすることでパスワード中の @ が %40 にエンコードされます。

“`python:python
from urllib.parse import quote_plus

import pandas as pd
import sqlalchemy as sa

user = ‘username’ # ユーザ名
password = ‘p@ssword’ # パスワード
host = ‘localhost’ # ホスト名 or IP
db = ‘database’ # データベース
port = 3306 # ポート

# パスワードをURLエンコード p@ssword -> p%40ssword
password = quote_plus(pa

元記事を表示

OpenCVのマウス操作でトリミング

### はじめに

opencvのマウスイベント機能を使って、画像トリミングプログラムを作成しました。
マウスの左クリックでトリミング座標取得、右クリックでトリミング実行、
ESCキーでプログラム終了をします。timeoutの指定もできます。

### 環境
anaconda
windows 10 pro
python = 3.9
opencv = 4.5

### 参考:
– 今回作成したプログラムのひな型1(座標取得)
[Python、OpenCVでマウスのクリック位置を取得する](https://www.omoshiro-suugaku.com/entry/mouse-position)
– 今回作成したプログラムのひな型2(描画)
[【Python】OpenCVを使ったマウス操作での直接描画 – setMouseCallback() ](https://code-graffiti.com/opencv-direct-drawing-with-a-mouse-in-python/)
– OpenCVのマウスイベントの組み合わせについて参考にした。
[OpenCVでマウスイベントを

元記事を表示

Python: C# の GroupBy(g=> g).Where(w=> w.Count() == 2) の実現方法

# 背景
Python だと全然よくわからず・・調べた記録

“`c#:C#-LINQでの取得方法
list.GroupBy(g=> g).Where(w=> w.Count() == 2)
“`
python は書きやすいと思っていたので、Linq のような簡単な方法があるんじゃないのかなぁ・・と思い調べたが見つからず・・

# 試行
## groupby
普通にこれでやれると思ったら、思ったように取得出来なかった・・
使い方が悪いのかと試行錯誤したあとで、
以下の Sample で、同一の文字列突っ込んでみたら別グループにされてしまったので、諦め

https://www.tutorialspoint.com/python-grouping-similar-substrings-in-list

## ゴリゴリ・・
結局、以下で実現。

1. Unique Key の抽出
1. Key で Filter
x[1]を指定しないといけないのも感覚的じゃない・・
1. 中身の長さで Filter

“`python:byCollection
card

元記事を表示

MySQLからデータを取得してpandasで使用する

# 概要
sqlalchemyを使用してDBに接続し、selectの結果をpandasのDataFrameとして取得する方法です。

# 使用方法
## インストール
sqlalchemyとPyMySQLがインストールされていない場合はpipでインストールします。

“`console:console
pip install sqlalchemy
pip install PyMySQL
“`

## DB接続+データ取得
DBに接続するには create_engine() 関数にURLを指定します。
pandasのread_sql関数にselect文とcreate_engineで作成したengineを指定し実行すると、sqlの実行結果がDataFrameとして取得できます。

“`python:python
import pandas as pd
import sqlalchemy as sa

user = ‘username’ # ユーザ名
password = ‘password’ # パスワード
host = ‘localhost’ # ホスト名 or IP

元記事を表示

組み合わせ問題を1からコーディング

プログラミングを学び初め、ある程度の知識を取得したと思うので、身近な題材にアプローチしてみた。

その題材とはこれ!!
**“とあるスーパー、過去3ヵ月以内のレシートを合計N万円分集めると500円券をN枚貰える“**

なぜこの題材なのか、、、
**計算が億劫で溜まってしまったレシート、迫る期限、端数を最小限にしたいドケチ精神、だからと言って欲しい金額になるように買い物するのは無駄な買い物しそうで嫌だ**

このような理由から、**自動で最適な組み合わせを教えてくれるコード**を作ることにした。余談ですが、最近、車輪の再発明という慣用句を知りました。

#構想
レシート5枚の時、1枚組は5通り、2枚組は10通り、3枚組は10通り、4枚組は5通り、5枚組は1通りとなる。20枚とか計算する気にならない、、、
どうやってコードにすればええんやと悩み続けたところ、こんな方法を思いついた。
![構想.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1894461/6aa83a86-deec-c912-d3b9-f5

元記事を表示

LR法

# LR 法

この呼び方は一般的な用語ではないですが、ある場所でよく使っていたのでここでもそのまま使っています [^name] 。

[^name]: Dancing Links と呼ばれるものが近そうですが、目的などが少し違いそうな気がします。

## やりたいこと

$N$ 要素からなる集合 $\lbrace 0,\ \cdots,\ N-1 \rbrace$ がある。このとき次のクエリを処理してください。

– ${\rm delete}(i)$: 要素 $i$ を削除する
– ${\rm left}(i)$: $i$ 未満の要素の中で最大の要素の値(なければ $-1$ )を返す
– ${\rm right}(i)$: $i$ より大きい要素の中で最小の要素の値(なければ $N$ )を返す

すでに削除された $i$ が引数として与えられないことが保証されるパターンと与えられる可能性があるパターンがあります。ここでは後者でも対応できるものを想定しています。

### 平衡二分木

平衡二分木があればすべて処理できます。ややオーバーキルですが、組み込みで平衡二分木があ

元記事を表示

一文字一文字に心を込めるプログラム

# はじめに
パソコンで文章を書いていると、手書きに比べてどこか心が込もっていないと感じることはないでしょうか。
そこで本記事では、Pythonを使って「これはペンです」という文章に、心を込めるプログラムを作成してみました。

# 目次
1. [素直な実装](#1-素直な実装)
2. [joinメソッドを用いた実装](#2-joinメソッドを用いた方法)

#1. 素直な実装
文字数分だけループを回します.[^1]

“`python
a = “これはペンです”
for i in range(len(a)):
print(a[i] + “心”, end=”)
“`

出力結果

“`txt
こ心れ心は心ペ心ン心で心す心
“`

#2. joinメソッドを用いた方法
“`python
a = “これはペンです”
print(“心”.join(a))
“`

出力結果

“`txt
こ心れ心は心ペ心ン心で心す
“`
# おわりに
い心か心が心だ心っ心た心で心し心ょ心う心か心。心P心y心t心h心o心n心を心使心っ心て心た心く心さ心ん心心心の心込心も心っ心た

元記事を表示

OTHERカテゴリの最新記事