- 1. 楕円の周長の求め方
- 2. シミュレーションの練習
- 3. 【備忘録】PythonでMySQLのデータベースにデータを作成する方法
- 4. 辞書
- 5. Stable DiffusionのWeb APIを用いて写真的素材をイラストに変換してみた
- 6. 文字列の重複を取り除く
- 7. GENERAL PATTERN EDITOR patterneditor.py
- 8. 昔懐かしのPCゲームを今のパソコンに移植しようシリーズGames in the atticその5豚殺しゲーム PIG SLAUGHTER (pigslaughter.py)
- 9. GAMES in the attic 昔懐かしのPCゲームを今のパソコンに移植しよう SUPERTEXT python用console module Ver. 1.0
- 10. 辞書データの順序
- 11. 辞書式ソート
- 12. 夜の渡り鳥が出す鳴き声を検出するnighthawkをdockerで動かしてみた
- 13. 二重ループ:活用編 三角形の探索
- 14. Pythonを使って二人用しりとりゲームを作る
- 15. 動的型付け言語の限界と静的型付け言語の真価
- 16. APIキー不要のPythonのTwitter APIラッパー”twikit”の紹介
- 17. POSCARが存在するディレクトリorファイルパス一覧の取得
- 18. I tried creating a Web API with Python [Introduction to Fast API]
- 19. お金の支払い
- 20. リアルタイムで音響イベントをラズベリーパイ(Raspberry Pi4 B)で検出
楕円の周長の求め方
## 楕円の周の長さの求め方
## 1. 理論などどうでもよいという場合
タイトルは不穏当だが,要するに,パッケージなりを使用して,簡単に答えを得たいという場合である。
ChatGPT3.5 に聞いてみると,「Julia には Elliptic に ellipke,Python には scipy.special に elliptic_perimeter_with_ellipkがあるよ」とご丁寧にもプログラムを添えて教えてくれた。
ただ,あとになってわかったが,あいも変わらず ChatGPT3.5 は不十分な答えを返してくれたのであった。
計算結果を見てのけぞった。別の計算手段から得られた数値よりずっと大きい値が返ってくる。私の聞き方も悪かったのだが,最初は「第二種楕円積分を使って…」で,次に「第二種完全楕円積分を使って…」と聞くと,同じ関数を引数として離心率と離心率の二乗を使ったプログラム例を提示してきた。そして,どちらも結果が異なる。
更にあとになってわかったが,ChatGPT3.5 が答えたのは第一種楕円積分と第一種完全楕円積分の方だった。
Julia で
シミュレーションの練習
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_simulation_step2
“`py
n = int(input())
a,b = map(int,input().split())
paiza_score = 1
kirijima_score = 1
cnt = 0while n > kirijima_score:
#paiza_turn
kirijima_score = paiza_score * a
#kirijima_turn
paiza_score += kirijima_score % b
#turn_end
cnt += 1print(cnt)
“`
これでいいかな?と思ったんですがだめでした。
じっくり問題読むと、つまりキリジマのスコアがnを超えたときってことなので
それはつまり、キリジマのスコアが動いた時に判定しなきゃ意味がないんですね。
だからwhileの条件判定じゃだめってこと。
だから“`py
n = i
【備忘録】PythonでMySQLのデータベースにデータを作成する方法
### 備考
Python:3.9
MySQL:8.0.31
動作環境:MacOS
開発環境:PyCharm### 事前準備
データベース作成済みhttps://qiita.com/ume1017da/items/feaad4d0dc35f15ca4ba
マイグレーション実行済み
https://qiita.com/ume1017da/items/ec76466f36fc707e5a56
### 1. PyCharmにて新規プロジェクトを作成する
### 2. プロジェクトを以下の構成になるようにファイルを作成する
“`フォルダ構成.
.
├── main.py
├── env.py
├── .env
├── requirements.txt
├── crud
│ ├── certification_crud.py
│ └── user_crud.py
├── database
│ ├── database.py
│ └── models.py
└── schema
└── user_schema.py
“`### 3. requirements
辞書
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_dictionary_boss
前回のケースからたぶん辞書と辞書を組み合わせればいいんだとは思ったけど
なかなか理解に骨が折れたのでコメントもつけつつ“`py
p,q,r = map(int, input().split())
#A->B, B->Cの辞書を作成する
A_B = {}
for _ in range(p):
i, j = map(int,input().split())
A_B[i] = jB_C = {}
for _ in range(q):
j, k = map(int,input().split())
B_C[j] = k#上の2つを利用してA_Cの辞書を作成
#この場合iは1〜pまででOK
#A_B[i]の値がそのままB_C[j]の値になり、それがそのままA_C[i]に代入
#上のロジックをどう数式にすればいいかわからんかった
A_C = {}
for i in range(1, p +
Stable DiffusionのWeb APIを用いて写真的素材をイラストに変換してみた
[Supership](https://supership.jp/)の名畑です。TVアニメ[マッシュル-MASHLE-](https://mashle.pw/)の2期の[OP](https://www.youtube.com/watch?v=210R0ozmLwg)が海外でバズっているという噂は聞いていたけれど、公開一月足らずでYouTubeの動画が2000万再生を超えていてびっくりしました。
## はじめに
画像生成モデルである[Stable Diffusion](https://ja.stability.ai/stable-diffusion)ではテキストからの画像生成(**text-to-image**)だけではなく、画像を元にした画像生成(**image-to-image**)もございます。
今回の記事では**Python**で[stability.aiのAPI](https://api.stability.ai/docs)を呼び出すことで「**写真を元にしたイラスト生成**」を行なっています。
目新しい試みではないというか、私の過去記事「[Stable Diffusi
文字列の重複を取り除く
文字列の重複を取り除くプログラムを***Python3***で実装しました。
“`python
input_line = input()
array1 = []
for i in input_line:
# 文字列iが配列に含まれているか確認する
if i not in array1:
array1.append(i)
print(i,end=””)
“`
GENERAL PATTERN EDITOR patterneditor.py
自由サイズの汎用2値画面パターンエディタです。
patterneditor.pyは実行ファイルです。
0 0 1 1 1 0 0 0
0 1 1 0 1 1 0 0
1 1 0 0 0 1 1 0
1 1 0 0 0 1 1 0
1 1 1 1 1 1 1 0
1 1 0 0 0 1 1 0
1 1 0 0 0 1 1 0
0 0 0 0 0 0 0 0のような0 と 1からなるテキストファイルを生成します。
import numpy as np
F = np.loadtxt(a)
として、numpyでファイルを読み込み、2次元のリストにすることができます。‘l’で 画面の幅、高さをファイルの要素数に合わせ、ファイルからパターンをロード
します。
‘s’で 現在の画面をファイルにセーブします。
‘z’で 現在の画面の幅と高さの要素数を設定します。
‘c’で 現在の画面をクリアします。
‘q’で 終了です。
画面のセルをマウスでクリックしたら、On/Offします。最初の画面の要素数は8×8です。“`patterneditor.py
#
昔懐かしのPCゲームを今のパソコンに移植しようシリーズGames in the atticその5豚殺しゲーム PIG SLAUGHTER (pigslaughter.py)
pigslaughter.pyは実行ファイルです。
supertext.pyというモジュールを使っています。https://qiita.com/fygar256/items/11b92b7285359f600b36
上から侵略してくる豚の鼻を砲弾で撃破し、画面最下段のラインにまで来ないようにするゲームです。65体の豚の鼻を倒したらミッションクリア、豚の鼻が画面最下段にまで到着したらゲームオーバーです。
オリジナルは、42年前のCommodoleのCBM3032にあったゲームで、正式名称は忘れたましたが、何体敵を倒したら終わりということはなかったと思います。オリジナルは豚とは関係ありません。同人誌CURSORのゲームだったと思います。記憶があやふやなもので、思い出せません。
キー操作は、’space’で砲撃、’4’でキャノンが左へ移動、’6’でキャノンが右に移動します。’q’でゲームを抜けます。
すごく単純なゲームです。豚の鼻の撃破数が出ますので、スコアを競ってください。
“`pigslaughter.py
#!/usr/bin/python3
import sup
GAMES in the attic 昔懐かしのPCゲームを今のパソコンに移植しよう SUPERTEXT python用console module Ver. 1.0
supertext.pyは、昔の40×25ディスプレイのパソコンのキャラクタゲームを移植する
ためのコンソール用pythonモジュールです。スクリーンに8*8ドットのオリジナルキャラクタを表示できます。cursesでは、当時のグラフィックキャラクタを再現できないため、キャラクタエディタと共に作りました。
supertextは、カレントディレクトリからchars.txtというキャラクタパターンデータを読み込みます。chars.txtのある場所は、プログラム内の、path_to_charsという変数を変えることによって変更することができます。最初は、/home/gar/lib/chars.txtになっていますが、使用者個人の環境に合せ、任意のパスに変更してください。
$ ./supertext.pyで、画面上に使えるキャラクタコードテーブルを表示します。キャラクタは0x00~0xffまでの256種類あり、charactereditor.pyで編集できます。
charactereditor.pyはカレントディレクトリのchars.txtを扱います。メソッド:
setscreen(ti
辞書データの順序
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_dictionary_step3
最初、辞書から辞書のデータを表示できるかと思ってたら
なかなかできなかったのでメモ。
下記のようにしたらできるように。
1つの辞書だけで動かそうと思うんではなく、
別のリストから操作できるようにすることもできるということを学びました。“`py
n = int(input())
Data = {}
for _ in range(n):
[a,b] = input(),0
Data[a] = bm = int (input())
for _ in range(m):
[a,b] = input().split()
Data[a] += int(b)#ここからnameだけのリストを別に作る
names = list(Data.keys())
names.sort()#そのリストに合わせて値を表示させる
for name in names:
print(Data[name])
辞書式ソート
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_sort_step3
うんつまりどういう意味じゃ?
と思ったのですが、
結局のところ降順に並べ替えるとこの問題の条件通りのソートになるということです。
ソートの仕様がそうなっている、という話ですね。
念のためソートの仕様を確認しておきます。仕様がわからんかったら、やっぱり知ってる関数を試してちゃんと条件通りになっているか
確認してみるのがよいですね。“`py
n = int(input())
ab = [None] * n
for i in range(n):
[a, b] = map(int,input().split())
ab[i] = [a, b]
ab.sort(reverse=True)
for i in range(n):
print(*ab[i])
“`
夜の渡り鳥が出す鳴き声を検出するnighthawkをdockerで動かしてみた
# 目的
夜渡る小鳥は鳴き声を出しながら飛んでいきます。春とか秋とか平野部でもよく聞こえます。この鳴き声をフライトコールと言いますが、夜間のフライトコール(NFC:Noctural Flight Call)を録音して渡りの生態を調べることが北米で行われています。そのための自動検知プログラムがpythonで開発されており、それをdockerで動かしてみようというものです。pythonの環境構築はバージョン管理やコンフリクトとかライブラリがないとか苦手なので、dockerを使うというのが新しいと思います。## 難易度
– 初心者向け## anaconda3をインストール
– docker desktopをインストールする
– こちらをご覧ください。 https://docs.docker.jp/desktop/install.html– docker-anacondaのイメージをとってくる
– continuumio/anaconda3:latest“`
$ docker pull continuumio/anaconda3
“`– anacon
二重ループ:活用編 三角形の探索
https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__triangle
今までの例からしてこれでいけると思ったんですけどね。。。
だめでしたね。おそらくループが多すぎるのだと思います。“`py
N = int(input())
Ans = “NO”
for a in range(1,N):
for b in range(1,N-a + 1):
for c in range(1,N-a-b + 1):
if a ** 2 == b ** 2 + c ** 2:
Ans = “YES”print(Ans)
“`
でもよく考えたら、ですね。
2辺が決まったら、あともう1つって自動で決まるんですよね。
だからforを一つ減らせます。
ただ、aが0にならないようにしないとですが、
結局Falseになるので関係ないか。“`py
N = int(input())
flag =
Pythonを使って二人用しりとりゲームを作る
## 初めに
今回は、判定に二分探索を使ってしりとりゲームを作りました。## コード
“`py
import rewordList = []
#しりとりの初めの文字を初期値で入れる
LastTimeWord = “り”
#ひらがな判定用
p = re.compile(‘^[ぁ-ゖ]+$’)#しりとりとして成り立っているか判定
def siritoriCheck(inputWord):
global LastTimeWord
if inputWord[0] == LastTimeWord[-1]:
#成り立っていたら言葉を格納
LastTimeWord = inputWord
return False
return True#言葉が重複していないかをチェック
def wordCheck(inputWord):
global wordList#最後の文字が「ん」だったらTrue
if inputWord[-1] == “ん”:
return True
動的型付け言語の限界と静的型付け言語の真価
# はじめに
動的型付け言語はその柔軟性で知られていますが、この柔軟性が時には代償を伴います。一方で、静的型付け言語はその厳格さにより多くのメリットを提供します。FastAPI と Pydantic を使用することで、Python のような動的型付け言語でも型の安全性を部分的に享受できるようになりました。しかし、この体験はまた、静的型付け言語におけるエディタの補助や型システムの堅牢さがいかに価値あるものかを痛感させられました。型ヒントとデータバリデーションを通じて得られた疑似的な型安全性は、静的型付け言語の持つ本質的な型安全性とエディタのサポートには及びません。この経験から、静的型付け言語の厳格さがもたらすクリアな利点に気づき、その優秀さを再認識するに至りました。
# 動的型付け言語における疑似型の問題点
FastAPI と Pydantic の使用は Python のような動的型付け言語でも型の安全性を向上させることができますが、この疑似的な型安全性には限界があります。特に、実行時まで型の不一致が検出されないことが多く、これは開発者にとって予期しないバグやエラーの原因となります
APIキー不要のPythonのTwitter APIラッパー”twikit”の紹介
# この記事の概要
APIキーなしで利用できるPythonのTwitterAPIラッパーを作ったので紹介します。この記事を読んで使っていただけたら幸いです。
詳しい使用方法などは以下のリポジトリやドキュメントでご確認ください。https://github.com/d60/twikit
ドキュメント: https://twikit.readthedocs.io/en/latest/twikit.html
追記: 非同期に対応しました
# インストール
pipを使用してインストールしてください
“`bash
pip install twikit
“`# はじめに
まずは、TwitterのAPIにアクセスするためのクライアントを定義し、アカウントにログインします。以下は、コードの例です。
“`python
from twikit import Client# 第一引数に言語を指定
client = Client(‘ja’)# アカウントにログイン
client.login(
auth_info_1=’email@example.com’,
a
POSCARが存在するディレクトリorファイルパス一覧の取得
## プログラム使用法の確認
“`terminal
python3 get_poscar_existed_path_list_argparse.py -h
“`
usage: get_poscar_existed_path_list_argparse.py
example: python3 get_poscar_existed_path_list_argparse.py /mnt/ssd_elecom_c2c_960gb/cif/This script takes five arguments: arg1.
positional arguments:
arg1 directory path that name is cif/: /mnt/ssd_elecom_c2c_960gb/cif/options:
-h, –help show this help message and exit## 実行ログ
“`terminal
time python3 get_poscar_existed_path_list_argparse
I tried creating a Web API with Python [Introduction to Fast API]
## Web APIとは?
– ネットワークを経由してデータをやり取りする方法の1つ
## Web API サーバーとは?
– Web ブラウザ以外のアプリケーションから、HTTP 経由でデータや機能を提供するためのサーバーのこと
– データベースやその他のシステムと連携して、データを取得したり、処理したり、新しいデータを作成したりすることができる“`
pip install fastapi
pip install “uvicorn[standard]”
“`
“`main.py
from fastapi import FastAPIapp = FastAPI()
@app.get(“/”) # HTTPリクエストメソッド GETに対する関数
def read_root():
return {“message”: “APIです”}# パラメータを作成する
@app.get(“/items/{item_id}”)
def read_item(item_id):
return{“item_id”:item_id, “item_name”:”Tシャツ
お金の支払い
https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__payment
最初全く考えつきませんでした。
たぶん、(1,X,Y)=Zの組み合わせを全部考えて
それらの中でそれぞれの数が最小になるのを選べばよいわけです。
だけど、これらをどうやって多重ループにすればいいのか?が考えつきませんでした。ただし、
・ 2 ≦ X , Y ≦ 1000
・ X != Y
・ 1 ≦ Z ≦ 3000
うーんと。
まず1円というのがあるので、
ひとまず、テストケースを元に考えます。
500 1000 300なので、
X = 500
Y = 1000
Z = 300。
ZがXやYよりも少なければ、問答無用で1円をZ枚分使うのが最小になりますね。だから300が答えになります。テストケース2だと
50 100 855
X = 50
Y = 100
Z = 855
XよりYが大きければそっちを限界まで使いますね。
この場合、Z//Y = 8をcntにいれて、余りをsumに入れればいいわけなので sum = Z
リアルタイムで音響イベントをラズベリーパイ(Raspberry Pi4 B)で検出
# 使用したデバイス
1\.Raspberry Pi 4B(64-bit)
2\.USB接続マイク(logicool C270n HD WEBCAM)# 前準備
マイクのデバイスが認識しているか
参考サイト https://hellobreak.net/raspberry-pi-usb-microphone/# 手順
ターミナルで以下のコードからgit cloneし、ファイルに移動。そしてrequirements.txtに書かれているライブラリをインストール
使用させて頂いたgit hub
https://github.com/robertanto/Real-Time-Sound-Event-Detection
“`
git clone https://github.com/robertanto/Real-Time-Sound-Event-Detection.git
cd Real-Time-Sound-Event-Detection
pip3 install -r requirements.txt
“`
インストールが完了したらThonnyかターミナルで実行
ターミナルの