Python関連のことを調べてみた

Python関連のことを調べてみた

日本語でPythonコード書いてみた!魔法対戦ゲームを作ろう🪄

# 日本語でPythonコード書いてみた!魔法対戦ゲームを作ろう🪄

こんにちは、あい@AI魔法使い🪄です!今日は、日本語でPythonコードを書いてみようと思います。最終的には、日本語だけのコードで複雑な魔法対戦ゲームのプログラムを作成するのが目標です。さあ、魔法の世界へようこそ!

## 魔法対戦ゲームのルール

魔法対戦ゲームは、プレイヤーが入力でどの魔法を使うか選び、CPUと対戦するゲームです。ランダム要素も追加しましょう。

– プレイヤーは魔法を選ぶと、CPUもランダムに魔法を選ぶ
– 魔法には強さがあり、強い魔法が勝つ
– 同じ魔法が選ばれた場合は、ランダムに勝者が決まる

## 日本語の関数とインスタンスを作ろう

まずは、日本語の関数とインスタンスを作っていきましょう。

“`python
魔法使い = type(‘魔法使い’, (), {‘名前’: ‘名無しの魔法使い’, ‘体力’: 100})

def 魔法使いを作成(名前, 体力):
魔法使いのインスタンス = 魔法使い()
魔法使いのインスタンス.名前 = 名前
魔法使いのインスタン

元記事を表示

【環境構築】Pythonの実行環境構築のベストプラクティス

– `python`の実行環境には`docker`を使用していたが、電力消費が多いのと接続クラッシュがしやすく悩んでいた。
– 仮想環境の構築が苦手だったが、一番良さそうな方法をLLMが教えてくれたのでメモ。

はい、以下の手順でHomebrewを使ってpyenvをインストールし、pyenvで仮想環境を作成して、VSCodeで使用できるようにする方法をまとめました。

1. Homebrewでpyenvをインストールする
– ターミナルで以下のコマンドを実行 [1][2][4][10][13]
“`
brew install pyenv
“`
– シェルの設定ファイル(~/.bash_profileまたは~/.zshrc)に以下を追記 [1][3][4][13]
“`
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”
“`
– 設定ファイルを再読み

元記事を表示

青魔法を詠唱して青魔法を詠唱してみた!

## 音声認識キャンペーンに参加!
音声認識エンジンを使って何かやってみませんか?みたいなキャンペーンをQiitaで開催されていて、AmiVoice APIという音声認識APIサービスの無料利用クーポンも振る舞われるとか。
面白そうなキャンペーンだけど、音声認識できたとして、さて何に使えば面白いかなー?

https://qiita.com/official-events/23333339b694ca71810a

## 大好きなFF14の青魔法を詠唱してみよう!
身振り手振りで遊ぶゲームがあるんだから、声を出してもいいだろう。
大好きなFF14の青魔道士で、ボタンぽちーではなく、かっこ良く青魔法を詠唱し、その魔法でモンスターをやっつけたらカッコいいのではないか!

流れはこんな感じか?
青魔法をマイクでしゃべる > AmiVoice APIに送信 > 認識した文字を貼り付け

うむ、ゲームプレイ的には全く効率的とは思えないが、魔法詠唱できるのだから小さいことには目をつむろう

## 早速作ってみる!
言語:Python3.11
音声認識:AmiVoice API
音声入力:pyaud

元記事を表示

ABC353 (A~E) をPythonで解く

## A問題:Buildings

https://atcoder.jp/contests/abc353/tasks/abc353_a

一番左のビルより高いビルが存在するかを順番に確認し、見つけたら終了。インデックスが1始まりなことに注意する。

コード

“`python
N = int(input())
H = list(map(int, input().split()))

leftmost = H[0]
ans = -1

for i in range(1, N):
if H[i] > leftmost:
ans = i+1
break

