- 1. Tello SDK を自分なりに最適化してみた(Tello-Console)
- 2. [Python][Tips] さくっと現在日時を取得したい場合
- 3. YDITS for Twitter/Discordの制作
- 4. openpyxlでiter_rows()を使ったワークシート行のイテレーションを中断するとファイル削除できなくなる
- 5. 【プログラミングにおける高速化】AtCoderで実行時間超過(TLE)を減らす方法
- 6. 【M1 Mac版】Python3のインストール手順まとめ
- 7. python – inputがある限りループする
- 8. python で指定回数ループする例: for i in range(10)
- 9. (PyMuPDF) M1 Mac で “import fitz”できなかったがキャッシュ削除で解決した(備忘録)
- 10. matplotlibでtickparamsを使ってもticklabelが消えないときの対処法
- 11. 人口の予測
- 12. [ABC270] A,B,CをPythonで解いてみる
- 13. Windowsのファイルの保存場所を開く(Open File Location)コマンドをPythonで実行する
- 14. mutableとimmutable
- 15. Python3エンジニア認定基礎試験に出てきそうな関数とメソッド
- 16. 【Python】任意の試薬と生成物で秤量計算
- 17. Python 例外処理の解説
- 18. 神エクセルをHTMLに!Python編 その1
- 19. Python lambda解説
- 20. Pythonのバージョン確認 for macOS
Tello SDK を自分なりに最適化してみた(Tello-Console)
# Tello SDK を自分なりに最適化してみた(Tello-Console)
Tello を python でプログラミングするときに辿り着く SDK、それは Tello-Python だろう。この記事ではそんな Tello-Python にある tello.py を僕なりに改良した **Tello-Console tello.py** を紹介しようと思う。
今回初めてこのような記事を書くので、分かりづらい点もあるかもしれないが、そこは随時指摘等があり次第修正する。## そもそも Tello って?
![tello画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729782/8d13042e-4f4d-f627-becc-fcd30bb9910d.jpeg)
そもそも Tello って何なのか。知らない方に簡単に説明すると、**小さなプログラミングで飛ばすことができるドローン**である。とても小型なので室内で飛ばして遊ぶことができ、しかもホバリング性能やカメラの性能が類似する大きさ
[Python][Tips] さくっと現在日時を取得したい場合
さくっと現在日時を取得したい時に便利なTips。
大量のデータを扱う場合、現在日時をファイル名先頭に付与することで新旧でソーティングできるのでよく利用しています。
“`Python
import datetimenow = datetime.datetime.now() # 現在日時を取得
dt = now.strftime(‘%Y%m%d%H%M%S’) # YYYYMMDDhhmmssの書式に整形
print(dt) #20220927221536
“`
YDITS for Twitter/Discordの制作
# YDITS for Twitter/Discordの制作
Qiita初投稿
これは[noteで投稿した記事](https://note.com/yone1130/n/n8bf36ae85da4)の再掲です。## 使用技術
– [Python3](https://www.python.org/)
– [Git/GitHub](https://github.com/about)
– [防災科学研究所 強震モニタ JSONデータ](http://www.kmoni.bosai.go.jp/)
– [P2P地震情報 API](https://www.p2pquake.net/json_api_v2/)
– [Visual Studio Code](https://code.visualstudio.com/)
– [Twitter API](https://developer.twitter.com/en/products/twitter-api)
– [Discord Bot](https://discord.com/developers/)## 制作のきっかけ
私がはじ
openpyxlでiter_rows()を使ったワークシート行のイテレーションを中断するとファイル削除できなくなる
openpyxlでエクセルファイルを開いたのちに削除しようとしてもプロセスがファイルをブロックしていて削除できなかった。
Windows環境
* Windows8.1
* Python 3.10.7
* openpyxl 3.0.10“`python
import os
from openpyxl import load_workbookFNAME = ‘sample.xlsx’
# EXCELファイルをオープン
wb = load_workbook ( FNAME, read_only=True )
sheet = wb.active
# 行をイテレーション
for row in sheet.iter_rows() :
# なにか処理
# イテレーションを中断
break
# Workbookオブジェクトを閉じる
wb.close()
# EXCELファイルを削除 –> Win32エラー
os.remove ( FNAME )
“`根本的な対策はみつからなかった。
イテレーションを中断しないように変更する。“`python
impo
【プログラミングにおける高速化】AtCoderで実行時間超過(TLE)を減らす方法
# はじめに
筆者「さあ~周りの友達や同僚もAtCoderやってるし、腕試しでAtCoder始めてみるかあ~」
AtCoder100点問題「うわあああああ(撃墜)」
筆者「よし!クリア!」
AtCoder200点問題「やられたああああ(討伐)」
筆者「よし!いける!」
AtCoder300点, 400点問題「フンッ『”TLE(実行時間オーバー)”』」
筆者「!?!?!?!?」AtCoderをやっていく中で、以下のようなTLEの結果に出くわすこと多いのではないでしょうか??
TLE(Time Limit Exceeded:実行時間超過)とは、**アルゴリズムが正しくても、規定の実行時間を過ぎてしまうエラー**のことを表します。特に、300点問題(C問題)以上になってくると、TLEに悩まされることが多いと思います。
![001_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2866918/da6525f6-b66b-296a-be7b-51f6f7cd46d1.png)そこで、今回はAtCod
【M1 Mac版】Python3のインストール手順まとめ
# 手順
:::note warn
Homebrewがインストールされていること
:::## 1. pyenvのインストール
“`terminal
$ brew install pyenv
$ pyenv -v
“`“`terminal:実行結果
pyenv 2.3.0
“`## 2. pyenvのPathの設定
– 下記コマンドを1行ずつ実行
“`terminal
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc
$ echo ‘export PATH=”$PYENV_ROOT/shims:$PATH”‘ >> ~/.zshrc
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.zshrc
$ source ~/.zshrc
“`## 3. pyenvでインストールできるPythonのバージョンを確認
“`terminal
$ pyenv install –list
“`## 4. Pythonのインストール
“`terminal
$ arch -arch x8
python – inputがある限りループする
# 例
無限ループさせておいて入力が空であればループを抜ける。
“`py
while True:
x = input()
if x == “”:
break
else:
print(x)
“``while line = input():` みたいな簡潔な書き方は出来ない気がした。
# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
python で指定回数ループする例: for i in range(10)
# 例
“`py
for i in range(10):
print(i+1) # 1から10までを出力
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
(PyMuPDF) M1 Mac で “import fitz”できなかったがキャッシュ削除で解決した(備忘録)
### “import fitz”で問題が発生しました (PyMuPDF)
https://python-work.com/pdf-get-text/
の”import fitz”を実行できませんでしたが、キャッシュ削除で解決しました。
解決作業の備忘録です。### 手順(以下の作業は、arm64上で行なっています)
##
“`
name -m#arm64
“`
arm64と返ってきたなら、以下を実行そうでない場合は、Rosettaをoffにしてやる必要があります。
### 以下を実行
“`
pip3 install fitz
brew install mupdf swig freetype
pip3 install PyMuPDF
pip3 install frontend
“`下記サイトの方法をpip3に変えるだけでは、
https://cdmana.com/2022/03/202203221858329522.html
“`
pip3 install fitz
brew install mupdf swig freetype
pip3 in
matplotlibでtickparamsを使ってもticklabelが消えないときの対処法
おそらく対数スケールかつ目盛りが細かすぎる場合にTickが消えないことがあります.
“`python
import matplotlib.pyplot as plt_, ax = plt.subplots()
ax.tick_params(left=False, labelleft=False)
ax.set_yscale(‘log’)
ax.grid(which=’minor’, color=’gray’, linestyle=’:’)
ax.grid(which=’major’, color=’black’)
“`このときにAd-hocに対応するためにFontsizeを最小にするほうほうがあります.
“`python
ax.tick_params(axis=’y’, which=’major’, labelsize=1)
ax.tick_params(axis=’y’, which=’minor’, labelsize=1)
“`
人口の予測
# 概要
統計関係の定番ネタ、将来人口推計です。
百年先までの日本の人口の推移を予測します。# 準備
まず、ライブラリパッケージを読み込んで、データを用意します。
そして必要な数値の計算も行います。“`python
# — ライブラリ読み込み —
import numpy as np
import pandas as pdimport matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
plt.rcParams[‘font.family’] = ‘Yu Mincho’# — データ —
# 年齢5歳階級別女性人口・有配偶女性人口:2015年(出典:統計局・国勢調査)、
# 年齢5歳階級別母の年齢別出生数:2016年(出典:統計局・人口動態調査)
dfBorn = pd.DataFrame({
‘年齢区分’:[’15~19歳’, ’20~24歳’, ’25~29歳’, ’30~34歳’, ’35~39歳’, ’40~44歳’, ’45~49歳’
[ABC270] A,B,CをPythonで解いてみる
## はじめに
初投稿になるが、コンテスト中に今までできなかったことができたことからその記念(?)も兼ねて投稿する。
## [A – 1-2-4 Test](https://atcoder.jp/contests/abc270/tasks/abc270_a)
配点が1,2,4点とあるので2進数で考える。
少なくとも一方が解けた問題は解け、2人とも解けなかった問題は解けないとあるので論理和をとればよい“`Python:a.py
A,B = map(int,input().split())
print(A|B)
“`## [B – Hammer](https://atcoder.jp/contests/abc270/tasks/abc270_b)
XとYの位置関係から先に考えて、経路に壁がある場合にZが壁より原点寄りにあるか考える。
ゴールに到達可能なのは以下のパターンである。
– X,Yが異符号 (1)
– X,Yが同符号
– XがYより壁寄り (2)
– ZがYより壁寄り (3)(3)に関しては、Xへの最短経路にZがない場合(X,YとZ
Windowsのファイルの保存場所を開く(Open File Location)コマンドをPythonで実行する
# 実現目標
:::note
・スタートメニューから `More > Open File Location`
・ショートカットから `右クリック > Open File Location`「対象のファイルが存在するフォルダが開き(または、移動して)、対象のファイルがアクティブになる」操作をPythonで実行する
:::# 用途
:::note warn
たとえば、Imageビューアなどで右クリックして画像の保存場所を開けます。
:::# コード
“`python
import os
import subprocessdef open_file_location(absolute_path):
# windows用のパスへ変換
path = os.path.realpath(absolute_path)
# subprocessでコマンドシェルを実行
subprocess.Popen(f’explorer.exe /select, {path}’)open_file_location(“C:/Images/image1.jpg”)
mutableとimmutable
# mutableとは?
変更できるオブジェクト
* リスト
* 辞書
# immutableとは?
変更できないオブジェクト
* タプル
* str
* int
* float
* bool
* None
Python3エンジニア認定基礎試験に出てきそうな関数とメソッド
Python3エンジニア認定基礎試験に出てきそうな関数をまとめました。
# range()
* 引数に指定した数の一つ前まで、0から連番で要素が入る。
* ○〜○までの整数を取得することもできる。
“`
3~29までの数字
>>> x = list(range(3,30))
>>> print(x)
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
“`
# count()
* リストの中に指定の要素が何回登場したかを数える。
# len()
* リストの全要素数をカウントする。
# round()
* 小数点を四捨五入する(厳密には四捨五入ではない)。roundだから、小数点を丸める的なニュアンス。
“`Python
>>> round(123.5)
124
>>> round(124.5)
124
“`
# zip()
* 2つ以上あるリスト、辞書、タプルをまとめることができる。
“`Python
>>> a = [1,
【Python】任意の試薬と生成物で秤量計算
# 前提
複数種類の試薬(反応物)から生成物を作りたいときに、各試薬をどれくらいの質量で混ぜればいいのかを計算する必要がでてきます。例えば、### 生成物
|組成|質量|
|—|—|
|$ \mathrm{La} \mathrm{O} _{0.5} \mathrm{F} _{0.5} \mathrm{Bi} _{1-x} \mathrm{Pb} _{x} \mathrm{S} _2 $|$\mathrm{2 \ g}$|### 試薬
|組成|分子量|
|—|—|
|$ \mathrm{La_2 S_3} $|373.99|
|$ \mathrm{Bi_2 O_3} $|465.958|
|$ \mathrm{Bi_2 S_3} $|514.14|
|$ \mathrm{Pb F_2} $|245.2|
|$ \mathrm{Bi F_3} $|265.975|
|$ \mathrm{Bi} $|208.98|としたときに、まず、
1.生成物に合う各試薬の分子数の比を求め、
2.分子数あたりの質量である分子量と生成物の質量を使って各試薬の質量を求める。
Python 例外処理の解説
# 例外とは
構文エラー(SyntaxError)以外のエラーを例外エラーとする。# エラーの種類
## [ZeroDivisionError]
「/」や[//]、「%」で計算する時に割る数が0だった時に起きる。
割る数が0でないか確認する。
## [NameError]
スペルミス、変数名ミスなどで名前が見つからなかった時に起きる。
スペルミスや変数名を間違えていないか確認する。
## [TypeError]
異なるデータ型同士での演算や関数での処理が行われた時に起きる。
データ型が間違っていないか確認する。
## [ValueError]
数値が適切でないときに起きる。(型は合っている)
数値を確認する。(引数とか)
# 書き方
* try →例外が発生するかもしれない処理
* except →例外が発生した後の対応方法
“`
try:
例外が発生するかもしれない処理
except 想定されるエラー名:
検証したい処理で、想定されるエラーが起きた時の処理
“`
## 例
“`
while True:
try:
x = int(in
神エクセルをHTMLに!Python編 その1
# はじめに
神エクセルとか、方眼紙エクセルとか、ネ申エクセルと言われる、デジタル化の弊害になっているやつを退治したい。いや、退治するよりも活用を図りたい。
過去の様式の蓄積を無駄にすることなく、デジタル化を進めるには、神エクセル職人によって作成された様式を、HTMLのフォームに変換できるようにすればいいのではないか?
以前、[神エクセルをHTMLのフォーム化するVBAマクロ](https://qiita.com/yoho/items/80f46d1f97ae99d4e970) について記事にしたのですが、
VBAの仕様がMacとwindowsで異なるところがあったり、MacではVBAの辞書機能が使えないらしいということがあったりして行き詰まっていました。この記事では、最終的には、phtyonのライブラリopenpyxlを使用して、神エクセルをHTMLのフォームに変換します。
完成イメージ:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595771/2976fb49-c
Python lambda解説
# lambdaとは?
無名関数のこと。
関数を短く書けて便利。
関数名がないので、何回も使いまわしたい関数には使わない。# 書き方
## 基本
“`
lambda 引数 : 処理
“`
## lambdaを使わない例と、使った例
### lambdaなし
“`
def example(x, y):
return x + y
“`
### lambdaで書いた場合
“`
lambda x,y : x+y
“`
関数名なしで、短く書ける
## lambdaの引数に値を入れる時
さっきの例のxとyに値を入れる時の書き方
“`
(lambda 引数:処理)(引数に入れたい値) と書くので、
(lambda x,y : x+y)(1,2)
となる
“`
Pythonのバージョン確認 for macOS
Pythonの環境構築のため
macにあるPythonのバージョンを確認
macOS 10.14
ターミナルappで
`$ python –version`
結果
`Python 2.7.16`IDEには3.10.6とあるため
ターミナルappで
`$ python3 –version`
結果
`Python 3.10.6`と確認。
単純にPythonとだけいれるのでなく、バージョンの番号をつけてコマンド実施が必要と認識。