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

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

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

元記事を表示

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のリクエスト

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

元記事を表示

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|時間|

元記事を表示

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

# 本記事は

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

# 1. 参照

### 1.1. モデル層・エンティティ

accountをaccount_idからレコードを抽出してAPIで返却するところまでを説明します。
importは省略するのでgithubのコードを参照してください。

まずモデル層の核になるAccountクラスです。

“`backend/src/model/Account.py
# model class
class Account(Base):
“””
accountモデル
flask_svシステムにログインするアカウントを管理するモデル

Parameters

元記事を表示

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

# 本記事は

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

# 5. 削除

削除のAPIは、アカウントIDだけわかれば良いのでGETメソッドで特定のURLにアクセスすることにしましょう。

`http://サーバーのIP/account/delete/アカウントID`

### 5.1. モデル層・エンティティ

コードの全文はこちらです。

“`backend/src/model/Account.py
def delete(account_id, operation_account_id):
Session = scoped_session(sessionmaker(bind=engine, autocommit=F

元記事を表示

pythonで、ファイル名の一部を一瞬で修正する。(間違ったファイル名を修正する!)

Pythonを業務で生かして、ラクをしようと言うプロジェクトを実行中です。

1.現状/問題点
月初に経理チームから送付されているpdfファイルなのですが、下記の様に「変」です。
”( ”が、全角になってたりします。(半角と全角がごっちゃになっております。)
これを、Pythonで修正したい。(こんなの簡単だろうと思ったのですが、結構、ハマったので、共有しますね!)

“`
C:\Users\user_xxx\Desktop\project>tree/F
フォルダー パスの一覧
ボリューム シリアル番号は 2E48-BBB4 です
C:.
│ rename_test.py
│ sample1.(1234).pdf
│ sample2(2345).pdf
│ sample3(4567).pdf
“`

ファイル名が「壊れている」と、御存じの様に色々な作業(例えば、Pythonのpywinzipモジュールを使って、pdfファイルを圧縮するとか)に支障が出ます。
従って、ファイル名を一瞬で修正します。

2.コード

“`py
import o

元記事を表示

ベイズ線形回帰で更に実践的に分析へ ~pyroによる実装例~

## はじめに
線形回帰は解釈性も高く、パラメータ推定も容易なので非常に協力な手法です。
また、一般化線形回帰へ拡張することで、より多様なデータにも適用することができるため、現在でも様々な場面で利用されています。
一方で、線形回帰を使っていると、以下の様な疑問に直面することはないでしょうか?
– **パラメータ(回帰係数)はどの程度、信頼できるのか?**
– **予測結果はどの程度信頼できるのか?**
– **より精度をあげるために追加データの取得を考えているが、どの範囲で追加取得するのがいいのか?**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76983/26fa9d57-a01a-fd34-5660-69d107074263.png)

線形回帰を行う主なモチベーションの一つに**パラメータ(回帰係数)の解釈**があるかと思います(予測精度だけを追及するならブラックボックスMLで良い)。
しかし、点推定だけの解釈は危険あり、**その背後にある分布も捉えることでより正しい理解**に

元記事を表示

RaRCTF writeup

# RaRCTF 2021 Writeup
今回は適当に出場してみましたがチーム数が1200弱ありすげーーーと気圧されてましたが
結果は 126位でほぼcryptoだけでこれたので満足です.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1810405/0853f4ad-50b5-b468-0a47-9d2fa5a29435.png)

## 解けた問題

* 解けた問題
* sRSA (100 points)
* unrandompad (150 points)
* Shamir’s Stingy Sharing (200 points)
* babycrypt (200 points)
* PsychECC (400 points)

##sRSA (100 points)
$e,n,ct$が与えられ$ct = flag*e \ \ mod(n)$
よって$ct*e^{-1} = flag*e*e^{-1} \ \ mod(n)$とでき

元記事を表示

