- 1. 競技プログラミングで使えるPython計算のTips
- 2. VSCode の拡張機能 Flake8 と autopep8 に pyproject.toml を読み込ませる
- 3. 文系SEがPythonエンジニア認定実践試験受けてきた
- 4. 絵文字を一文字ずつ処理する方法
- 5. Pythonでprintデバッグから卒業する【VSCode・CursorでPythonのデバッグ】
- 6. Anaconda(conda) / Python / PyPI(pip) コマンド比較
- 7. [Python3][Linux]画像サイズを一括変換する方法
- 8. ターミナル文字列出力時、かっこいいエフェクトを追加する
- 9. Openpyxl: シートのコピー
- 10. python-lambda-local を使って AWS Lambda 関数をローカル環境で実行する
- 11. Macでのpython-axolotl-curve25519インストール時のエラー対処
- 12. 【Python】Lambda Layerの作成方法
- 13. Anacondaで実行可能なPython(バージョン)の検証
- 14. メールログからFWにて怪しいIPをブロック
- 15. PLCとマイコンの接続で躓いたこと
- 16. Amazon Linux2023にpyenvを利用してpython3.12をインストール
- 17. ファイル形式を変換するデスクトップアプリ
- 18. Pillow: カラー画像を白黒に変換
- 19. Python3 株価データ取得
- 20. ABC355 with Python (A~D, F)
競技プログラミングで使えるPython計算のTips
# モチベーション
最近(今更)AtCoderを本格的に始めた者です。
AtCoder Beginner Contestで300~400点程度の問題をしっかり取れるようになることを目標に頑張っています。解けなかった問題に対して解説を読んで復習をするときに、
「この解説と同じような理論で実装してるはずなのにTLEになってしまう・・・」
ってことありませんか?筆者は滅茶苦茶ありました。
そこで、「実はこうすると早いんだよ」っていうTipsをここでまとめておきます。ほぼ筆者の備忘録用ですが皆さんの参考になれば幸いです。
## ビット演算
N個のものがそれぞれあるかないか、本当かウソか、真か偽かなどを扱う問題で$2^N$通りを全探索する場合などがあります。このとき、筆者はこんな面倒くさいコードを書いてしまっていました↓
“`python
lst = []
for i in range(2**N):
s = bin(i)[2:] # bin(2) = ‘0b10’
while(len(s) < N): s += '0' + s lst
VSCode の拡張機能 Flake8 と autopep8 に pyproject.toml を読み込ませる
VSCode の拡張機能 **Flake8**, **autopep8** では`settings.json`で各種設定が可能です
“`settings.json
{
“[python]”: {
“editor.defaultFormatter”: “ms-python.autopep8”
},
“autopep8.args”: [
“–aggressive”,
“–indent-size”,
“4”,
“–max-line-length”,
“119”,
“–ignore=E111, E114, E402, E501”
],
“flake8.args”: [
“–ignore=W293, W504, E111, E114, E402, E501”
]
}
“`しかし,Poetry のプロジェクトのような場合には`pyproject.toml`に設定を記載することが多いかと思います
その場合,
文系SEがPythonエンジニア認定実践試験受けてきた
# Python3エンジニア認定実践試験の体験記です。
2024年5月3週目にPython認定実践試験を受験して合格しました。
まだまだインターネット上にPythonエンジニア認定実践試験を受験したナレッジが少ないように感じました。
受験規約により試験問題を記載することは出来ませんが、私が受験した試験の感想を残し、これから受験する皆様の参考になればと思います。# 私のスペック
私は文系学部の大学を卒業した後、公務員を経て転職し、IT企業(SES)で6年目になります。IT業務の経歴は、インフラ系に身を置いた後、アプリ開発のプロジェクトを担当していました。
がっつりプログラミングする経験はありませんでした。
現在はRaspberryPiを用いたWeb Script業務をしています。当時は業務でPythonを触る機会はなかったのですが、プログラミングの力を付けたいと思い、当時人気言語として評判があったPythonを勉強し始めたのがきっかけです。
私は2年前にPythonエンジニア認定基礎試験を合格し、2023年秋にPythonエンジニア認定データ分析試験を合格しました。
今回会
絵文字を一文字ずつ処理する方法
# 結論
[emojiモジュール](https://pypi.org/project/emoji/)を使うと、できます。
“`python
import emoji
text=”👧🏻”
emoji.replace_emoji(text,replace=lambda e, data_dict:print(e,end=” “))
# 👧🏻
“`
# 解説一般的に、Pythonで一文字ずつ処理したい場合、これでいけます。
“`python
text=”ABCD”
[print(e,end=” “) for e in list(text)]
#A B C D
“`
しかし、ZWJ emojiが含まれている状態で行うとうまくいきません。
“`python
text=”👧🏻”
[print(e,end=” “) for e in list(text)]
# 👧 🏻
“`## 参考
https://carpedm20.github.io/emoji/docs/#non-rgi-zwj-emoji
Pythonでprintデバッグから卒業する【VSCode・CursorでPythonのデバッグ】
# はじめに
CやC++においてVSCodeの拡張でデバックを行ったことがあるのですが、Pythonでも簡単に導入できたので記事にしました。:::note warn
注意
VSCodeと書いていますが、実際にはCursorを使用しています。どちらでもほぼ同じ形で使用できると思います。
:::VSCodeのデバックを導入することで出来るようになること
1. 全ての変数の値がわかる
1. ブレークポイントを設定して、プログラムを途中で止めながら順番に確認する事ができる
1. print文を書かなくて良くなる# 導入
VSCodeの拡張機能をインストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085757/59b6d8e3-ce27-5050-653a-1834c9004f9d.png)
画面左側の「launch.jsonファイルを作成します」をクリックすると、今開いているプロジェクトのルートに`.vscode`ディレクトリと`launch.json`が作成
Anaconda(conda) / Python / PyPI(pip) コマンド比較
# 概要
Anaconda(conda) / Python / PyPI(pip) コマンドを比較しました。
###### 表1. コマンド情報
|コマンド|バージョン|備考|
|:–|:–|:–|
|conda|24.1.2[^1]|Anaconda|
|python|3.9.18[^2]|Python|
|pip|21.2.3[^2]|PyPI|
# Anaconda と Python コマンドの比較
###### 表2. Anaconda / Python コマンド情報
|用途|Anaconda ( conda コマンド)|Python ( python コマンド)|
|:-|:-|:-|
|仮想環境作成|\\$ conda create –name <仮想環境名> python=<Pythonバージョン番号>例)
\\$ conda create –name testEnvAna01 python=3.11
\\$ conda create –name testEnvAna02 python=3.6|\\$ pyt
[Python3][Linux]画像サイズを一括変換する方法
## 要 旨
Linux下においてPython3を使用して画像サイズを一括変換する方法について記述します。
## 実施要領
### 準備
作業用フォルダimage_resizeの作成
“`linux
mkdir image_resize
“`
作成したimage_resizeフォルダ内に入る。
“`
cd image_resize
“`仮想環境venv構築
“`
python -m venv .venv
“`
仮想環境のアクティブ化を実施
“`
source ./.venv/bin/activate
“`
画像処理に便利なPIL(Python Image Library)をインストールする。
“`
pip install pillow
“`
画像サイズを320×320に一括変換する処理を含ませたpythonコードを作成する。
なお変換可能な画像の型式は、png、jpg、jpegである。
“`python3:resize.py
from PIL import Image
import osdef resize_images(input_dir, output
ターミナル文字列出力時、かっこいいエフェクトを追加する
## はじめに
とにかくかっこいい見た目が好きなので、ターミナル・かっこいい・エフェクトというワードを見つけたので、やってみました。ターミナルの文字列出力にかっこいいエフェクトを追加できるライブラリ「TerminalTextEffects」
https://gigazine.net/news/20240529-terminal-text-effects/
## 環境
– WSL2(Linux-Ubuntu)
– python3が必要## TerminalTextEffectsインストール
“`bash:WSL2:Ubuntu
# アップデート
sudo apt update
sudo apt upgrade -y# pipxのインストール
sudo apt install pipx -y# terminaltexteffectsのインストール
pipx install terminaltexteffects# パスを通す
pipx ensurepath
“`ターミナルを再起動が必要
## ScreenFetchインストール
紹介されていた記事で使
Openpyxl: シートのコピー
file_a.xlsx のシート1を、file_b.xlsx にコピーする方法です
## プログラム
“`py:sheet_copy.p
#! /usr/bin/python
# —————————————————————
# sheet_copy.py
#
# May/31/2024
# —————————————————————
import sys
import openpyxl
from openpyxl.styles import Border, Side, Alignment, Font# —————————————————————
xlsx_in=sys.argv[1]
xlsx_out=sys.argv[2]
#
sheettitle = ‘コード一覧’wb1 = openpyxl.load_work
python-lambda-local を使って AWS Lambda 関数をローカル環境で実行する
# はじめに
Lambdaのプログラムをテストする際、毎回 Lambda 関数を更新して実行するのは面倒ではないですか?
そこで良い方法ないかなと調べていたところ、 **python-lambda-local** というツールを知りました。https://github.com/HDE/python-lambda-local
# 仕様
Python 3.7+
今回試した環境のバージョンは 3.9.6 でした。
“`bash:バージョン
$ python3 –version
Python 3.9.6
“`# インストール
pip でインストールすれば完了です。“`bash:インストール
$ pip install python-lambda-local
“`# オプション
使い方とオプションは以下になります。“`bash:使い方
$ python-lambda-local [-h] [-l LIBRARY_PATH] [-f HANDLER_FUNCTION]
[-t TIMEOUT] [-a ARN_ST
Macでのpython-axolotl-curve25519インストール時のエラー対処
#### 前置き
この前、MacBook Proでpython-axolotl-curve25519をインストールしようとしたら、エラーが出たので対処法を書き留めておく。
github: https://github.com/tgalal/python-axolotl-curve25519### エラー内容
“`
DEPRECATION: Loading egg at /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/python_axolotl-0.2.3-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330
Collect
【Python】Lambda Layerの作成方法
# Lambda Layerを作成したいがめんどくさい
Lambda LayerはAWS Lambdaに標準で用意されていないライブラリや自分で作成した関数などを取り込む際に利用します。
一見zipファイルを作成してアップロードするだけなんですが、いくつか落とし穴があります
– Amazon Linuxで作成する必要がある(場合がある)
– LambdaはAmazonLinuxで動いている
– macOSなどでインストールしたものがAmazonLinuxで動かない場合があるため
– 求められるディレクトリ構造が実はある
– apiでのzipアップロードはファイルサイズの制限があるなどなどで躓いたのでやり方をまとめておきます
## AmazonLinuxでのpython実行環境の用意
構築方法は別記事にまとめました。ローカル環境(macOSやWindows)でインストールしたライブラリをアップロードすると、動くときもありますが動かないときもあります。仮に動いたとしても、基本的にはAmazonLinuxで作成するほうが良いでしょう。
pythonはLambdaで使用す
Anacondaで実行可能なPython(バージョン)の検証
# 目的
Anaconda3[^1]で実行できるPythonのバージョンを検証してみます[^2]
[^1]:Anacondaとは、Anaconda社によって開発、配布されているPythonディストリビューションです
[^2]:検証モジュール:Anaconda3-2024.02-1-Linux-x86_64.sh# AnacondaとPyPIについて
バージョン違いのPython実行用環境を複数用意しようとした場合、Anacondaの方が簡単に環境構築できます。Anacondaをインストールするだけで、condaコマンドを使って異なるバージョンのPython実行環境を構築できます。一方、Anacondaと比較されることがあるPyPIで同じことを実施しようとした場合、手動でバージョン管理を行う必要があります。バージョン毎に公式サイトからPythonをダウンロードしてインストールしなければなりません。
# Anacondaインストール方法
###### インストール環境
* Red Hat Enterprise Linux 9.4
* Anaconda3-2024.02-1-Lin
メールログからFWにて怪しいIPをブロック
# メールログから怪しい国外IPアドレスを取得しブロックする方法
このスクリプトは、メールログから取得したIPアドレスをファイアウォールでブロックします。
日本国内のIPアドレス範囲に該当するIPは除外し、それ以外のIPをブロックします。## 1. Pythonスクリプト (`/root/fw_script/deny_ip.py`)
“`python
“””
deny_ip.py
このスクリプトは、メールログから取得したIPアドレスをファイアウォールでブロックします。
日本国内のIPアドレス範囲に該当するIPは除外し、それ以外のIPをブロックします。
“””import ipaddress
import subprocess
import datetimelog_entries = []
def log(message):
print(message) # コンソールに出力
log_entries.append(message) # ログエントリに追加# 日本のIPアドレス範囲を読み込み
with open(‘/root/fw_script/
PLCとマイコンの接続で躓いたこと
# はじめに
こんにちは、株式会社COSMでインターンをしている東京大学工学部4年の前澤です。
今回、製造業のDXを推進するCOSM IoT Gateの開発にあたり、PLC(キーエンス製KV-8000シリーズ)とマイコン(ラズベリーパイを使用)を接続し、センサデータを取得しました。その方法、および苦戦したことの解説をします。
## COSM IoT Gateについて
工場内の機械についている、センサを通してあらゆるデータを取得し、その情報をオンラインで一元管理を可能にし、DXを推進するプラットフォームです。
具体的には、センサ情報をリアルタイムで監視し、さらにそれらを時系列データとしてクラウド上で保存、機械学習での分析を行うことで、故障や部品の交換タイミングの予測を行います。
[COSM IoT Gate](https://gate.cosmcorp.jp/)
## 背景
上記で解説したCOSM IoT Gateの最も予想されるユースケースは、工場内のマシンの情報を取得し、管理するというものです。
ここで重要になるのが、PLCからのリアルタイムでの情報の取得です。
Amazon Linux2023にpyenvを利用してpython3.12をインストール
# pyenvのinstallのドキュメントがややこしい
基本はpyenvのドキュメントを見れば良いのですが、ぱっと理解できずまとめておきますhttps://github.com/pyenv/pyenv?tab=readme-ov-file#getting-pyenv
## EC2のスペック
最初スペックがいらないのでt3.nano、EBS8GBでインストールしようとしたのですがメモリ・ストレージ(tmpディレクトリ)が足りなくてインストールできなかったので今回はt3.small,16GBでインストールしています。## 手順
1\. 事前に必要な開発ツールをインストール
“`shell
# pyenvに必要なものをinstall
sudo yum groupinstall “Development Tools”
sudo yum install -y bzip2-devel ncurses-devel libffi-devel readline-devel openssl-devel zlib-devel
“`2\. pyenvのインストール
“`shell
cu
ファイル形式を変換するデスクトップアプリ
# ファイル形式を変換するデスクトップアプリ
### はじめに
備忘録です。数年前に作ったコードで、とても汚いので戒め的な意味もあります。## ソースコード
“`python:henkan_meijin.py
import os
import wx
import time
import ffmpy
import ffmpeg
j1 = os.path.dirname(os.path.abspath(__file__))class FileDropTarget(wx.FileDropTarget):
def __init__(self, window):
wx.FileDropTarget.__init__(self)
self.window = window #ファイルをドロップする対象def OnDropFiles(self, x, y, filenames):
for file in filenames:
self.window.box.SetValue(file)
Pillow: カラー画像を白黒に変換
## プログラム
“`py:convert_to_gray.py
#! /usr/bin/python
#
# convert_to_gray.py
#
# May/28/2024
# ——————————————————————–
import sys
from PIL import Image
# ——————————————————————–
sys.stderr.write(“*** 開始 ***\n”)
file_in = sys.argv[1]
file_out = sys.argv[2]
sys.stderr.write(file_in + “\n”)
sys.stderr.write(file_out + “\n”)
#
aa_jpg = Image.open(file_in,’r’)gray_img = aa_jpg.convert(‘L’)
#
gray_img.save
Python3 株価データ取得
### 概要
“`
株価データを取得しグラフを作成しExcelファイルに出力する。
“`### 詳細
“`
1
必要なライブラリをインポート。データのダウンロード(yfinance)、データの操作とグラフの作成(matplotlib.pyplot)、Excelファイルの作成(openpyxl)が含まれます。2
yfinanceを使用して、指定した銘柄コード(この場合はトヨタの”7203.T”)の過去6ヶ月間の株価データをダウンロードします。3
ダウンロードしたデータをコンソールに表示します。4
matplotlib.pyplotを使用して、ダウンロードしたデータから終値の折れ線グラフを作成し、画像ファイル(graph.png)として保存します。5
openpyxlを使用して新しいExcelワークブックを作成します。6
ダウンロードしたデータをExcelの”Data”シートに書き出します。7
作成したグラフの画像を新しい”Graph”シートに追加します。8
作成したExcelワークブックをtoyota_stock_data.xlsxという名前のファイ
ABC355 with Python (A~D, F)
ABC355のA~D, F問題をpythonで解説していきます。筆者はA-Dの4完でした。
# A – Who Ate the Cake?
## 問題
高橋君のケーキが誰かに食べられてしまいました。ケーキを食べた犯人の候補として、人 $1$、人 $2$、人 $3$ の三人が挙げられています。犯人の目撃者はりんごさんとすぬけくんの二人がいます。りんごさんは人 $A$ が犯人でないことを覚えており、すぬけくんは人 $B$ が犯人でないことを覚えています。
二人の記憶から犯人を一人に特定できるかどうか判定し、特定できるならばその人の番号を出力してください。
https://atcoder.jp/contests/abc355/tasks/abc355_a
## 考察
人1から人3まで順に、無実リストに入っているかチェックします。入っていない人をリストに入れていき、最終的にその長さが1より大きかったら怪しい人が複数いるため特定不可の-1、そうでなればそのリストに入っている人を答えとして出力すればよいです。## コード
“`python:A.py
ans = []
candi