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

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

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

元記事を表示

にゃんこスイーパー

UbuntuのTerminalで動く、にゃんこスイーパーです。

ファイルに、chmod +x nyankosweeper.pyとして、実行権を付けて動かして下さい。

$./nyankosweeper.py [number of cats]として、動かします。
[number of cats]は、省略できます。省略すると、機雷の数は61個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題ないですが。

“`nyankosweeper.py
#!/usr/bin/python3

import curses
import random
import locale
import select
import sys

xsize = 40
ysize = 23
vvram = [[0 for i in range(ysize)] for j in range(xsize)]
mask = [[“#” for

元記事を表示

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

元記事を表示

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

元記事を表示

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`

元記事を表示

OTHERカテゴリの最新記事