M1 MacにPython3をインストールする

# はじめに
Apple M1チップ搭載のMac Book ProにPython3をインストールした時のメモです。
今回は[Miniforge](https://github.com/conda-forge/miniforge)を利用しました。

# やり方
[Miniforge](https://github.com/conda-forge/miniforge)とは最小限のCondaのインストーラーです。
さまざまはCPUアーキテクチャのサポートに重点を置いているので、新しいCPUアーキテクチャのPCにCondaを入れるときに最適です。
今回は直接ダウンロードする方法を紹介します。

## 1. Githubからダウンロードする。
[ここ](https://github.com/conda-forge/miniforge#download)からOS X arm64 (Apple Silicon)Miniforge3-MacOSX-arm64を選択してダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

【Mac】ReactとPython flaskを使ったWebアプリ

Reactの基本的な勉強を済ませ、簡易アプリのソースを読んで知見を蓄え中の身です。本記事は、下記の記事に触発され、愛用しているMacbookのローカル環境で実行した時のメモです。

https://qiita.com/Pu-of-Parari/items/f3733f0ba48e1df50667

## どんなアプリ?
>mecabを使った分かち書きスクリプトを使って、フロントで受け取った入力テキストをサーバー側で分かち書きをし、その結果をフロントで表示するという非常にシンプルなアプリです。

## どんな構成?
>フロント側はReact、サーバー側はpython flaskで実装しています。

## 実装環境
“`
macOS Big Sur 11.2.3
Python: 3.9.6
flask==1.0.2

npm: 7.20.3
“`

## 1. Mecabのインストール
日本語の形態素解析エンジン”MeCab”をMacにインストールしてPython3から利用します。

https://qiita.com/taroc/items/b9afd914432da08dafc8

元記事を表示

Chapter 1 – §01 Python 3 の準備

# Python 3 のインストール

PythonにはPython 2 と Python 3 がありますが、Python 2 はこれからはバージョンアップされることはないので、Python 3 で解説していきます。

### Python 3 のオフィシャルサイト

[Python 3 のオフィシャルサイト](https://www.python.org/downloads/)
ここからPythonを無料でダウンロードできます。

インストールの仕方は[このサイト](https://techacademy.jp/magazine/15571)を参考にしてください。

# 統合開発環境の用意
おすすめは、Visual Studio CodeまたはPycharmです。
どちらかをインストールしてください。

### ・Visual Studio Code(VScode)のインストール
[ここから](https://code.visualstudio.com/download)インストール。

### ・Pycharmのインストール
[ここから](https://www.jetbrains

元記事を表示

【Python3】macのpyenv環境下でtkinterを使えるようにする。

#はじめに
tkinterをimportしたファイルを実行しようとしたところ…
長文のエラー文が出ました。

“`
file “/usr/local/cellar/python@3.9/3.9.5/frameworks/python.framework/versions/3.9/lib/python3.9/runpy.py”,
line 188, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _error) file
“/usr/local/cellar/python@3.9/3.9.5/frameworks/python.framework/versions/3.9/lib/python3.9/runpy.py”,
line 147, in _get_module_details return _get_module_details(pkg_main_name, error) file
“/usr/local/cellar/python@3.9/3.9.5/

元記事を表示

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

ABC212の解説。

https://atcoder.jp/contests/abc212

## A – Alloy
### 解説

“`Gold, Silver, Alloy“`を問題文のとおりに条件分岐してあげるとAC。

### コード
“`python
a, b = map(int, input().split())

if 0 < a and b == 0: print('Gold') elif a == 0 and 0 < b: print('Silver') elif 0 < a and 0 < b: print('Alloy') ``` ## B - Weak Password ### 解説 暗証番号の強さについて求める問題。 弱い暗証番号というのは、 (1)同じ数が4つ続いているもの (2)```0-9```の数字が各桁で1ずつ増えているもの である。 (1)については、```s.count(s[0])```で文字列のはじめの数字について、文字列sの文字を数え、```4```であれば、すべて同じ数なので、```Weak`

元記事を表示

*執筆途中【Python】アルゴリズム実装で多用する記法

#はじめに

Pythonでアルゴリズムを実装する際によく使う書き方や他言語であまり見かけない便利だった書き方の備忘録です。
注 ) 執筆途中です。ちょっとずつ増えます。
注 ) Pythonをほぼ趣味で使っております。業務で用いていたりアルゴリズムPythonガチ勢というわけではございません。ご了承を。

基本的に標準ライブラリのみを用いております。numpy などは用いません。
面倒だったのでまだスライス関係やリスト内包表記はありません。

#演算子

###インクリメント
他言語でよく見る `i++` のようなインクリメント(/デクリメント)記法が存在しない。

“`python
i += 1
“`
あくまでこのような記法。

###掛け算と累乗
“`python
2 * 3 # print(2 * 3) => 6
“`
アスタリスク1つ `*` で多言語同様、通常の掛け算。

“`python
2 ** 3 # print(2 ** 3) =>

元記事を表示

PythonからVOICEVOXを使う

#VOICEVOX
商用利用可能なAIベースの音声合成ソフトウェア

https://voicevox.hiroshiba.jp/

ボイボと呼びましょう。

APIなのかと思ったら、ダウンロードして.exeを実行すると、ローカルにサーバーが立つみたい。
curlでも利用できるとのことなので、pythonで叩いてみた。
あらかじめ上記リンクから、VOICEVOX本体をダウンロードして実行しておいてください。

#実行環境

当方の実行環境は以下

– CPU: i7 8550u
– GPU: Nvidia MX150
– Python = 3.9.5

CPUで実行しました。

#ソースコード

合成されるファイルは映像系のサンプルレート(モノラルの24000[Hz])なので注意

“`voicevox.py
import json
import requests
import wave

def generate_wav(text, speaker=1, filepath=’./audio.wav’):
host = ‘localhost’
port = 50

元記事を表示

Python3の環境構築

#はじめに

初学者が書いていますので、誤っている箇所などあればご指摘願います。

###前提
・macOS Catalina
・Homebrewはインストール済み
・`pyenv`と`pyenv-virtualenv`を使用して環境構築する
・zsh使用

参考記事
[pyenv と pyenv-virtualenv で環境構築
](https://qiita.com/Kodaira_/items/feadfef9add468e3a85b)[pyenvとpyenv-virtualenvの自分流使い方](https://qiita.com/ksato9700/items/5d9eba10fe6b8e064178)
[pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。](https://qiita.com/KRiver1/items/c1788e616b77a9bad4dd)
[pyenv-virtualenvを使って都合のいいように Pythonパッケージ環境を行き来する話](https://ensekitt.hatenab

元記事を表示

Algorithm | 優先度付きキュー(heapq)をPython3で解説(例題あり)

## 優先度付きキューとは

優先度付きキュー(priority queue)とは、優先度にしたがって、優先度の高いものから順番に取り出すことができるものだ。

その代表例が**ヒープキュー(heapq)**である。公式ドキュメントはこちら。(https://docs.python.org/ja/3/library/heapq.html)

特徴は大きく分けて2つある。

– 最小値、最大値を素早く取り出すことができる
– 値の挿入順は気にしなくても良い

主に使うメソッドは次のとおりだ。

– “`heapq.heapify(heap, item)“`:優先度付きキューの作成
– “`heapq.heappop(heap)“`:最小値の取り出し
– “`heapq.heapush(heap, item)“`:キューへの挿入

“`heapq.heappop(heap)“`、“`heapq.heapush(heap, item)“`の計算量はどちらも$O(logN)$なので、通常のリストでの操作よりも少ない計算量で実装できる。

“`python
# heapq

元記事を表示

OTHERカテゴリの最新記事