Python関連のことを調べてみた2022年04月02日

Python関連のことを調べてみた2022年04月02日

Pythonでドラクエ風対戦ゲームを作ってみた

Progateを終わらせたので、そこで学んだことアウトプットするためにドラクエ風対戦ゲームを作りました。

# 概要

勇者とモンスターの名前、HP、攻撃力を設定して戦い勝敗を判定する。同じモンスターと戦っても面白くないので、クラスを使いモンスターを追加する。random.choiceを使ってドラクエと同じようにランダムにモンスターと戦うようにする。

# ドラクエ風対戦ゲーム
まずはクラスMonsterを定義します。名前とHP、攻撃力を入力できるようにします。
“`python:battle
class Monster:
def __init__(self, name, hp, attack):
self.name = name
self.hp = hp
self.attack = attack
“`

次に勇者のステータスを設定します。まだまだ駆け出しですね。
“`python:battle
hero_hp = 30
hero_attack = 5
“`

いよいよモンスターを追加します!!
“`pytho

元記事を表示

Pythonで書き出すファイルの名前に現在の実行スクリプト(.py)の名前を挿入する方法

Pythonでファイルを書き出すときに、保存するファイルの名前に
実行中のスクリプトの名前を挿入するコードを書いたので記事にします。
コード全文は記事の末尾に記載しています(コピペ用)。

筆者はデータ分析で`matplotlib`で作成したグラフなどの保存の際にこの方法を使いました。
ファイル名に一定のルールを設け、命名を自動化することは結果の再現性にもつながります。

# 本記事の想定読者
– Pythonユーザー
– 複数のスクリプトを使って図などを書き出すことがある
– 保存したファイルの整理に苦労することがある

# 最終的なアウトプットの例
今回は簡単のためにテキストファイルを例に使います。

`main.py`と`sub.py`からファイルを書き出す場合を考えます。
本記事の方法を使うと、以下のようなディレクトリ構成を自動でつくることができます。
“`:最終的なディレクトリ構成
.
├── main
│ ├── 001_output.txt
│ ├── 002_output.txt
│ └── 003_output.txt
├── main.py
├── m

元記事を表示

mtg-sdk-pythonで四苦八苦する②

# [前回](https://qiita.com/poslogithub/items/a23252dd6b7075c5453f)までのあらすじ

