- 1. AtCoder初心者振り返りメモ ABC323
- 2. 【Python】日本語全角/半角変換ライブラリmojimojiで報告されているIssueと拙作Habachenでの対応について
- 3. 【Pyinstaller】Windows Defenderに引っかからないようにする
- 4. Pythonで「Pythonを対話モードで利用する」の動作を確認してみた
- 5. 画像処理の入門
- 6. AtCoder初心者振り返りメモ ABC324
- 7. iPhone (iOS) に Linux(Shell) 環境を構築してPyenv, Pythonを実行
- 8. ABC324回答メモ
- 9. ABC324をPythonで解いてみたよ。(A~E問題)
- 10. pythonで複雑なリストの数え上げを簡単に行う方法
- 11. 「Python で学ぶ音声認識」のASRプログラムを非自己回帰型( non-AR )に改修しました。
- 12. batファイルでpythonを実行
- 13. ChatGPTとPythonで学ぶ マルコフ連鎖モンテカルロ
- 14. ABC324をPythonで(A~E)
- 15. 【FastAPI】オウム返しするLINE BOT作成
- 16. 【Python】Raspberry pi 4で格安PN532ボードを動かす【NFC】
- 17. 【Python】多次元リストのソート
- 18. 会話の合間にスクワットを要求してくるマッチョ(bot)との会話サービスを開発した
- 19. VSCodeでPoetryのプロジェクトをデバッグする方法
- 20. k-means法でホテルの評価をクラスタリングする
AtCoder初心者振り返りメモ ABC323
# ABC323の回
##### 参考リンク
https://atcoder.jp/contests/abc323# A-問題
##### 問題文
https://atcoder.jp/contests/abc324/tasks/abc323_a0 と 1 からなる長さ 16 の文字列 S が与えられます。
2 以上 16 以下のすべての偶数 i について S の i 文字目が 0 ならば Yes を、 そうでないならば No を出力してください。““Python:A.py
# 入力を受け取る
S = str(input())# 偶数なので2つおきに判定
for i in range(1,16,2):
if S[i] != ‘0’:
print(“No”)
exit()
print(“Yes”)
““# B-問題
https://atcoder.jp/contests/abc324/tasks/abc323_b本番は、自己流の書き方で正答できたがスマートではなかった。
**ポイント**
・勝ち数とi番目をソート
【Python】日本語全角/半角変換ライブラリmojimojiで報告されているIssueと拙作Habachenでの対応について
## はじめに
– mojimoji とは
https://qiita.com/ikuyamada/items/fea6c8f81e7cac7cf318
https://github.com/studio-ousia/mojimoji
– Habachen とは
https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867
https://github.com/Hizuru3/python-habachen
mojimoji と Habachen は、いずれもネイティブ拡張を用いた CPython 上で動作する日本語の全角/半角変換ライブラリです。 Habachen は私が開発しています。
以前書いた [Habachen の紹介記事](https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867)ではそのパフォーマンスに焦点を当てていますが、元々は mojimoji の不満点を解消した CPython 用の日本語文字列変換ライブラリを自前で作り上げることが目的で[^1]、高速化は二の次で
【Pyinstaller】Windows Defenderに引っかからないようにする
## 背景
– Pythonでデスクトップアプリを作成することがあり、exe化に[pyinstaller](https://pypi.org/project/pyinstaller/)を使用
– pyinstallerコマンド(`pyinstaller hoge.py`)でexe化したときに、windows defenderのセキュリティでウイルスが検知された
– [Trojan:Win64/Malgent!MSR](https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan:Win32/Malgent!MSR)というトロイの木馬[^1]区分のチェックに引っかかった
– pyinstallerを使った場合、windows defenderに引っかかることはよくあることらしい
– [PyInstallerで作ったexeがウィルス判定される](https://note.com/koide_mizu1433/n/n914c3cb2e04a)
– [[Pytho
Pythonで「Pythonを対話モードで利用する」の動作を確認してみた
# 概要
Pythonで「Pythonを対話モードで利用する」の動作を確認してみました。以下のページを参考にしました。
https://www.javadrive.jp/python/ini/index2.html
# 実装
以下のコマンドを実行しました。
“`
$ python3
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 10*5-3
47
>>> num = 8
>>> price = 500
>>> num * price
4000
>>> help(‘if’)>>>
“`# まとめ
何かの役に立てばと。
画像処理の入門
最近、弊社で画像処理の案件が増えているらしく、学生時代に研究でかじっていた私にドンピシャな案件がやってきています。
そこで、画像処理を少しでも知ってもらうように、今回は画像処理の基本であるOpenCVのライブラリを使って簡単な画像処理を実施していきたいと思います。
# 準備
* 今回はPythonを使用して、画像処理を行います。Pythonが使用できる環境を用意してください。
* ライブラリはOpenCVを使用します。Pythonがインストール出来たら下記のコマンドでライブラリをインストールしてください。
“`
pip install opencv-python
pip install numpy
“`
* ライブラリが正しくインストール出来ているか、確認します。以下のサイトから今回使用する画像をダウンロードします。
[レナの画像](http://www.ess.ic.kanagawa-it.ac.jp/std_img/colorimage/lena_std.bmp)
ダウンロードしたらプロジェクト直下にファイルを置いて、下記のコード
AtCoder初心者振り返りメモ ABC324
# ABC324の回
##### 参考リンク
https://atcoder.jp/contests/abc324
日本レジストリサービス(JPRS)プログラミングコンテスト2023
(AtCoder Beginner Contest 324)https://qiita.com/kubochiro/items/5daedd51654a8155bc06
Python zip()関数についてあれこれhttps://qiita.com/hyouchun/items/98b53e9dc8cc0b99e1fe
ABC324をPythonで解いてみたよ。(A~E問題)# A-問題
https://atcoder.jp/contests/abc324/tasks/abc324_a最初から、setを使うことを思いついたがタイピングに時間がかかってしまった。
**問題文**
N 個の整数 が与えられます。
これらの値がすべて等しいならば Yes 、そうでなければ No と出力してください。**ポイント**
setに格納するのがシンプル““Python:A.py
# 202
iPhone (iOS) に Linux(Shell) 環境を構築してPyenv, Pythonを実行
# はじめに
突如スマホでShellを使いたくなったことはありませんか?
そんな時は `iSH` というアプリをインストールすることによってShell、Linuxの実行環境を利用することができます!# 概要
`iSH` というアプリは、Alpine仮想環境を利用することができるので、その上で、Pyenv環境を構築してPythonをインストールする。
注意点として、Pythonのビルドに数時間かかるので、時間のある時に作業することをお勧めします。# 1. App
[iSH](https://apps.apple.com/jp/app/ish-shell/id1436902243) をインストールします。
## 操作の対応
・`Tab` キーは「右矢印に縦線のアイコン」から入力できます
・`Ctrl` を入力するには、「`^`」のアイコンを押し、対象のキーを押すことで実行できます。
・`Esc` を入力するには、「円に左上矢印のアイコン」をタップすると入力できます。
・矢印入力は、「上下左右の矢印のアイコン」をタップたまま、操作したい方向に移動して離すと入力できます。
ABC324回答メモ
# 0.はじめに
A~Cは順調でしたが、Dは解き方が分からず飛ばし
EにとりかかるもTLEが解消できず
結局Cまで止まりでした。
レートは+19と微増でした。# 1.A – Same
いろいろ方法は考えられましたが、単純にフラグを用意し
リストの2つ目から、1個前と同じかをチェックしていき
違ったらフラグを立て、最後にフラグが立ってたらNo
立ってなかったらYesを出力して終了。https://atcoder.jp/contests/abc324/submissions/46524744
# 2.B – 3-smooth Numbers
Nを割り切れるまで、2で割り、割り切れなくなったら
割り切れるまで3で割る。
最後に残ったのが1ならYes、それ以外ならNoを出力して終了。https://atcoder.jp/contests/abc324/submissions/46530063
# 3.C – Error Correction
めんどくさいだけで、考え方は簡単でした。
Tを読み込み、S毎に以下の判断
1)SとTが同じ
ABC324をPythonで解いてみたよ。(A~E問題)
[AtCoder Beginners Contest 324 (ABC324)](https://atcoder.jp/contests/abc324) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッhttps://lit.link/mer6177999
# A – Same
## 問題ページ
https://atcoder.jp/contests/abc324/tasks/abc324_a## 考察
セット(集合)は、重複した値を持ちません。
なので、種類数を数えるときにつかえます。
この問題でも、配列 $A$ をセットとして受け取ってしまえば、簡単に判定ができます。## コード
“`Python
N = int(input())
A = set(map(int, input().spl
pythonで複雑なリストの数え上げを簡単に行う方法
# はじめに
ここでは、python の collections を用いて、複雑なリストでも簡単に数え上げる方法を紹介します。
https://docs.python.org/3/library/collections.html
## ソースコードと簡単な説明
簡単な例として、people として Aさん、Bさん、Cさん、の3名がいて、1 ~ 5 までの成績がついているようなリストがあったとします。それぞれの数は決まってません。このような情報を整理して、各人がどういう成績を何回取得したかをまとめる方法を紹介します。
“` python:
# Counterは、要素の出現回数をカウントするための特別な辞書のようなデータ構造です。
from collections import Counter# peopleというリストには、A、B、Cなどの文字が順番に格納されています。
people = [“A”, “A”, “A”, “B”, “B”, “B”, “B”, “A”, “A”, “A”, “A”, “A”, “C”, “C”, “C”]
# gradeというリストには、各
「Python で学ぶ音声認識」のASRプログラムを非自己回帰型( non-AR )に改修しました。
## はじめに
前回は、transformer を用いた tensorflow の音声認識プログラムを、日本語を認識できるようにと音響特徴量を PCEN に改修して報告させていただきました。
https://qiita.com/toshiouchi/items/0a629838b19e67f4e8bb
今回は、「Python で学ぶ音声認識」の rnn-attention のプログラムを、非自己回帰型の transformer に改修したことをご報告させていただきます。
## 学習結果(15epochs/20epochs)
途中経過ですが、20epochs中の15epochs目で、validation データの誤り率が 27 % です。データを掲載します。n_batch:4750 は、38000データを batch_size = 8 でというこです。train loss と train token error rate は、訓練データの損失と間違え率です。n_batch:125 は、1000データの batch_size = 8 ということです。validation los
batファイルでpythonを実行
pythonでのツール作成を依頼され作成した際に、exeファイル化が面倒なので、他の実行方法はないかと考えて
batファイルで実行できるようにしました。以下の文章をメモ帳に入力して、拡張子を.batにして保存する。
cd <目的の.pyファイルまでのパス>
python <.pyファイルの名称>実行をすると、コマンドプロンプトの画面が表示され、処理が自動で実行されます。
ChatGPTとPythonで学ぶ マルコフ連鎖モンテカルロ
本日は、ゲストにChatGPTさんをお招きして、「ChatGPTとPythonで学ぶマルコフ連鎖モンテカルロ」というテーマで雑談をしたいと思います。それではChatGPTさん、よろしくお願いします。
—
### **assistant**:
はじめまして、ChatGPTと申します。マルコフ連鎖モンテカルロ(MCMC)について一緒に学べるのは楽しみですね。よろしくお願い致します。
ではまず、基本的な観点から始めましょう。マルコフ連鎖モンテカルロは、確率的なアルゴリズムの一つで、大規模な複雑な確率分布からの標本抽出を可能にします。これは、ベイズ統計学や機械学習などの分野で広く応用されています。
Pythonは、このような数値計算やデータ分析を行うための強力なツールであり、特にscipyやnumpy、pandasなどのライブラリは、MCMCといった高度な統計的手法を利用するための多くの便利な関数を提供しています。
それでは、Pythonでマルコフ連鎖モンテカルロを扱ってみましょう。以下に、基本的な実装を示します。
“`python
import numpy as np
ABC324をPythonで(A~E)
日本レジストリサービス(JPRS)プログラミングコンテスト2023(AtCoder Beginner Contest 324)
https://atcoder.jp/contests/abc324
# A問題
setに入れて確認
“`python:A
input()
s = list(map(int, input().split()))
print(“YNeos”[len(set(s))>1::2])
“`
# B問題
2と3で割れるだけ割る
“`python:B
n = int(input())
while n % 2 == 0:n //= 2
while n % 3 == 0:n //= 3
print(“YNeos”[n>1::2])
“`
# C問題
各Sに対して調べる。
1文字差があるときは、1つ以外違うか確認
同じ文字数のときは、同じ場所の違う文字の数が1以下か調べる
“`python:C
n, t = input().split()def check(s, t):
if len(s) + 1 != len(t):return False
【FastAPI】オウム返しするLINE BOT作成
今回はFastAPIとLINE messaging APIを用いてオウム返しをするLINE BOTを開発します。
FastAPI は pythonのAPI用フレームワークです。
私はこれを使ったことなかったですが、ドキュメントを見た感じとっかかりやすそうだったのと、高速ということでレス時間がクオリティをかなり左右するボット開発においては有用かなと思い使ってみました。なるべくLINE BOT SDKのメソッドの働き等についても踏み込んで説明します。
参考になれば良いなと思います。入門者の方はこちらを先に目をとしていただければFastAPIに関しての知識は十分得れるかと思います。
また、事前準備のセクションで記載していますが、今回はこの記事の環境構築部分を用いているのでついでにdocker環境を構築すると良いかなと思います。
[FastAPI入門](https://zenn.dev/sh0nk/books/537bb028709ab9)FastAPI日本語ドキュメント
[FastAPI](https://fastapi.tiangolo.com/ja/)## 事前準備
【Python】Raspberry pi 4で格安PN532ボードを動かす【NFC】
# はじめに
ラズパイのGPIOピンに格安NFCモジュールボードを接続し、I2Cプロトコルで通信を行った。よく紹介されている`nfcpy`はUSBで接続したデバイスを制御するもので、今回は使わない。購入したモジュールは`ELECHOUSE製`の`NFC MODULE V3`。Amazonで700円ちょっと(2023年9月時点)。少し前は半導体不足の影響か高騰してたけど、少し落ち着いてきたのかな?海を渡ってくるので到着までに2週間程度かかった。
# モジュールの設定
ピンが付属してきたので適当にハンダ付け。ボード上のスイッチは「1」を「ON」とした。![20231014_110004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248818/bea9c080-ffd6-d854-0355-bb6270a2768d.jpeg)
# ラズパイとの接続
`Vcc – 3.3V(1番ピン)`、`SDA – SDA(3番ピン)`、`SCL – SCL(5番ピン)`、`GND – GND(9
【Python】多次元リストのソート
# 一つのキーでソート
## 昇順にソート0番目の要素で昇順にして並び替えます。
“`main.py
score = [[80, 65], [77, 45], [10, 99], [100, 100], [85, 43]]
score = sorted(score, key=lambda x: x[0])
print(score)
>> [[10, 99], [77, 45], [80, 65], [85, 43], [100, 100]]
“`## 降順にソート
0番目の要素で降順にして並び替えます。“`main.py
score = [[80, 65], [77, 45], [10, 99], [100, 100], [85, 43]]
score = sorted(score, key=lambda x: x[0], reverse=True)
print(score)
>> [[100, 100], [85, 43], [80, 65], [77, 45], [10, 99]]
“`# 複数のキーでソート
## 昇順にソート
0番目と2番目の要素で
会話の合間にスクワットを要求してくるマッチョ(bot)との会話サービスを開発した
簡単に言うとChatGPTクラインアントサービスを作りました。
サービスそのもの、技術構成、開発体験記を紹介させてください。使ってみたい方は[こちらのフォーム](https://docs.google.com/forms/d/e/1FAIpQLSeQZZslE1Z-e94LU1oJ6AGOLg51kZYOgrd7M5E3MH-1eE0P6g/viewform?usp=sf_link)に入力頂いたら順次招待させて頂きます。
# サービスそのものに関して
## 作ったもの
マッチョなメンター(bot)が会話の合間、会話の最初に筋トレ(スクワット)を要求してくる– 会話の最初に筋トレ(スクワット)を要求してくる
– ![スクリーンショット 2023-10-14 15.09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/9e48d032-466d-68f9-8ae1-d7ab4ea1d0db.png)
– 回答を考えている間にも筋トレ(スクワット)を要求してくる
–
VSCodeでPoetryのプロジェクトをデバッグする方法
# 概要
Poetryを使ってデバッグするときの初期構築に手間取ったので手順を載せておきます。# launcher.jsonの作成
例えば以下のプロジェクト内の`skybrush-server/src/flockwave/server/launcher.py`をデバッグしたいとします。
“`
skybrush-server
├─.venv
├─.vscode
├─doc
├─etc
├─src
│ └─flockwave
│ ├─gateway
│ ├─proxy
│ └─server
│ ├─command_handlers
│ ├─ext
│ ├─middleware
│ ├─model
│ ├─registries
│ ├─show
│ ├─tasks
│ ├─utils
│ ├─launcher.py
│ └─__pycache__
├─.dockerignore
k-means法でホテルの評価をクラスタリングする
# はじめに
本記事では、Pythonでk-means法を実行し、ホテルの評価データをクラスタリングします。使用するデータは以前紹介した記事[Pythonでじゃらんの口コミをスクレイピングする][Scraping]で取得したものになります。[Scraping]:https://qiita.com/yuya2220/items/870739cf07a61de18299
# 環境
python 3.10.4
Windows 11 Home# k-means法とは
非階層型クラスタリング手法で、以下の手順でデータをk個に分類します。
① 各データに対してランダムにクラスタを割り振る
② 各クラスタの重心を計算する
③ 各データに対して最も近いクラスタを再度割り振る
④ ②と③をクラスタに変化が出なくなるまで繰り返す
※クラスタ数kは事前に人間が指定する# 使用するデータの構造
今回使うデータは以下のような構造になっています。
| index | 部屋 | 風呂 | 料理(朝食) | 料理(夕食) | 接客・サービス | 清潔感 | 見出し | 本文 |
| —- | —