- 1. Poetry で pytest
- 2. PythonでSwitchBotのAPIをしばく
- 3. BMP280をI2C接続したmilk-v duo上でPythonを使って温度と気圧を測定する
- 4. AI時代(仮)のVimmer
- 5. PythonでAtCoderを解く時にちょっと得するメモ 2
- 6. 【Python】機械学習を使って自分の顔に似合う髪型を出してくれるアプリ
- 7. Python3のCGIスクリプトでバイナリデータが出力したい
- 8. Pythonの自作APIラッパーでChatGPTをしばく
- 9. 元素種Oを含むPOSCARファイルのパスのみ抽出(ログ)
- 10. 巨大な数の足し算(繰り上がりなし) Python3編
- 11. 炭酸イオンを含むPOSCARを,POSCAR.nnlistを用いて判定し,その精度検証を行う(ログ)
- 12. TIL: pandas のデータ型について
- 13. 【Python】デフォルト引数を使うときは、引数の順序と可変オブジェクトに注意
- 14. 初めてのdocker &Streamlit & FastAPIで詰まった話 (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
- 15. Python導入
- 16. 数式の計算 (paizaランク C 相当)
- 17. 数式の計算( 1 桁) Python3編
- 18. 表記の訂正 (paizaランク C 相当)
- 19. pygameをいじっていて、早めに理解したかったこと
- 20. 【Python/Git】pycacheをgit ignoreする
Poetry で pytest
pytest の使い方がときどきよくわからなくなるので備忘録。
# ディレクトリ構成
– 単体テストは tests/test_hello.py に記述
– hello/hello.py で Hello Class を定義
– hello/main.py で Hello Class インスタンスを作成,say メソッドを実行した際に “Hello, World!“ を print“`
├── hello
│ ├── __init__.py
│ ├── hello.py
│ └── main.py
├── poetry.lock
├── pyproject.toml
└── tests
└── test_hello.py
“`# Poetry のインストール
[Poetry Installation](https://python-poetry.org/docs/#installation)
“`
curl -sSL https://install.python-poetry.org | python3 –
“`# pyproject.
PythonでSwitchBotのAPIをしばく
# PythonでSwitchBotのAPIをしばく
この記事は[**四工大アドベントカレンダー2023**](https://qiita.com/advent-calendar/2023/yonko_univ)に参加しています。
この記事は[**ひとりアドベントカレンダー2023**](https://github.com/Chroma7p/one-man-advent-calendar2023)にも参加しています。2日目です。
## 概要
– Pythonを使用したSwitchBot API v1.1でのデバイス制御
– 各デバイスのクラスを作ってより使いやすくする## 要約
SwitchBot API v1.1を使用して、Pythonでデバイスを制御する方法を紹介します。
また、デバイスごとにクラスを作成して、より使いやすくする方法も紹介します。## Pythonを使用したSwitchBot API v1.1でのデバイス制御
SwitchBotのデバイスをPythonで制御するためには、API認証とデバイス情報の取得を関数化して整理することが効果的です。以下は、
BMP280をI2C接続したmilk-v duo上でPythonを使って温度と気圧を測定する
## はじめに
秋葉原ロボット部の有志で、milk-v duoを購入し、個々人が様々な実験を行って、勉強会内で報告しています。Milk-v duoは9ドルのrisc-vコンピュータとして知られています。
ハードウェアは以下の通りです。1. CPUはCVITEKのCV1800B (C906@1Ghz + C906@700MHz)
2. 最高1 GHzで動作するデュアルRV64コア
3. 64 MBのラム
4. オプションのアドオンボードを接続すると10/100Mbpsの速度でイーサーネットに接続可能現在配布されているディスクイメージV1.5.0には、Python、Pipが含まれていますので、本体の上でプログラミングが可能です。
本稿では、milk-v duoに温度と圧力のセンサであるBMP280を接続して、pythonのプログラムで、温度と圧力の測定を行います。
## 用意するもの
・milk-v duo本体
・3.3Vで動作するBMP280モジュール
・本体とモジュールを接続するジャンプワイヤ## BMP280とmilk-v duoの接続
以下の様に接続します。
B
AI時代(仮)のVimmer
## ヤクの毛刈りの前に
– Python環境を手を抜かずに整備しましょう 😥
– Pythonに依存する我々は、[PEP688](https://peps.python.org/pep-0668/)は避けて通れません(通れるけど)。今回こそ、Pythonの環境問題と対峙しましょう(対峙したのは約2日前) 😥
– 覚悟を決めましょう、我々には心強い仲間が出来ました
– Homebrew等パッケージマネージャーでVimを管理していたあなた(約2日前の私)、makeするのです。ソースコードからビルドするのです。私達には、AIという心強い味方が出来ました。
– 仲間はたくさん作りましょう
– 心強い仲間は、OpenAI社だけではありません。たくさんのAIをおもちゃ仲間にしましょう。ヒンメルならそう言うでしょう## ヤクの毛刈り
### venvでPython環境を整える
少なくない方が、PEP 688に出くわしたでしょう。私も出くわしました(約2日前)
“`
% pip install –user powerline
error:
PythonでAtCoderを解く時にちょっと得するメモ 2
# はじめに
以前、[PythonでAtCoderを解く時にちょっと得するメモ](https://qiita.com/T_death/items/c415728b309173c2521f)というタイトルで、PythonとAtCoderに関する内容を書きました。それの続きになります。
以下に書く内容は、思いついた順番です。## その1(逆順)
“`sample.py
sample_list = [“a”, “b”, “c”, “d”, “e”, “f”, “g”]
sample_txt = “abcdefg”# 逆順にする方法1
sample_list.reverse()
print(sample_list)
>>> [“g”, “f”, “e”, “d”, “c”, “b”, “a”]
print(sample_txt.reverse())
>>> AttributeError: ‘str’ object has no attribute ‘reverse’# 逆順にする方法2
print(sample_list[::-1])
>>> [“g”, “f”, “e
【Python】機械学習を使って自分の顔に似合う髪型を出してくれるアプリ
# はじめに
皆さんこんにちは!僕は大学二年生のメディア関係の学科で学んでいるものです。今回は夏休み期間を使ってaidemy premium に入会して、PythonのAIアプリ開発について学習しました。その最後に、ここで学んだことを応用して、一つアプリを作ることになりました。自分が作ったのは、**撮影した自分の顔に似合う髪型を紹介してくれるアプリ**です! 大学生になると、垢抜けをして髪を染めたり髪型を大きく変えたりする人が増えていきます。僕もそれにあこがれて、雰囲気を少しでも変えてみたいと思うのですが、髪型が多すぎて迷ってしまいます…
そこで、自動で自分に似合う髪型を提案してくれるアプリがあったらいいなと思って、今回の制作に至りました。それでは、制作を始めていきます。
## ※実行環境
Google Colaborator
Visual Studio Code
Anaconda3
Python3# 1.モデル制作
ここでは、アプリ開発におけるモデルを作っていきます。ここでいうモデルでは、男女別に顔写真をブラウザ内で検索して、そ
Python3のCGIスクリプトでバイナリデータが出力したい
Python3でCGIを書いたとき、画像データ(PNG)をレスポンスしたくてハマったので方法をまとめておきます。
## HTTPレスポンス
HTTPではWebサーバーにデータをリクエストし、Webサーバーはリクエストされたデータ(HTMLファイルや画像など)をレスポンスとして返します。
以下はHTMLファイルを返すときのレスポンス例です([HTTPリクエスト、HTTPレスポンスとは](https://qiita.com/minateru/items/8693538bbd0768855266))。
“`php
HTTP/1.1 200 OK
Date: Mon, 23 May 2022 22:38:34 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 08 Jan 2022 23:11:55 GMT
Content-Type: text/html
Content-Length: 438
An Example Page
Hello W
Pythonの自作APIラッパーでChatGPTをしばく
# PythonでChatGPTをしばく
この記事は[**四工大アドベントカレンダー2023**](https://qiita.com/advent-calendar/2023/yonko_univ)に参加しています。
この記事は[**ひとりアドベントカレンダー2023**](https://github.com/Chroma7p/one-man-advent-calendar2023)にも参加しています。## 概要
– OpenAIが提供するPythonのAPIの変化
– ChatGPTのAPIにおける諸機能
– Pythonで作ったChatGPT関連の自作APIラッパーについて(本題)## 要約
結局PythonにしてもAPIめんどくさいのでオレオレラッパー作ったよ!見て!
前振りはほとんどぼやきと前提知識だからお急ぎだったら最後の項目へ……## OpenAIが提供するPythonのAPIの変化
最近(gpt-4-visionが追加されたあたり?)OpenAIが提供しているPythonパッケージに変化があり、だいぶ書き方が変わりました。一応もとのバージョンも使えるよう
元素種Oを含むPOSCARファイルのパスのみ抽出(ログ)
## 目的
多原子イオンを含まない酸化物において,酸素のみではどういう構造になっているのかを確かめる.## 目標
元素種O(酸素)を含むPOSCARファイルのパスのみを抽出する.## 参考
過去ログ[1]を参考に行った.
[1] 元素種C,Oを含むPOSCARファイルのパスのみ抽出(ログ)- Qiita## スクリプトの説明
* get_O_existed_poscar_path_list.py[1]
* 入力:poscar_existed_file_path_list.npy
* 出力:O_existed_poscar_file_path_list.npy,O_existed_poscar_folder_path_list.npy[1] https://github.com/k-morii-toridai/scripts_get_O_existed_poscar_path_list.git
## スクリプト実行の流れ
シェルスクリプトを実行する.:
* get_O_existed_posca
巨大な数の足し算(繰り上がりなし) Python3編
https://paiza.jp/works/mondai/string_primer/advance_step10
巨大な数の足し算。
あれ、、、これじゃだめだっけ?と思ってたけど
OKだった“`py
S = int(input())
T = int(input())
print(S + T)“`
え、これでいいのか?
と思ったが、意図は違ったらしい。>S , T を数値として扱うとオーバーフローが発生します。
> 答えとなる値も数値として扱うことはできない
なるほど。。。だから文字列でしないとだめなのか。
繰り上がりがないとすると、計算はたしかにこうなるよな。。。
でもそれなら、オーバーフローさせて正解にしないほうがいいんじゃないかな?
まあ、勉強ってことで。。“`py
s = input()
t = input()ans = “”
for i in range(len(s)):
ans += str(int(s[i]) + int(t[i]))print(ans)
“`じゃあ繰り上がりがあるときはどうするのかな?
次の問題もやって
炭酸イオンを含むPOSCARを,POSCAR.nnlistを用いて判定し,その精度検証を行う(ログ)
## 目的
## 目標
ある結晶構造が炭酸イオンを含むかどうかを判定する.加えて,その精度を検証する.## 流れ
* ある結晶構造が炭酸イオンを含むかどうかを判定.
1.元素種C, Oを含むPOSCARファイルパスのリストを取得.
2.炭酸イオンの大きさ(半径)を見積もる.その距離(半径)と,1. で得たPOSCARファイルからPOSCAR.nnlistファイルを作成する.
3.2.で得たPOSCAR.nnlistファイルを用いて,POSCARファイルが炭酸イオンを含むかどうかを判定する.
4.3.で炭酸イオンだと判定されたPOSCARファイルパスの一覧を取得する.* その精度を検証する.
5-1.3.の炭酸イオンかどうかの判定の精度を検証するため,2.で指定する距離(炭酸イオンの半径)を変え,4.の炭酸イオンだと判定されるPOSCARファイルの数が変わるかどうかを確認する.
(5-2.4.で取得した炭酸イオンを含むと判定されたPOSCARファイルを可視化して,炭酸イオンを含むかどうかを検証する.)## 詳細ログ
### 1.元素種C, Oを含むPOSCARファ
TIL: pandas のデータ型について
TIL:
・pandas で dtype が object のカラムには str 型と int 型が同居していることがある。
・自動で型推定される時のルールが把握できない。csv 上で同じカラムに同じ文字列「10」が入っている場合でも、 DataFrame に読み込んだら ’10’ (str) になるレコードと 10 (int) になるレコードがある。→ マージのキーにしたいなど型まで一致してないといけない場合は dtype を与えるのが安全。
【Python】デフォルト引数を使うときは、引数の順序と可変オブジェクトに注意
# 概要
Pythonでデフォルト引数を使ってみたので紹介。デフォルト引数では、関数を呼び出す際に引数が提供されなかった場合に、デフォルトで使える値が設定できます。
要は、「オプションのパラメーター」になる、ということです。サンプルコードでみてみるのが早いと思うので実際に以下のように実行しました。
## サンプルコード
“`py
def add_and_display_list_items(items_list, new_item=”apple”):
items_list.append(new_item)
print(“My Fruit List:”, items_list)my_list = []
add_and_display_list_items(my_list)
add_and_display_list_items(my_list, “banana”)
add_and_display_list_items(my_list, “lemon”)# 出力
# My Fruit List: [‘apple’]
# My Fruit List: [‘
初めてのdocker &Streamlit & FastAPIで詰まった話 (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
## 備忘録なので一部省略しています。同じエラーになった方がいれば参考にしてください。
## ぶつかった問題
FastAPI,Streamlit,Dockerを使ってwebアプリを作成していました。出来上がったのでターミナルで
“`bash
docker compose up -d
“`
を実行してwebページのURLを見にいくと以下のエラーが“` pythpn
ConnectionError: HTTPConnectionPool(host=’backend’, port=8080): Max retries exceeded with url: /select_genre (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
“`
今回は初めての連続だったため何が原因か分からず12時間解決
Python導入
**はじめに**
WEBスクレイピングの為Pythonを導入する手順をまとめていきます。
・目次
1.Pythonのインストール
2.pip(非公式パッケージ管理ツール)の更新
3.パッケージインストール
3.1.Seleniumのインストール
3.2.pandasのインストール
3.3.ChromeDriverのインストール4.VSCodeインストール
4.1.VSCodeの拡張機能(Python)
4.2.VSCodeの拡張機能(Python Indent)
4.3.VSCodeの拡張機能(Python Docstring Generator)5.コマンド一覧
etcスクレイピングの注意点
・スクレイピングを行うWebサイトの利用規約、著作権を事前に確認すること
・robots.txtを確認すること
3.パッケージインストール
https://qiita.com/BubbleBubble/items/d792505582b966bf4941
数式の計算 (paizaランク C 相当)
https://paiza.jp/works/mondai/string_primer/advance_step9
複数桁の計算。
`eval()`を使えば一発だけど、
意図的に考えるとそうではないので、
下記のように実装
でもだめだった。
そもそも、+と-を覚える順番が間違っていた。
最初の数値をそのままansにいれればいいのだが、
そうではなく数式も入れてしまってたので数値が代わってしまった。“`py
s = input()
ans = 0
add = True
tmp = “”
for i in range(len(s)):
if s[i] == ‘+’:
add = True
ans += int(tmp)
tmp = “”
elif s[i] == ‘-‘:
add = False
ans -= int(tmp)
tmp = “”
else:
#+でもーでもなければ数値として登録
tmp += s[i]
if
数式の計算( 1 桁) Python3編
https://paiza.jp/works/mondai/string_primer/advance_step8
文字列で書かれている数式を確定させて出力させる問題
前回学んだことを活かして下記のように
はじめ、+かーかそうでなければ数値として、答え変数に代入し、
その後、+かーかでフラグを立てて
その次の数値をフラグ通りに計算するという方法。“`py
s = input()
ans = 0
flag = 0
for i in s:
if i == ‘+’:
flag = 1
elif i == ‘-‘:
flag = 2
else:
if flag == 0:
ans = int(i)
elif flag == 1:
ans += int(i)
elif flag == 2:
ans -= int(i)
print(ans)“`
答えを見てみるともっと簡単になってた。
奇数が数
表記の訂正 (paizaランク C 相当)
https://paiza.jp/works/mondai/string_primer/advance_step7
>・ ミス 1
先頭に必要のない 0 がいくつかついてしまう
・ 本来 1 である数値が 0001 と表記されてしまう
・ 本来 0.001 である数値が 00.001 と表記されてしまう
>
>・ ミス 2
小数である数値の末尾に必要のない 0 がいくつかついてしまう
・ 本来 0.1 である数値が 0.10 と表記されてしまう
>
>・ ミス 3
小数である数値に小数点が複数個ついてしまう
ただし、 1 つめの小数点の位置が正しい小数点の位置であるものとします
・ 本来 0.123 である数値が 0.1.2.3 と表記されてしまう。
>
>表記が正しくない可能性のある数値を表す文字列 S が与えられるので、その数値を正しい表記にしてください。
>S を数値として扱うと上手く処理が行えないので気をつけてください。はい。すっげえ難しく30分過ぎてもできなかったのでギブアップ。
ひとまず考えとして
・小数か整数かで場合分け
・整数なら、正規表現で先頭の000だけ消
pygameをいじっていて、早めに理解したかったこと
chat GPTとかの回答をそのまま貼り付けることがあります。
作りながら気づいたことを随時追加していきます。
認識違いや追記などございましたら、ご指摘いただけると嬉しいです。## surfaceとdisplay surfaceの違い
>pygameにおいて、’surface’と ‘display surface’は異なるものですか?はい、Pygameにおいて「surface」と「display surface」は異なる概念ですが、両者は関連しています。
Surface: Pygameでは、Surfaceは画像や図形を描画するための基本的なオブジェクトです。これは基本的にピクセルの2次元配列で、いかなるグラフィカルコンテンツもこのSurfaceに描画されます。あなたは多くのSurfaceオブジェクトを作成し、それらに異なるグラフィック(スプライト、テキスト、図形など)を描画することができます。
Display Surface: display surfaceは特別なSurfaceで、これはPygameウィンドウまたはスクリーン上に表示されるメインの画面です。pygame.
【Python/Git】pycacheをgit ignoreする
Pythonのパッケージを実行すると、各パッケージに`__pycache__`フォルダーが自動生成されますよね。
ソース管理上邪魔ですよね。
こうすればいいです。
“`:.gitignore
**/__pycache__/**
“`
こうすることにより、全ディレクトリにある`__pycache__`ディレクトリが全てignoreされます。:::note
この記事を読んでいる方は、次の記事も読んでいるのかもしれません
* [とりあえず周りと仕事ができるGitHub入門](https://qiita.com/konbraphat51/items/8d4907bf02cfff518462)
:::