- 0.1. ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数
- 0.2. 天気予報APIで翌朝の降水確率を取得してLineで通知する
- 0.3. 【Python3】Decimal.quantizeを用いて小数点第○位以下を四捨五入
- 0.4. PUDB_TTYを指定してPuDBを使う
- 0.5. たった4行で画像の中の人を数える方法
- 0.6. pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)
- 0.7. 40代おっさんStreamlitを学ぶ
- 0.8. 【Pytorch】勾配を計算する
- 0.9. 【求対案】Python3 で時計算をやってみる
- 1. 正時(m=0)の場合
- 2. すべての場合
- 2.1. 40代おっさんFastAPIを勉強する(簡易Web API作成)
- 2.2. [python] ファイルにログを書き込む [日付]
- 2.3. ubuntu18.04 LTSに「Python3.11」をインストール
- 2.4. AirSimを用いた強化学習
- 2.5. 文字列とリストの変換
- 2.6. 『サイバーセキュリティプログラミング第2版』の読書メモ (3)
- 2.7. Pythonで標準入力された場合の処理
- 2.8. Airsimの画像 API
- 2.9. 40代おっさんFastAPIを勉強する②
- 2.10. [Python] PyAutoGUIをimportした時にtkinterの見た目が変わる事
- 2.11. PythonとYouTubeAPIで急上昇の動画のデータを取ってくる
ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数
# 西暦 ➡ 和暦 変換 Function
“`python:main.py
import datetime
class Gengou():
def __init__(self):
passdef Data_Set(self):
date_arr = [
{‘year’: 2019, ‘name’: ‘令和’, ‘new_Japanese_calendar’: ‘平成31年’},
{‘year’: 1986, ‘name’: ‘平成’, ‘new_Japanese_calendar’: ‘平成元年’},
{‘year’: 1926, ‘name’: ‘昭和’, ‘new_Japanese_calendar’: ‘大正15年’}
]
return date_arrdef Gengou_Print(self, now_y, r_month, date_arr):
for d_val in date
天気予報APIで翌朝の降水確率を取得してLineで通知する
# 動機と目的
私は朝、会社に行くのが苦痛である。
理由は、早起きが苦手だからである。
そして通勤時の天候で(傘を持っていく/持っていかない)、(早く起きる/起きない)を決めなければならない。
例えば
(a)雨が降っているならば、傘を持って5:00に家を出て徒歩で駅に向かう。
(b)そうでないならば、傘を持たずに5:30に家を出て自転車で駅に向かう。なので、前日20:00の天気予報で翌日の朝の天気が雨か確認し30分早く起きるかどうかを決定する。
これを自動化すること目的とする。## 詳細
処理の流れは以下の通り。
(1) 天気予報APIで翌日の朝6-12の降水確率を取得する。
[天気予報API](https://weather.tsukumijima.net/ “天気予報API”)
(2) もし降水確率が40%以上なら、Line notifyで自分に通知する。
[PythonでLINE Notifyへ通知を送る](https://qiita.com/akeome/items/e1e0fecf2e754436afc8 “https://qiita.com/akeome/items
【Python3】Decimal.quantizeを用いて小数点第○位以下を四捨五入
# 何の記事?
Python3で小数点以下を丸める関数にroundがありますが、
浮動小数点演算の問題により四捨五入が正確に行われない
場合があります。“`python
f = 2.675print(round(f, 2))
“`実行結果:
“`python
2.67
“`本当は2.68にならなければなりませんが切り捨てされてしまっています。この事象に対する対策です。
# Decimalを用いる方法
Decimalを用います。
“`python
from decimal import Decimal, ROUND_HALF_UPdef my_round(x, d=2):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return pprint(my_round(2.675, d=2))
“`実行結果:
“`python
2.68
“`
PUDB_TTYを指定してPuDBを使う
# 免責
この記事に従って発生した如何なる損害も筆者は負うことができません。ご免なさい。# 目的
私はCLIでpythonスクリプトをデバッグしたいので、PuDBというデバッグツールを使っています。
PUDB_TTYを指定してPuDBを使うときに少し苦労したので、インストール方法を残しておきたいと思います。# PUDB_TTYを指定する場合のPuDBのインストール方法
現時点で最新のpudb==2022.1.3では、PUDB_TTYを指定するとurwidでエラー(ValueError: I/O operation on closed file.)が発生するようです。
エラーを回避するためにpudb==2021.2.2をインストールします。
“`shell-session:インストール
$ python3 -m pip install –user
pudb==2021.2.2
“`
# PUDB_TTYを指定してPuDBを使う
たった4行で画像の中の人を数える方法
# どうも
face_recognitionについて調べてて意外と簡単だったので紹介します。## 用意する物
+ face_recognition ←こいつが無いとお話にならない
+ 顔の入った写真 ←顔が隠れてないやつ### 用意した画像
最近寒くなってきたのでこの画像にしました。
![3061076_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915539/14237492-c38f-6cb3-4167-19390d3fbf4a.jpeg)画像は[ここからダウンロードできます](https://www.photo-ac.com/main/detail/3061076)
:::note warn
注意
face_recognitionの学習モデルの関係で赤ちゃんの顔を認識できません。
:::
注意事項の[詳しい説明はこちら](https://github.com/ageitgey/face_recognition/blob/master/README_Japanese.md#%
pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)
### BUILD FAILED!
macOSで`brew`で入れた`pyenv`で`Python 3.*`をインストールしようとすると失敗する(`pipenv`の環境構築で`pyenv`でインストールしようとしても当然同じエラーが出る).(MacBook Pro 2019, macOS 12.6, Intel Core i7)
“`shell
$ brew install pyenv
…
$ pyenv install 3.7.10python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.10.tar.xz…
-> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
Installing Python-3.7.10…
python-build: use readline from homebrew
python-build: use
40代おっさんStreamlitを学ぶ
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## Streamlit
treamlitとは、PythonでWebアプリケーションを作成するためのフレームワークです。
データサイエンティストやAIエンジニア向けに開発されており、バックエンド開発の知識がなくてもPythonのコードを数行書くだけで、気軽にデモ用のアプリを作成することができるのが特徴です。
### Streamlitインストール
“`bash
pip3 install streamlit
“`### 確かめる
“`bash
streamlit hello
“`自分ははじめてだったのでメールアドレス求められました。
サイトにアクセスできれば大丈夫です。
### Text elements
フォルダを作り
`app.py`を作成“`python
import streamlit as st
st.write(‘利樹大好き’)
“`st
【Pytorch】勾配を計算する
# はじめに
NNの学習時で計算する、勾配を計算する方法を調べたのでメモしておきます。
“`math
\theta \leftarrow \theta + \eta \nabla_\theta L(\theta)
“`通常は、これらはoptimizer が良しなに更新してくれるので、自分では learning rate をいじったりはしません。なので、何次元のパラメータかなども意識しません。が、それを見てみよう、というのが今回の趣旨です。
# Modelのgradient vector を計算
ネットワークモデルについては、pytorchのtuotrial に沿って行います。
https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html
### モデルの定義とパラメータの参照
“`python: net.py
import torch
import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.
【求対案】Python3 で時計算をやってみる
非情報学科生向けのプログラミング講義で、以下のような問題が出題されました。
>時刻を入力したら、時計の短針と長針のなす角の角度aを求めるプログラムを作成しなさい。
>(0°≦a≦180°)
>また、入力される時(h)と分(m)は以下の条件を満たす整数であるとする。
>0≦h<12, 0≦m≦59正時(m=0)の場合
60分進むごとに、短針は30度進むこと、6時丁度のとき180°になることを考慮して、以下のような愚直解を考えた。
“`python
def solution(h, m):
if m == 0:
if 6 > h:
a = 30 * h
elif h == 6:
a = 180
elif h > 6:
a = 360 – (h*30)
return a
“`すべての場合
しかし、以上のような解では、正時以外の場合対応できない。幸い、時と分は整数のみであるから、1.5分のような場合は
40代おっさんFastAPIを勉強する(簡易Web API作成)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 簡単なAPIを作って、ローカル環境で試す
main.pyを作成
“`python
from fastapi import FastAPI
from pydantic import BaseModelclass Data(BaseModel):
x: float
y: floatapp = FastAPI()
@app.get(‘/’)
def index():
return {‘message’: ‘Hello Data’}@app.post(‘/’)
def calc(data: Data):
z = data.x*data.y
return {‘result’: int(z)}
“`sample.py作成
“`python
import requests
import jsondef main():
[python] ファイルにログを書き込む [日付]
# 0.初めに
タスクスケジューラ使って透明化してマクロを動かしていると、ごくまれに発生するバグのデバッグができない。
ファイルにログを残す必要を感じた。(バックグラウンド・透明化しないと作業の邪魔)
日付順に分けられたら便利そう。# 1.ファイル名に日付を使ってログを書き込む
以下ソースの解説yyyy-mm-dd.logというファイルがlogフォルダに作られる。logフォルダは手動で作ってください。
“w”は上書きモード
datetime.datetime.now()を書いてからログを書くことで時刻もわかる。“`python:py_log.py
import datetimepy_log = open(“log\\”+str(datetime.date.today())+”.log”, “w”) # 上書きモード
print(str(datetime.datetime.now())+”ログです。”) # コマンドプロンプトにログを残す
print(str(datetime.datetime.now())+”ログです。”, file=py_log) # ファイル
ubuntu18.04 LTSに「Python3.11」をインストール
## はじめに
Python 3.11の安定板が2022年10月25日(日本時間)にリリースされました。
https://docs.python.org/3/whatsnew/3.11.html
早速、Ubuntuにインストールしてみます。
僕の環境は、Windows11/WSL2のUbuntu 18.04 LTSです。
以下の作業はWindowsターミナルでUbuntuのbashを選択してやってます。## PPAリポジトリ追加
Python3.11は公式リポジトリにはありません。
まだの場合は、取得可能なPPAリポジトリ(ppa:deadsnakes/ppa)を追加します。
“`
sudo add-apt-repository ppa:deadsnakes/ppa
“`
実行時の画面イメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/7cf295f6-5a58-ae1c-94a5-4833a79d7c1c.png)## リポジトリ追加後はupdat
AirSimを用いた強化学習
今回はAirSimを用いた強化学習について自分なりに翻訳しまとめたので記事にしたいと思います。
以下では、AirSim API の周りに OpenAI ジム ラッパーを使用し、標準の RL アルゴリズムの安定したベースライン実装を使用して、AirSim に DQN を実装する方法について説明します。これらの例を実行するには、stable-baselines3 をインストールすることをお勧めします (https://github.com/DLR-RM/stable-baselines3 を参照してください)。
## 免責事項
まだ活発に開発されているため以下で共有するのは、パフォーマンスを向上させるために拡張および微調整できるフレームワークです。## Gym wrapper
AirSim をジム環境として使用するために、AirSim 固有の step、_get_obs、_compute_reward、reset などの基本メソッドと対象のタスクを拡張および再実装します。これらの例で使用されている車とドローンのサンプル環境は、PythonClient/reinforcement_l
文字列とリストの変換
文字列を一文字ずつにリスト化する方法、及び、一文字ずつのリストを文字列に統合する方法を知らなかったので書きました。
# 文字列を一文字ずつのリストにする
“`Python
# 「あいうえお」をリストにする
mojiretsu = ‘あいうえお’
mojilist = list(mojiretsu)
“`# 一文字ずつのリストを文字列に統合する
“`Python
mojiretsu = ”.join(mojilist)
“`
『サイバーセキュリティプログラミング第2版』の読書メモ (3)
ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。
https://www.oreilly.co.jp/books/9784873119731/
# 3.4 ICMP のパース より
P63 Scanner クラスの sniff メソッドを抜粋。
“`python
def sniff(self):
hosts_up = set([f'{str(self.host)} *’])
try:
while True:
# パケットの読み込み
raw_buffer = self.socket.recvfrom(65535)[0]
# バッファーの最初の20バイトからIP構造体を作成
ip_header = IP(raw_buffer[0:20])
# ICMPであればそれを処理
if ip_header.proto
Pythonで標準入力された場合の処理
競プロに手を出したばかりで標準入力の処理を最近知ったので、一番基本的なやつの備忘録です。
# 一つのものだけ標準入力された場合“`Python
# 文字列が与えられた場合
a = input()# 数字が与えられた場合
b = int(input())
“`# 横並びで入力が与えられた場合
“`Python
list = input().split()
“`※入力が縦一列の場合は「一つのものだけ標準入力された場合」を行数分繰り返せば良い。
後はこれの応用で、できそうな気がしました。
もう少し詳しくなったら加筆します。
Airsimの画像 API
今回はAirsimの画像APIの記事を翻訳したものを記事にいたしました。C++でも同様なことができますが今回自分はPythonのコードのみを記載しております。C++をお使いの方は元の記事のコードをお使いください。
元のURLはこちらになります。https://microsoft.github.io/AirSim/image_apis/# 画像 API
AirSim API に慣れていない場合は、まず一般的な API ドキュメントをお読みください。# 単一の画像を取得する
「0」という名前のカメラから単一の画像を取得するサンプル コードを次に示します。 戻り値は、png 形式のイメージのバイト数です。 非圧縮形式やその他の形式、利用可能なカメラを取得するには、次のセクションを参照してください。“` :Python
import airsim #pip install airsim# for car use CarClient()
client = airsim.MultirotorClient()png_image = client.simGetImage(“0”
40代おっさんFastAPIを勉強する②
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## postメソッド
Pydantic は、Python の型アノテーションを利用して、実行時における型ヒントを提供したり、データのバリデーション時のエラー設定を簡単に提供してくれるためのライブラリです。
“`python
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel): # BaseModelを継承してItemを作る
# データの構造を定義
name: str
description: Optional[str] = None
price: int
tex: Optional[float] = Noneapp = FastAPI()
@app.post(“/item
[Python] PyAutoGUIをimportした時にtkinterの見た目が変わる事
### 問題
PyAutoGUIをimportした時にtkinterの見た目が変わった。
importすると、しない時と比べてくっきり(小さく)みえるようになる。
### 解決
PyAutoGUIに含まれる
“`Python
try:
ctypes.windll.user32.SetProcessDPIAware()
except AttributeError:
pass
“`
が問題。
逆に、くっきり(小さく)したかったら上記のコードを追加すればよい。
PythonとYouTubeAPIで急上昇の動画のデータを取ってくる
### やること
YouTubeAPIで急上昇動画のURLを取ってくる。まず、GoogleCloudPlatformに行き、プロジェクトを作成して、YouTube Data v3というAPIを有効化します。「認証情報」をクリックして「認証情報」を作成を選び、「APIキー」を選択します。出てきたキーはコピーして取っておきます。
“`Python
import googleapiclient.discoverydef getYouTubeTop10():
API_KEY = “あなたのAPIキー”
youtube = googleapiclient.discovery.build(
“youtube”, “v3″, developerKey=API_KEY)
request = youtube.videos().list(
part=”snippet,contentDetails,statistics”,
chart=”mostPopular”,
maxResults=10, # ここで個数を