[MTG Arena](https://magic.wizards.com/ja/mtgarena)のデッキリストを画像出力するために奮闘するposlogithubであったが、[MTG Developers](https://magicthegathering.io/)と[Gatherer](https://gatherer.wizards.com/Pages/Default.aspx)のポンコツっぷりを前に苦戦を強いられているんだ!

# ここで躓くよmtg-sdk-python

流石にもう問題が起きることは無い。
その考えが《[蜂蜜マンモス](https://mtg-jp.com/products/card-gallery/0000187/479678/)》より甘いことに気づかされるのに、大して時間はかからなかった。

“`py
from hashlib import md5
from urllib.request import ur

元記事を表示

初心者がPythonでスクレイピングをして気づいたこと_メモ

# 初投稿
初めまして!Pythonを独学で勉強している超初心者です。
最近webスクレイピングが少しできるようになったので、気づいたことをメモに残したいと思います。
誤った理解や表現が含まれている可能性が大いにあります。
そういった部分はご指摘いただけると幸いです。

# モジュール等
・requests → HTMLファイルを読み込んで表示
・BeautifulSoup(HTMLデータ, “html.parser”) → HTMLを解析
・time → サーバーに負担をかけないための設定
・re → 正規表現(使ったのか不明)
・tqdm → 進捗度を表示
・pandas → データフレーム化

# find と find_all
・find
 最初に見つけた要素を返す。
 要素が見つからなかった場合はNoneを返す

・find_all
 全ての要素を返す
 要素が見つからなかった場合に空のリストを返す

# for文とリスト
下記のコードはあるサイトから漫画の情報をスクレイピングしてみた時に書いたコードです。
サイトの漫画一覧表示ページから一度に取得できれば良かったのです

元記事を表示

Pythonで始めるアルゴリズム入門:FizzBuzzとフローチャート

# 目次
[1.はじめに](#1-はじめに)
[2.参考図書](#2-参考図書)
[3.フローチャート](#3-フローチャート)
[4.FizzBuzz](#4-FizzBuzz)
[5.ツイッターやってます](#5-ツイッターやってます)
[6.ホームページはこちら](#6-ホームページはこちら)

# 1. はじめに

 私は昔コンピュータサイエンスの学科で「アルゴリズムとデータ構造」をC言語で学んだが、単位はギリギリで、とても苦手意識を持った。セジウィック氏の重厚感のある「アルゴリズムとC」の上下巻を携え、アルゴリズムの1つ1つをC言語で実装していく。C言語自体はカーニハン&リッチーのプログラミング言語Cを用いて学ぶ。カバンも脳みそもパンパンに膨れ上がって消化不良に陥った。今から10年以上前の話である。

 時は経ち、より自然言語に近いプログラムで直感的に書くことができるPython3.xシリーズがそのエコシステムとともに世の中に普及し、プログラミング入門と名乗る教材も多数出版されUdemyをはじめとした動画講義も豊富に提供されるようになった。今コンピュータサイエンスを学ぶ人たち

元記事を表示

単純な線形回帰モデルの回帰係数を3つの言語で推定した結果

# やったこと
– 線形回帰モデルの原理について、よさそうな記事を資料中で紹介した。
– 線形回帰モデルによる回帰係数を、`python`、`R`、`Julia`の3言語で推定した。
– データセットはおなじみいつもの安心と信頼と実績の`iris`を使った。
– 推定方法は各言語でよく用いられているライブラリやパッケージによるもののほかに、行列計算用ライブラリを用いた数値計算によるスクラッチ版がある。
– 記述には`.Rmd`を用い、ソースを`github`にあげるほか`RPubs`で公開した。

# 参考文献

1.は`Julia`の行列計算についてわかりやすい記載をされていました。2.は、線形回帰モデルについてよい記載をしているサイトのひとつです。参考になる記事をありがとうございました。

1. https://zenn.dev/hyrodium/articles/3fa3882e4bca04#2%E3%81%A4%E3%81%AE%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E7%A9%8D
2. https://qiita.co

元記事を表示

Pytorch-ONNXを量子化して高速化する

変換前に量子化することで高速化できます。

# AnimeGANを量子化

“`Python
import torch
model = torch.hub.load(“bryandlee/animegan2-pytorch:main”, “generator”, pretrained=”celeba_distill”).eval()
model_int8 = torch.quantization.convert(model)

dummy_input = torch.randn(1, 3, 512, 512)
input_names = [ “input” ]
output_names = [ “var_444” ]

torch.onnx.export(model_int8z, dummy_input, “animegan2_celeba_distill.onnx”, verbose=True, input_names=input_names, output_names=output_names, opset_version=11)
“`

ColabのGPUランタイムで試すと、

元記事を表示

RLlibで強化学習したモデルをC#で使う

# 目的
[Ray RLlib](https://github.com/ray-project/ray)で強化学習したモデルをC#で動かせるようにします。

# 背景
AI・機械学習は python でやるのがライブラリ等、環境が整備されていて一番楽だと思います。
一方でゲーム開発はUnityをよく使うと思いますが、こちらはC#でスクリプトを書きます。

自作ゲームにつよつよAIを導入したくないですか?したいですよね。
僕がまさにその状況にあるので、pythonで学習したモデルをC#に移植する方法を調べてみました。

**注意**
ここでは僕の用途の関係上、RLlibという強化学習ライブラリで学習させたAIを、C#で使う方法について書きます。
学習済みモデルをC#で使うだけなら[Microsoftのこの記事](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-use-automl-onnx-model-dotnet)を読んだ方が早いです。
本記事もこのMicrosoftの記事をめちゃくちゃ参考にして書いています

元記事を表示

【トリビアのDelta Lake】#3 Pysparkで全行とも同じ値が入った列を新設したい

# Pysparkで、同じ値だけを各行に入れた列を新設したい
今回は少しマイナーなTipsかもしれませんが、意外と「あれどうやるんだっけ?」となることが多いので書いてみます。

今回も例によってサンプルデータを用意します。
“`
sample_data = [{‘name’: ‘Alice’,”age”: ‘2’,},
{‘name’: ‘Bob’,”age”: ’50’},
{‘name’: ‘Matilda’,”age”: ’12’}]

df = spark.createDataFrame(sample_data)
df.show()

【結果】
+—+——-+
|age| name|
+—+——-+
| 2| Alice|
| 50| Bob|
| 12|Matilda|
+—+——-+
“`
ここに、birthplace(出身地)という列を新設しようと思います。
値となる地名は何でもいいですが、せっかく名前にマチルダを追加したのでここでは映画『レオン』に則って「

元記事を表示

Pythonを使ってPDFの改行無しの翻訳をDeepLで実行する バージョン2

# 目的
ショットカットキーとSeleniumを使いdeeplでの翻訳を改行無しで実行します。
# github
https://github.com/komo135/deepl-pdf-trans

# インストール
まずwebdriverを[driver install](https://www.selenium.dev/ja/documentation/webdriver/getting_started/install_drivers/)からインストールし、作業ディレクトリと同じ場所においてください。

次にpythonの必要なパッケージをインストールします。
“`python
pip install selenium pyperclip keyboard pyautogui
“`

# コード
“`python
from selenium import webdriver
from selenium.webdriver.common.by import By
import pyperclip
import re
import keyboard
import pyautog

元記事を表示

オンライン畳み込み

# この記事の目的

オンライン畳み込み(Relaxed Convolution [^ref1] または Relaxed Multiplication [^ref2] などとも呼ばれるようです)を $O(N(\log N)^2)$ で処理する方法について書きます [^bunkatsu] 。

[^bunkatsu]: 分割統治 FFT とも呼ばれるようですが、本稿では分割統治の考え方は使っていません。結果的には似たような処理をやっていることになりますが。

[^ref2]: New algorithms for relaxed multiplication

畳み込みがオンラインとは、 $A$ および $B$ の各項が前から順に与えられたとき、その都度、畳み込み $C=A*B$ の各項を順に返すことを言います [^online]。詳細は後述します。
[^online]: 参考文献では Relaxed という用語が使われていますが、「オンライン」の方

元記事を表示

カイ二乗分布と適合度検定

# はじめに
下記について解説し、例題を用いてPythonで実装する。
・カイ二乗分布
・適合度検定

# カイ二乗分布について
確率変数 $Z_{1}$, $Z_{2}$,..,$Z_{n}$が互いに独立で、標準正規分布に従うとき
次の式から導かれる統計量$χ^2$ が従う確率分布のこと(確率密度関数は割愛します)

$χ^2 = Z_{1}^2 + Z_{2}^2 + Z_3^2 $+ .. + $Z_{k}^2$ (自由度k)

# 適合度の検定
理論上の確率分布(度数に関する分布)に対して、標本から求めた度数(観測度数)が適合しているかを検定すること。
例えば、理論上の確率分布がばらつきに偏りのないもの(一様分布)だった場合、観測度数も偏りがないはずであるということ。
観測度数が確率分布に適合している仮説の下で、近似的に下記が成立することを元に検定を行う。

$\sum_{i=1}^k(x_{i} – np_{i})^2 / np_{i} $ ~$χ^2$ (自由度k-1)

※ x:観測度数、np:期待度数

例)
1~5の数字が書かれたくじを20回選んでもらった。特定

元記事を表示

【sklearn】LabelEncorderサンプルコード

備忘録。

“`python
# インポート
from sklearn.preprocessing import LabelEncoder

# サンプルデータフレーム作成
df = pd.DataFrame([
[23, ‘東京’],
[25, ‘沖縄’],
[44, ‘北海道’],
[56, ‘東京’]
],
columns=[“年齢”, “出身地”])

# ダミー変数に変換
le = LabelEncoder()
df[“出身地”] = le.fit_transform(df[“出身地”])

# 確認
display(df)
print(le.classes_)
print(le.transform(le.classes_))

>>>
年齢 出身地
0 23 1
1 25 2
2 44 0
3 56 1
>>>[‘北海道’ ‘東京’ ‘沖縄’]
>>>[0 1 2]
“`

元記事を表示

Pythonのスコープを理解するパターン4選

Pythonのスコープについて理解をする4つのコードをまとめてみた。

## パターン①:基本
“`python
def func():
orange = 300

orange = 100
func()

print(orange)
>>100
“`
print()で出力されるorangeはグローバル変数のorangeであるため、関数内のorangeに代入した300は反映されない。

## パターン②:グローバル変数を読み取る
“`python
def func():
print(orange)

orange = 42
func()
>>100
“`
ローカルスコープ内にorangeへの代入がない。この場合はグローバル変数から読み取ることができる。

## パターン③:グローバル宣言
“`python
def func():
global orange
orange = ‘local’

orange = ‘global’
func()
print(orange)
>>local
“`
ローカルスコープ内でグローバル宣言をすることで、グローバル

元記事を表示

netcdfデータをxarray.Datasetとして読み,変数名のみリストで取り出す

“`python3
import xarray as xr
ds = xr.open_dataset(‘hoge.nc’)
[k for k, v in ds.items()]
“`
dsは辞書なので(!?),itemsメソッドによりkeys(k, 変数名)とvalues(v, データ)のタプルを返す.
そのkeysのみを受け取ってリストを作るリスト内包表記を利用.

元記事を表示

BlenderでVOICEVOXの音声をPythonで追加

## 概要

CSVで用意したテキストをVOICEVOXで音声ファイルを作り、Blenderで取り込みます。
これをPythonで行う方法を紹介します。

## 準備(VOICEVOXのインストールと実行)

VOICEVOXは、無料で使える中品質なテキスト読み上げソフトウェアです。
使用においては、[VOICEVOXの利用規約](https://voicevox.hiroshiba.jp/term)をご確認ください。

下記のサイトから、インストーラーをダウンロードしてインストールしてください。

– https://voicevox.hiroshiba.jp/

インストールしたら、起動してください。
起動したら、GUIでも使えますが、Webサーバーとしても起動します。
Blenderからは`curl`を使ってWebサーバーの方にアクセスします。
もし、`curl`が入ってなければ、インストールしておいてください。

## 手順

Blenderを起動し、下図のように2つのテキストエディターとビデオシーケンサーを開いてください。

Google ColabとVSCodeでSignateの環境構築

## 0.概要

– Signateコンペに参加するにあたって、GPU使って機械学習できる環境をできるだけ楽に構築したかった
– 参考にさせていただいたサイトをまとめておく

## 1.ColabでSignate APIを使う

– [Google ColabでSIGNATE APIを使う](https://qiita.com/insilicomab/items/d757339d97b44feaff01)
– [SIGNATEの画像分類の練習問題をColabで行う](https://qiita.com/chihiro1209/items/84bb0c158463745a314b)
– [SIGNATE CLI](https://pypi.org/project/signate/)

#### 手順

1. [SIGNATE](https://signate.jp/)のアカウント設定画面で “API Token” の “作成” をクリック
1. “新規作成” をクリックしてAPI Token(signate.json)を取得
1. ダウンロードしたsignate.jsonをGoogle

元記事を表示

【Python/codecademy】初心者がcodecademyを本気で受講してpythonをマスターした話

# はじめに
codecademyという有料オンライン学習プラットフォームにて、Pythonのコースを受講しました。当時プログラミングの「プ」の字も分からなかった私は、寝る間も惜しんでPCに齧り付いてコースを受講していました。
ちなみに、修了していません笑。ここら辺までやるとコースではなく「自分で何か作ってみたい」というレベルに達し、自分で好きな物を作っていた記憶があります。今回は、その時の経験についてまとめようと思います。

![Screen Shot 2022-04-01 at 20.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1044781/4f3883d9-b5a5-5a46-6c17-f69b59a765ab.png)

ちなみに、修了するとこのような修了証書がもらえるみたいです。(あと7%なぜ頑張れなかったんだ、、、)
[【備忘録】python + django セットアップ

# 経緯
需要はないですが、少しハマったので自信の備忘録として残しておきます。

## python インストール
ディストリビューションのanacondaがオススメです。
https://www.anaconda.com/products/distribution

## 仮想環境構築
他の開発環境に影響を出さないように仮想環境を構築する。
コマンドプロンプトを開きます。
C:\下に仮想環境フォルダを作ります。
~~~cmd
cd C:\
mkdir django_venv
~~~
ここでは「C:\django_venv」を作りました。
仮想環境を作ります。
~~~python
python -m venv django_venv
~~~
仮想環境を起動します。
~~~cmd
cd C:\django_venv\django_venv\Scripts
activate
(django_venv) C:\django_venv\django_venv\Scripts>
~~~

## djangoインストール
何もインストールされていないことを確認します。
~~~cmd
(django

元記事を表示

Pythonで環境構築

## やること

まっさらな状態からcurlを叩いて「Hello World!」を表示する

## 仮想環境

・・・一時的に作成する実行環境

– プロジェクト直下に仮想環境をvenvとして作成しておく
`python3 -m venv venv`

– 仮想環境に移動
`source venv/bin/activate`
または
`. venv/bin/activate`

– Flaskのインストール
`pip install flask`

– Flaskが入っているか確認
`pip freeze`

– 仮想環境の終了
`deactivate`

## ファイル 
app.py

from flask import Flask

app = Flask(__name__)

@app.route(“/”)
def test():
return “Hello World!”

1. ターミナルで`flask run`を実行すると、`Running on http://….`と表示される
1. 別のターミナルで`curl ht

元記事を表示

OTHERカテゴリの最新記事