print(ans)
“`

## B問題:AtCoder Amusement Park

https://atcoder.jp/contests/abc353/tasks/abc353_b

列に並んでいる人を順番に確認する。ここで、アトラクションの残りの席数を`available_seats`として考える。

もし

元記事を表示

ABC353回答メモ

# 0.はじめに
 珍しく一日外出しており、疲労困憊で参加。
そのせいか、相性が悪かったのか、C以降が解けず
ひさびさの2問のみの正解。
 とはいえ、みんな芳しくなかったのか、レートは-12で済みました。

# 1.A – Buildings
 問題文はややこしめでしたが、実装すると楽な感じでした。
一つ目のビルより高いビルがあるかを
2つ目以降順にみていきあったらその位置を出力して終了
なかったら-1を出力して終了。
で、AC頂きました。

 https://atcoder.jp/contests/abc353/submissions/53321164

# 2.B – AtCoder Amusement Park
 日常によくありそうなシチュエーションだったため考えやすかったです。
【実装】
 ・スタートカウント変数Sを0で初期化
・現在の座席の空きNKをKで初期化
・以下A[i](リストを先頭から一つずつ読み込む数)を順に処理
 -A[i]がNK以下の場合(まだゴンドラに乗れる)
 -NKからA[i]をマイナス
 -A[i]がN

元記事を表示

Reflex(Webアプリ作成ライブラリ):バックエンドの仕組み(SSLはどうするのか?)

# ReflexのバックエンドはFastAPI + Uvicornで構成

Reflexのバックエンドは、FastAPIを使っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15972/bff33cd9-9317-5831-3606-6ef7c57d2b4c.png)

https://reflex.dev/docs/api-routes/overview/

FastAPI自体は、サーバではないので、Uvicornというサーバアプリを起動させます。
Uvicornの起動時に、FastAPIを利用して書かれたPythonのアプリコードをロードします。
Reflexは、Uvicorn実行コマンドをライブラリ内で定義して間接的に実行させています。

これは、FastAPIの仕組みなので詳しくは、そちらを参照してください。ネットでもたくさん情報がありますし、AIに質問してもよいと思います。

https://fastapi.tiangolo.com/ja/tutorial/fir

元記事を表示

プログラミング環境をWSLでIaCっぽく構築する

## めあて

Pythonを中心としたVSCodeでのプログラミングの環境としてWSLが便利だと思っています。

:::note info
[wsl2+pyenv+poetry+vscodeをセットアップしてjupyter notebookで実行できるようにするまでの手順メモ](https://qiita.com/dng3brs/items/4909f799bda29f2e364a)
:::
– Windowsホストにpythonなどの環境をセットアップすると、Windows版特有のノウハウが必要だったり、 バージョンを柔軟に変更できなかったり、環境をあれこれ変えるとWindowsホストの環境が汚れる感じがして気持ち悪かったりする。
– 逆に、WSLだと(普通に?)Linuxの環境として使用できるし、仮想環境なので、同時に、いくつも環境を作成して使用できる。間違えたり、いらなくなったら、きれいさっぱりと削除できる。
– WSLにdockerをインストールして、Dev Container方式の環境にすることもできるけど、いろいろと実験しながらプログラミングするには、コンテナ化するより、

元記事を表示

ポーカーの役判定(ジョーカー複数枚対応)

# はじめに

ポーカーの役判定(ジョーカー複数枚対応)をPythonで書いてみます。

# カードの表現

トランプのカードは、スートと数字の組み合わせで表現します。
スートはトランプのマークをそのまま使います。
ジョーカーはスートを`’J’`にすることで表現します。
実際の使用例は、末尾に載せたソースコードのユニットテストを参照してください。

“`python
from dataclasses import dataclass

