- 1. 【Python】娘(当時1歳半)との尊い会話シミュレーター
- 2. [公開版]AtCoder Beginner Contest せっかくだから書いたコードを公開(随時更新)〜Python編〜
- 3. ラズパイで作る防犯システム
- 4. pythonコマンドが効かない
- 5. Pythonで学生証を読ませる(felica, nfcpy)
- 6. python cheatsheet
- 7. seleniumをインストールして、pythonでお試し利用
- 8. FastAPI: DynamoDB のデータを読む
- 9. FastAPI: JSON ファイルを読む
- 10. aws lambda のスクリプトの中で、greengrass v2のコアデバイス一覧を全件取得する
- 11. python3 ベクトルの基本
- 12. LightGBMのコードを読み解くのに必要だった知識をまとめてみた
- 13. 【JavaScript・HTML・(Python)】tableにあるボタンを押した行をモーダル上で削除する
- 14. 過去問精選 10 問 (AtCoder Beginners Selection)解説〜Python編〜[自分用メモ]
- 15. Atcoder ABC261
- 16. python3 和集合と積集合
- 17. AtCoder Beginner Contest 復習用(随時更新)〜Python編〜
- 18. 巡回セールスマン問題at国立
- 19. 【Python】ワイルドカードを使ってローカルファイル郡を取得しよう
- 20. GAE + Python(Flask)でHello Worldまの3ステップ
【Python】娘(当時1歳半)との尊い会話シミュレーター
## 概要
娘(当時1歳半)との尊い会話のシミュレーターを、Pythonで再作成しました。
ExcelVBAバージョンはこちら。
https://qiita.com/AnPanda/items/da66bbf657e8712f1322
## コード
“`python
import randomwords = [“ばなな”, “もも”, “すいか”, “りんご”, “ぱんだ”,
“いぬ”, “ねこ”, “たこ”, “いか”, “なっとう”]
n = random.randint(1,6) #1-6でランダムfor i in range(n): #質問を最大6回繰り返す
nani = input(“なーにーなーにー? >>”)if nani == “”: #空白の場合、再度質問
continue
elif nani in words: #単語リストに存在する場合、応答
print(nani + “!”)
else: #単語リストに存在しない場合
yesno = input(“
[公開版]AtCoder Beginner Contest せっかくだから書いたコードを公開(随時更新)〜Python編〜
# 日鉄ソリューションズプログラミングコンテスト2022(AtCoder Beginner Contest 257)
https://atcoder.jp/contests/abc257/tasks/abc257_b
## C – Rotation
“`python
n,k,q = list(map(int,input().split()))
#コマが存在するマス目
a = list(map(int,input().split()))
#何番目のコマに対する処理か
l = list(map(int,input().split()))“””必要な変数
・operate_piece
“””
“””必要な処理
1. 一番右にあるコマが一番右のマスない場合
2. 今操作しようとしようしているコマの右隣にコマがない場合“””
for i in range(len(l)):
check=l[i]
operate_piece=a[check-1]
#一番右にあるコマが一番右のマスない場合
if operate_piece!=n:
#今操作しようとしようして
ラズパイで作る防犯システム
# こんな感じのが出来上がります
https://drive.google.com/drive/u/0/folders/167T2ZkFCb-YmOti_iWxH_3-KOo-6vbMA# 動機
自分が外出時誰かが家に侵入したことを報告し、その侵入者を撃退するため。# 目的
Webカメラと人感センサーで侵入者を感知、それと連動して圧電ブザーを鳴らしたり人の声をopenjtalkで侵入者を撃退する。同時にLINEで侵入者の年齢、性別、顔写真を主人に報告する防犯システムの開発。# 機能ポイント
人感センサーが反応すると、webカメラが侵入者の顔を撮影。
侵入者の顔をディテクトする。
侵入者の年齢を判定。
侵入者の性別を判定。
感知したことで圧電ブザーによって警報音を出す。
圧電ブザーの音量、音程を調節するため、用意された抵抗の中で最小の200Ωにセット。「ドレミファソラシド」とメロディーを奏でる。
スイッチを押すことで、監視をスタートさせる。
スピーカーでopenjtalkツールによって人間の声を発する。
(例えば、「監視をスタートします。」など)# システムアーキテ
pythonコマンドが効かない
さあこれからpythonの勉強していくぞ!って時にいきなり出鼻をくじかれたことのメモ
## 前提条件
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446396/07c2cc73-2983-c112-50e9-a9b571219b3f.png)## 発生した問題
まずpythonのバージョンを確認しようと思って
“`
python -V
“`
を実行するが
“`
zsh: command not found: python
“`
となる。え?タイプミスか?と思ったが絶対それはない。
pythonがインストールされてないんだぁと思ってインストールするが、それでも同じ結果。少しぐぐった結果以下コマンドで確認すると…
“`
python3 -V
“`
“`
Python 3.9.13
“`
あーやっとバージョンが出た。## 原因
どうやらM1 macのアップデートでpython2が削除されていたようでした。
それによってpythonコマンドが効かず、py
Pythonで学生証を読ませる(felica, nfcpy)
### はじめに…
課題でfelicaが組み込まれた学生証をタッチすることで入退室の管理システムをPythonで作ることになり、その備忘録的なもので残します…
最終的にはRaspberry piで実行することになりますが、デバッグの関係でMac環境で進めていますが、動作自体は同じなので触れません。## 下準備
### nfcpyインストール
nfcのライブラリ入れときます。
“` pip install nfcpy “`
Mac環境ではこれだけでおしまいなのですが、ラズパイではこのほかにやることがあります。ラズパイで“`lsusb“`を実行して、リーダーを確認します。
今回使うリーダーは`RC-S380`通称”パソリ”なので
`Sony Corporation RC-S380/P`
ここの`ID xxx:yyy`は後で要るのでメモっておいた方がいいです。(後々のために)次に、`cd /etc/udev/rules.d/`にアクセスして`touch nfcdev.rules`を作ってその中に以下のものを保存します。なお`xxx`と`yyy`は上記で出したものを
python cheatsheet
# 1. 標準ライブラリ
[Python 標準ライブラリ](https://docs.python.org/ja/3/library/index.html)“`base.py
# オブジェクトの型を判定する
type()
# listに要素を追加する
list=[]
list.append(“XX”)# すべての要素を削除
list.clear()# インデックス・スライスで位置・範囲を指定して削除する
#リストの作成
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]del l[0] # 最初を削除
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]del l[-1]
print(l) # 末尾を削除
# [1, 2, 3, 4, 5, 6, 7, 8]“`
### 1.1. 値
|データ型 | 例|説明|
|—|—|—|
|int |120|整数|
|float |3.1415|浮動小数点数|
|str |”test”| 文字列
seleniumをインストールして、pythonでお試し利用
https://qiita.com/seigot/items/475da9b3701cea8fb384
上記記事でコードでエラーが出たので修正
“`diff_python
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from selenium.webdriver.common.by import By# ブラウザを開く。
driver = webdriver.Chrome()
# Googleの検索TOP画面を開く。
driver.get(“https://www.google.co.jp/”)# 検索語として「selenium」と入力し、Enterキーを押す。
search = driver.find_element(by=By.NAME, value=”q”)
search.send_keys(“selenium automation”)
search.send_keys(
FastAPI: DynamoDB のデータを読む
CORS に対応しています。
フォルダー構造
“`text
$ tree
.
├── dynamo_scan.py
└── main.py
“`“`py:main.py
#
# main.py
#
# Jul/26/2022
# ——————————————————————
import json
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddlewarefrom dynamo_scan import dynamo_scan
# ——————————————————————
app = FastAPI()app.add_middleware(
CORSMiddleware,
allow_origins=[“*”],
allow_credentials=True,
FastAPI: JSON ファイルを読む
files にある cities.json を読むサンプルです。
ツリー構造
“`text
$ tree
.
├── files
│ └── cities.json
└── main.py
“`“`py:main.py
#
# main.py
#
# Jul/26/2022
# ——————————————————————
from pathlib import Path
from fastapi import FastAPI
from fastapi.responses import FileResponse# ——————————————————————
app = FastAPI()@app.get(“/”)
def read_root():
rvalue = {“morning”: “おはよう”,”afternoon”: “こんにちは”}
return rvalue
aws lambda のスクリプトの中で、greengrass v2のコアデバイス一覧を全件取得する
### 【概要】
– aws lambda のスクリプトの中で、greengrass v2 のコアデバイス一覧を取得したかったが、何故か10件しか表示されなかったので対応メモ。### 実際のスクリプト
“`py:python3
region = boto3.session.Session().region_name
ggv2_client = boto3.client(‘greengrassv2’, region_name=region)
s3 = boto3.client(‘s3’)def get_deployment_info():
deployments = ggv2_client.list_deployments()[‘deployments’]
return deploymentsa = get_deployment_info()
print(a)
“`### 対応
– aws のドキュメントは以下だけど、相変わらずわかりずらい?
https://boto3.amazonaws.com/v1/documentation/api/lates
python3 ベクトルの基本
# ベクトルとは
ベクトルとは以下のように()の中に縦に数を配置したものです。
“`math
v =
\begin{pmatrix}
1\\
2\\
3\\
\end{pmatrix}
“`
()内に入っている数字を成分と呼びます。ベクトルで縦に並べた数の個数を次元と呼びます。上のベクトルだと数が3つ並んでいるので三次元ベクトルです。
# ベクトルの足し算 引き算 掛け算
ベクトルの足し算引き算掛け算は以下のように次元が等しい場合のみでき、成分どうしを足し合わせるだけです。
“`math
v =
\begin{pmatrix}
1\\
2\\
3\\
\end{pmatrix}
u =
\begin{pmatrix}
5\\
6\\
7\\
\end{pmatrix}
“`
“`math
v + u =
\begin{pmatrix}
1 + 5\\
2 + 6\\
3 + 7\\
\end{pmatrix}
“`
これをnumpyを使ってやってみたいと思います。
“`python
import numpy as npv = np.array([1,2,3])
u
LightGBMのコードを読み解くのに必要だった知識をまとめてみた
LightGBMのコードを読み解く必要があり、調べた内容をまとめました。
## LightGBMとは
[NIPS2017読み会](https://www.slideshare.net/tkm2261/nips2017-lightgbm-a-highly-efficient-gradient-boosting-decision-tree)
[LightGBMの理論のまとめ](https://nigimitama.hatenablog.jp/entry/2021/01/16/212601)GBDT(勾配ブースティング決定木)のフレームワーク
動きが早いかつ精度高く人気らしいGOSSとEFBが重要らしいけどちゃんと理解するのは保留
## 使用されているパラメータ
### boosting_type
boostingはアンサンブル手法のこと
LightGBMで選択できるのは下記の4つ[lightgbm.LGBMClassifier](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMCl
【JavaScript・HTML・(Python)】tableにあるボタンを押した行をモーダル上で削除する
### ※注意!!
タイトルでは、「削除する」とありますが、記事に書いているのは、**tableの1行をボタンを押してモーダルを出す→削除する手前まで!!!** です。
削除機能実装については書いていませんのでご了承ください。## 本記事の目的
1. JavaScriptを使って「欲しい!!」と思った**テーブルの行の情報を取得**できるようになる
1. ボタンをクリックして、**クリックした行の情報を取得**できるようになる
1. 上から降ってきた画面(モーダル)上のボタンを押して、プログラムを実行する手前まで実装することができるの3つです!
## 目次
1. 実装した機能
1. この記事を書こうとした経緯
1. 具体的な実装方法
1. 参考にしたサイト## 1. 実装した機能
今回実装したい機能は、こんな感じです。
![event_category_delete.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/782282/6eeb43cc-f554-cd59-1f1f-d6f5f5
過去問精選 10 問 (AtCoder Beginners Selection)解説〜Python編〜[自分用メモ]
# ◎3問目 ABC081B – Shift only
> [B – Shift only](https://atcoder.jp/contests/abc081/tasks/abc081_b)
**問題文**
黒板に N 個の正の整数 A1,…,AN が書かれています.
すぬけ君は,黒板に書かれている整数がすべて偶数であるとき,次の操作を行うことができます.
黒板に書かれている整数すべてを,2 で割ったものに置き換える.
すぬけ君は最大で何回操作を行うことができるかを求めてください.
**制約**
1≤N≤200
1≤Ai≤109
**入力**
入力は以下の形式で標準入力から与えられる。
N
A1 A2 … AN
**出力**
すぬけ君は最大で何回操作を行うことができるかを出力せよ.“`python:自分が書いたコード
n=int(input())
a = list(map(int,input().split()))“””必要な関数等
・全て偶数であった回数をカウントする変数。
・配列の何個目かカウントする変数。“””
“””必要な処理
1. 偶数かどうか
Atcoder ABC261
# ABC261
## A – [Intersection](https://atcoder.jp/contests/abc261/tasks/abc261_a)
memo:
空白区切りの入力をmapをもちいて変数に代入する
“`
a, b, c, d = map(int, input().split())
“`
反省点:
大小関係を場合分けするだけの問題だったが時間がかかってしまった考えられる場合を丁寧に数え上げることが大切“`python:ans.py
a, b, c, d = map(int, input().split())if a < c: l_1 = min(b-c, d-c) if l_1 >= 0:
print(l_1)
else:
print(0)
elif a == c:
print(min(b-a, d-c))
else:
l_2 = min(d-a, b-a)
if l_2 >= 0:
print(l_2)
else:
print(0)
“`## B – [Tournament
python3 和集合と積集合
# set型を使う
set型を使って和集合と積集合をもとめます。set型を作るときは{}で囲います。
“`python
s = {1,2,3}
“`
set型の特徴は順番と重複が無視されます。
# 集合演算子
set型に集合演算子を使うと和集合や積集合が求められます。
| 和集合
& 積集合
# コード
まずは和集合から
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}union = s|t#集合sとtの和集合
print(union)
“`
出力
“`
{1, 2, 3, 4, 5}
“`
積集合
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}intarsection = s & t#sとtの積集合
print(intarsection)
“`
出力
“`
{2, 3}
“`
AtCoder Beginner Contest 復習用(随時更新)〜Python編〜
# 2022/07/23
https://atcoder.jp/contests/abc261
## B – Tournament Result
“`python
N=int(input())
A=[input()for i in range(N)]for i in range(N):
for j in range(N):
if i==j:continue
if A[i][j]==”W”:
if A[j][i]!=”L”:
print(“incorrect”)
exit()
elif A[i][j]==”D”:
if A[j][i]!=”D”:
print(“incorrect”)
exit()
elif A[i][j]==”L”:
if A[j][i]!=”W”:
print(“incorrect”)
exit()
print(“correct”)
“`# AtCoder Beginner Contest
巡回セールスマン問題at国立
# はじめに
私が通ってる一橋大学は国立市にあるのですが、国立市は街が碁盤の目のように整備されています。
![2022-07-22 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488423/741b174c-bec0-26a5-e731-1e040e581706.png)
(Google Mapより引用)
これを見た瞬間思いました。巡回セールスマン問題にぴったり!
(試験勉強の一環なので暖かい目で見てください)
# 巡回セールスマン問題とは
巡回セールスマン問題とは、セールスマンがいくつかの都市を一回ずつすべて通って出発点に戻ってくる最短経路を求める組み合わせ最適化問題です。都市の数をnとすると組み合わせは(n-1)!/2通りあるので、nの値が大きくなると莫大な計算量になります。ということで厳密解ではなく近似解を求めようというわけです。
# 実践
## 問題設定
今回はスタート地点は特に設定せず、国立市の10か所を巡ります。
![2022-07-22 (2).png](https://qii
【Python】ワイルドカードを使ってローカルファイル郡を取得しよう
globモジュールを使ってローカルに存在するファイル郡を取得する方法を記載します。
## globモジュールとは
Unixシェルが使用する規則に従って、指定されたパターンに合致するパス名をすべて見つけることができます。
## 使い方
まずglobをimportします。glob自体は最初から含まれているため、pipでインストールする必要はありません。
“`python
import glob
“`.pdfと記載されたファイルを取得するには、以下のように記載します。
“`python
import globglob.glob(‘*.pdf’)
“`出力結果は以下です。
“`python
[‘1.pdf’, ‘3.pdf’, ‘2.pdf’]
“`.pdfとついたファイルが全て取得できました。
リスト型で取得されるため、1つずつ処理したい場合は、for文で処理する必要があります。“`python
import glob
files = glob.glob(‘*.pdf’)
for file in files:
print(file)
“`
GAE + Python(Flask)でHello Worldまの3ステップ
# GAE + Python(Flask)でHello Worldまの3ステップ
前提条件
・GAEをホストするプロジェクトが存在する
・請求先アカウント作成済み
・Cloud SDKインストール済み## ①AppEngineアプリを初期化
### GCPコンソールで操作する場合
・リソースリストの中からAppEngineを選択する。
・アプリケーションを作成ボタンを押す。
・画面に従ってリージョンを選択する### コマンドラインで操作する場合
・gcloud app create –project=[YOUR_PROJECT_ID]
を実行
・表示された指示に従ってリージョンを選択する## ②ローカル環境でアプリを作成する
今回はPythonのフレームワークFlaskを使います。
以下のような構成で作成
root
│ .gcloudignore
│ app.yaml
│ main.py
│ requirements.txt
│
└─templates
| index.html“`app.yaml
#GAEの設定ファイル。
#インスタン