@dataclass
class Card:
suit: str = ‘J’
number: int = 0
“`

# ストレートフラッシュ

ストレートフラッシュについては、ストレートかつフラッシュという判定を行うだけです。ロイヤルストレートフラッシュも、数字が1,13,12,11,10のパターンというだけなので、同様に判定できます。

“`python
def is_royal_straight_flush(cards):
return is_royal_straight(cards) and is_flush(car

元記事を表示

ABC353(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)

# ABC353(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)

# A問題
– 左から1番目のビルを変数`h0`として持っておく.
– 左から2番目以降のビルと`h0`を比較して,大きなビルが見つかれば,その`index`を`print`してプログラムを終了する.
– 左から順番に見て,`index`を出力するため,大きなビルが複数存在したとしても,問題ない.
– もし,大きなビルが一つも存在しなかったら,最後に`-1`を`print`してあげる.
– `index`を`print`するときは,`0-indexed`であることに注意する.
“`A.py
“””
<方針>
– 左から1番目のビルを変数`h0`として持っておく.
– 左から2番目以降のビルと`h0`を比較して,大きなビルが見つかれば,その`index`を`print`してプログラムを終了する.
– 左から順番に見て,`index`を出力するため,大きなビルが複数存在したとしても,問題ない.
– もし,大きなビルが一つも存在しなかったら,最後に`-1

元記事を表示

凸包のPython実装

## 参考文献
しっかり学ぶ数理最適化 モデルからアルゴリズムまで
梅谷俊治・著
発行 2020/10/23

https://www.kspub.co.jp/book/detail/5212707.html

## 参考ページ

https://ja.wikipedia.org/wiki/凸包

https://0214sh7.github.io/library/posts/convexhull

## 準備
オンラインコンパイラを使用します。

https://www.mycompiler.io/ja/new/python

## ソースコード
“`python:sample.py
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

def convex_hull(points):
start = np.argmin(points[:, 1])
current_point = start
hull = []

while True:

元記事を表示

test

“`python:title.py

print(‘hello’)

“`

元記事を表示

NVD公開のREST APIを用いて脆弱性情報を取得する 2024

# 背景
今の世の中、情報セキュリティ対策が重要になっております。そんな状況もあり、NIST管理の脆弱性情報データベースが公開されております。その情報を有効に活用すべく2021年1月9日に @riikunn_ryo (Ryo) さんが「[NVD公開のREST APIを用いて脆弱性情報を取得する](https://qiita.com/riikunn_ryo/items/97e385ed0a78dc28534f)」を投稿してしてくださいました。
すごく良い情報だったのですが、現在 REST API の仕様、レスポンスとなるJSONの仕様などが変更されておりせっかくRyoさんに公開していただいたPyhonスクリプトを使うことができません。
そのため、Ryoさんのスクリプトをオマージュし最新化しました。

# 実行環境
* Ubuntu22.04.4 LTS ( Windows Subsystem for Linux (WSL) )
* Python 3.10.12

# CPEの条件を満たすCVEの情報を取得
本Pythonコードのコンセプトや構成等はRyoさんの[記事](https://q

元記事を表示

Blenderのパーティクルシステム、ダイナミックペイント、ジオメトリノードの連携手法の検討 その1

# はじめに

本記事ではBlenderのパーティクルシステム、ダイナミックペイント、ジオメトリノードを連携する方法について色々検証したので振り返り用にまとめてみました。
同じ様に悩んでいる人の助けになれば幸いです。

# 目次

1. [モチベーション](#モチベーション)
1. [目標](#目標)
1. [解説](#解説)
1. [2種類のダイナミックペイント](#2種類のダイナミックペイント)
1. [重みによるマージ](#重みによるマージ)
1. [まとめと考察](#まとめと考察)
1. [雨のシーンの参考動画](#reference)

# モチベーション

ことの発端はBlenderでアニメの1シーンのようなリッチな雨の風景をつくりたい!という感じです。(新海誠監督の「言の葉の庭」の雨のシーンみたいな・・・)

まず、雨のシーンの構成要素として今回は雨粒、リアルな水面の波紋、雨粒が水面に落ちたことで発生する水飛沫を制作しました。雨粒をパーティクルシステム

元記事を表示

LightGBMをScikit-Learn感覚で使う

今まで基本的にScikit-Learnとかstatsmodelsしか記事にしていませんでしたので今回はLightGBMをやってみます。
で、機械学習系とか数理モデル系のライブラリの面倒な所って多分使い方が統一されていない事だと思うんです。実際statsmodelsはxとyをScikit-Learnとは逆に入れるなど。それでもそれくらいしか違いが無いのであれは使いやすい方ですが他のライブラリが案外そうでもないので今回はLightGBMをScikit-Learn感覚で使って見ようと思います。
具体的には関数の使い方だったりコードの行の量をほぼ変えずにやってみます。
ただし全て初期値でやるためパラメータチューニングは行いません。
# Scikit-Learn
“`Python3
from sklearn.ensemble import GradientBoostingClassifier as GBC
from sklearn.model_selection import cross_val_score as cvs
import pandas as pd

df = pd.read_cs

元記事を表示

アニーリング法のPython実装

## 参考文献
しっかり学ぶ数理最適化 モデルからアルゴリズムまで
梅谷俊治・著
発行 2020/10/23

https://www.kspub.co.jp/book/detail/5212707.html

## 準備
オンラインコンパイラを使用します。

https://www.mycompiler.io/ja/new/python

## ソースコード
“`python:sample.py
# -*- coding: utf-8 -*-
import numpy as np
import math
import random

def objective(x):
return 2 * np.sin(x) + 3 * np.cos(2 * x) + 5 * np.sin(2 / 3 * x)

def acceptance_probability(old_cost, new_cost, temperature):
if new_cost < old_cost: return 1.0 else: return math.ex

元記事を表示

Discord.pyを使ったDiscord botの作成方法

# Discord.pyを使ったDiscord botの作成方法

## はじめに
この記事では、Pythonライブラリであるdiscord.pyを使って簡単なDiscord botを作成する方法を紹介します。

## 必要な環境
– Python 3.6以降
– discord.pyライブラリ

## 手順

### 1. ライブラリのインストール
まずは、discord.pyライブラリをインストールしましょう。ターミナルやコマンドプロンプトで以下のコマンドを実行してください。

“`bash
pip install discord.py
“`

### 2. botアカウントの作成
Discordの開発者センターにアクセスし、アプリケーションを作成します。アプリケーションのページから「Bot」タブを選択し、「Add Bot」ボタンをクリックしてbotアカウントを作成します。

### 3. botトークンの取得
作成したbotアカウントのページで、トークンをコピーします。このトークンは後ほどコード内で使用します。

### 4. コードの記述
以下のコードをPythonスクリプ

元記事を表示

ABC353をPythonで(A~D)

AtCoder Beginner Contest 353

https://atcoder.jp/contests/abc353

# A問題
順番に見ていく
“`python:A
n = int(input())
h = list(map(int, input().split()))

for i, h_i in enumerate(h, 1):
if h[0] < h_i: print(i) exit() print(-1) ``` # B問題 シミュレーション ```python:B n, k = map(int, input().split()) a = list(map(int, input().split())) ans = 0 chair = k for a_i in a: if a_i <= chair: chair -= a_i else: ans += 1 chair = k - a_i print(ans + (chair < k)) ``` # C

元記事を表示

OpenAI Assistants APIの “File Search” を使ってみる ~小林製薬編~ ベクトルストア

# Assistants APIがV2にアップデート

OpenAIのAssistants APIが[V2にアップデートしました](https://platform.openai.com/docs/assistants/whats-new)!
アップデートと言っても既存の機能の修正より、追加の機能が増えたような気がします。

アップデートの内容はやはりnpakaさんの記事が大変わかりやすいと思います。

https://note.com/npaka/n/n4438384c96d0

# File Searchを使ってみる
V2になり“File Search”という機能が増えました。
と言っても元は“Retrieval”という機能が今回リニューアルしたようです。

旧Retrieval、新File Searchはざっくり言うと「ドキュメントを使ってアシスタントに外部からの知識を加えられる機能」という感じです。

AIもの全般に言えることですが、うだうだ書くより試す方がどんな機能かがわかりやすいので使って見たいと思います。

ということ

元記事を表示

LINE Notify×Alexa『飲み会行きたいです🙇』の許可をAIに任せて心理的負担を減らしたい

# 🍻はじめに🍻
毎日の飲み会に参加したい夫は、奥さんにその願いを伝えることに躊躇しています。彼は奥さんに頭が上がりません。奥さんとの関係を大切にし、彼女の気持ちを尊重したいと願っていますが、同時に自分の趣味や友人との交流も大切にしたいと感じています。

そんな方へ、「飲みに行きたいです🙇」をAlexaを通してLINEに通知してもらうんです。

# 🍺完成(LINEのメッセージ画面)🍺
LINE Notify から通知してくれるので、確実にあなたへの心理的負担が減ります。もし怒られたとしても「AlexaがLINE通知したからAlexaが怒られているんだと!」気持ちを切り替えることも可能です。

![スクリーンショット 2024-05-11 19.55.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/2c8d63ea-d2e4-c202-421e-b02acc4f27a6.png)

# 🍾設定🍾
### LINE Notify

※最新の情報を取ってきてください(2024年4月現

元記事を表示

pythonテクニックまとめ(随時更新)

# このページの目的
競技プログラミングの問題をpythonで解きたいが、
pythonはまだ勉強中の為、競プロで使いがちなテクニックをまとめる。

# アルファベットのリスト
“`python
import string
print(string.ascii_lowercase) # アルファベット小文字
print(string.ascii_uppercase) # アルファベット大文字
“`
“`
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
“`

# 桁数埋め
“`python
“1”.zfill(3) # 0埋め
“1”.rjust(3,”9″) # 0以外で埋める場合はこちら
“`
“`python
001
991
“`

# 四捨五入
`round`を使用するとうまくいかない場合がある。
(コンピュータ内では数値を2進数で保持している為。)
其の為、`decimal`モジュールを使用する。
“`python
from decimal import Decimal,ROUND_HA

元記事を表示

OTHERカテゴリの最新記事