Python3関連のことを調べてみた2023年01月02日

Python3関連のことを調べてみた2023年01月02日

ラズパイで施錠通知を作ろう!

## 突然何を思い立った!?
いや、自分旅行出かけるの好きなんですよ。別に長期連休でなくても小旅行したりと家を空ける時間が長い日があるわけです。ふと思うわけですよ、しかも出発して10分くらい後に。あれ、鍵かけたっけ??それはそれは不安に駆られるわけです。でも戻って確認したところで鍵かかってる訳ですよ。何が気になるって今鍵の状態どうなってるんだろ?が分からないから気になるんですよね。だったら自分だけに届く施錠通知があればいいんじゃね?なんなら高齢でちょっとオトボケ入った両親も使えたら便利じゃね?ってことで。

## 作りたいもの
・鍵を掛けたら鍵の状態を撮影、「鍵を掛けた!」とテキストでLineに通知を飛ばしたい

## 何で作りますか
取り敢えず家に転がっていた二つ
・ラズパイzero W
・ pi camera
・マグネットセンサ
これさえあればGPIOでマグネットセンサのON・OFFで鍵の状態を検知、鍵の状態が変化したらpi cameraで写真を撮るという作りたいものが達成できそう。

## 開発環境
OS:Windows 11 Pro 21H2
Raspberry Pi Zero

元記事を表示

【体験記】非プログラマーがRaspberry piにウェブアプリを実装し、化学系企業の社内に導入した件

# この記事は?
化学系企業に勤める平社員が、独学で学んだpythonと少しのhtmlの知識でWebアプリを開発し、社内に導入するまでの物語である。

記事の目的は以下の通りです。
* 自分が実装したことや工夫した点を整理すること。
* pythonを学習したけど、どうやって共有しようかと困っている人にヒントを与えること。

# 目次
1. [背景](#-背景)
1. [開発したWebアプリ](#-開発したWebアプリ)
1. [構想](#-構想)
1. [実装](#-実装)
1. [反響](#-反響)
1. [所感](#-所感)
1. [今後の予定](#-今後の予定)

# 背景
元々pythonを業務効率化のために勉強し、自分一人のために活用していましたが、それでは勿体ないと考え、社内の人達に利用してもらおうと思ったのがきっかけです。
作成したスクリプトのうち、社内で共有しようと思ったのが**ベイズ最適化**でした。ベイズ最適化とは、ブラックボックス関数 (関数式が不明)の大域的最適解を求める手法です。実験によって得られた値からブラックボックス関数を予測し、良好な結果を与えるxを

元記事を表示

にゃんこスイーパー

Python+Cursesで、にゃんこスイーパーを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、chmod +x nyankosweeper.pyとして、実行権を付けて動かして下さい。

$./nyankosweeper.py [number of cats]として、動かします。
[number of cats]は、省略できます。省略すると、猫の数は58個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題ないですが。

“`nyankosweeper.py
#!/usr/bin/python3

import curses
import random
import locale
import select
import sys

xsize = 40
ysize = 23
vvram = [[0 for i in range(ysize)] for j in range(xsiz

元記事を表示

マルコフ連鎖っぽいので発音から可愛い言葉を作る

## はじめに
なんとなく、音の感じが可愛いなと思う単語があると思います。
そのような意味のない単語を新しく生成(創造)することはできないかと模索した話です。

## 可愛い単語
可愛い言葉(=可愛い単語)を定義するのは難しいですが、ここでは発音した時の音の感じが可愛い時、可愛い単語だと定義します。

新しい言葉をどのようにして生成しようかと考えた時に、文章を生成することができるマルコフ連鎖から着想を得て、発音ベースでマルコフ連鎖をしてみたらどうだろうかと思いました。
そこで、ここでは発音をマルコフ連鎖して可愛い単語を生成してみたいと思います。

### マルコフ連鎖による文章の生成とは
マルコフ連鎖とは、現在の状態から確率を用いて次の状態を決定する連鎖のことです。
マルコフ連鎖では、文章の集合からある単語に対して各単語が来る確率をあらかじめ学習し、その確率を元に現在の単語から次の単語をもとめることによって文を生成します。
マルコフ連鎖自体に関する詳しい説明は[マルコフ連鎖(Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%8

元記事を表示

HHKBプログラミングコンテスト2022Winter(AtCoder Beginner Contest 282) A~C問題(自己流解法)

この記事は2022年12月17日に行われたHHKBプログラミングコンテスト2022Winter(AtCoder Beginner Contest 282)のA,B,C問題の解法を自分なりに解説してみた記事になる。

## コンテスト:[HHKBプログラミングコンテスト2022Winter(AtCoder Beginner Contest 282)](https://atcoder.jp/contests/abc282)
### [A問題:Generalized ABC](https://atcoder.jp/contests/abc282/tasks/abc282_a)
– 問題文
整数 K が与えられます。
英大文字を A から昇順に K 個繋げて得られる文字列を答えてください。
“`
K = int(input())
ans = ”
# chr関数は65~90をA~Zに変換する
for x in range(65,65+K):
#文字列連結
ans += chr(x)
print(ans)
“`
Chr関数についてはこちら
https://www.tip

元記事を表示

pndas.DataFrame.queryを高速化したい

# 結論
関数を使用せず直接条件を記述したほうが、`query`を使用するよりも処理速度が速い
“`python
for i in range(0, 100):
df_iris[df_iris[“sepal length (cm)”] >= 5]
“`
# 背景
`query`を使用した処理を作っていたが、処理時間が長かったので短縮できないか検討してみた。

# 環境
| 項目 | 情報 |
| —- | —- |
| OS | Windows 10 |
| Python | 3.9.7 |
| pandas | 1.3.4 |
| sklearn | 1.1.3 |

# 速度比較
## 事前準備
“`python
import time
import pandas as pd
from sklearn.datasets import load_iris

# irisのデータセットを準備
data_iris = load_iris()
df_iris = pd.DataFrame(
data_iris.data,
columns=data_i

元記事を表示

Django REST FrameworkのBasic認証

# 概要
Django REST FrameworkでBasic認証を行う方法を紹介します。

## Basic認証とは?

ベーシック認証(Basic認証)とは、Webサイトの特定の領域、つまりページやファイルにアクセス制限をかけることができる認証方法の一つです。
ベーシック認証をかけると、認証をかけたWebサイトにアクセスしようとしたとき、認証ダイアログが立ち上がり、ユーザー名とパスワードの入力が求められます。

### DRFのBasic認証のドキュメント

https://www.django-rest-framework.org/api-guide/authentication/#basicauthentication

## GitHubリンク

サンプルのソースをGitHubで公開しています。

https://github.com/ryo-keima/drf-authentication-demo

# 環境

## 各種バージョン
– macOS Monterey 12.4
– Apple M1 Max
– Python v3.10.9
– Django v4.1

元記事を表示

Pythonの勉強

# 目的
Pythonの知識を習得するため、知識を蓄積していく

# 内容
– 辞書型とリスト型の使い分け
辞書型では、キーで検索できるため、キーに対応した値を出力できる
一方、リスト型では、キーで検索できない

“` Python
#リスト型
l = [
[‘apple’, 100],
[‘banana’, 200],
[‘orange’, 300],
]

#辞書型
fruits = {
‘apple’: 100,
‘banana’: 200,
‘orange’: 300
}
print(fruits[‘apple’])
“`
“`
#出力結果
100
“`

元記事を表示

【AtCoder】ABC254 のA,B,C,D,E における Python解説

ABC 254 のA,B,C,D,E問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑色 882](https://atcoder.jp/users/tsuru1471)
20221231 現在

# 目次
[はじめに](#はじめに)
[A.Last Two Digits](#alast-two-digits)
[B.Practical Computing](#bpractical-computing)
[C

元記事を表示

【tkinter】チェックボックスにチェックマークが表示されない時の対処法

## 前置き
Tkinterでチェックボックスの背景色(bg)を変更したらチェックマークの表示がされなくなった!
そんなトラブルの対処法を紹介していきます。

## 表示されない場合のコード
下記のコードで実行した場合、チェックボックスにチェックの表示がなくなります。
“`Python:exsample.py
# ↑省略
bln = tk.BooleanVar()
bln.set(False)

chk = tk.Checkbutton(root, variable=bln, text=”test”, bg=”#000000″, fg=”#ffffff”)
chk.pack()
# ↓省略
“`
## 原因
チェックマークの色を指定していないことが原因です。
つまり白いボックス内に白くチェックマークが表示されているため、何も表示されていないように見えるだけなのです。

## 対処法
「tk.Checkbutton」のオプションである「selectcolor」を使用します。
bgやfgと同じような記述で問題ありません。
“`Python:exsample.py
bln = tk.B

元記事を表示

RedSpicaWS-7 Load to cocoa

## 問題

https://mojacoder.app/users/RedSpica/contests/RedSpica-Winter-Selection/tasks/6

## 方針
スタート地点→商店→スパークリング黒ココアをゲット→スタート地点、の流れ。

world1: まだ商店に到達していない世界

world2: 商店には到達したけど、スパークリング黒ココアはゲットしていない世界

world3: 商店に到達してるし、スパークリング黒ココアもゲットしてる世界

の3つの世界を作って、商店のある地点はworld1→world2にいける長さ0の道を、スパークリング黒ココアのある地点はworld2→world3にいける長さ0の道を作る。

ダイクストラ法でがんばります。

world3の話をしてるときにworld1の辺の話をしたりしてるけど、計算量的に間に合うでしょって投げたらACだったのでokということで!!!!

## ACコード

“`python
from heapq import heappop, heappush, heapify

# スタート位置s,

元記事を表示

正月休みにmnistを使って手書き数字認識をしてみた

## はじめに
寝て食べて仕事が終わったら食べて寝るおっさんです。
冬眠前の正月休みにmnistを使って手書き数字認識アプリを作ってみる奮闘記です。

## なぜ手書き数字認識
AIやらDXやらRPAやら、「よく分からんが便利そうだがら活用せよ」とおっさんがおっさんに「時代の波に乗り遅れるな」といわれる世の中になりました。

何から手をつけていいか分からない中、手書きの検査結果がデータ化できれば便利という流れになりました。

OCR機能を持ったソフトや装置は多々ありますが、手書き文字をサポートをしてほしいとシステムや業者の方にお願いするとムニャムニャ言いくるめられてしまうことがありました。
ある程度知識を持った人でも、認識率等の問題から自信をもっておすすめとはならないようです。

ならば、数字認識という狭い範囲のAIアプリを作ることでAI作成の基礎を学び、今後につながるヒントが得られるのではと考えました。

## mnistを使う理由
Aidemyで丁寧に説明されており、おっさんでもある程度理解できたことです。
また、
>MNISTデータベース(英: MNIST database, M

元記事を表示

知らなかったPython3の言語仕様まとめ

他の言語とちょっと違う・・・・というのを中心に個人用のメモとして残そうと思います

[オライリーの入門 Python 3を参照しています](https://www.amazon.co.jp/dp/4873117380/)
[Python3 公式ドキュメント](https://docs.python.org/3/contents.html)
## データ型

Pythonでは、ブール値、整数、浮動小数点数、文字列、データ構造(※1)、関数、プログラムもすべてオブジェクトとして扱われる

:::note warn
プリミティブ型が存在しないので、全て値の参照を保持する
複製したいときには注意が必要である
:::

|種類|データ型|
|—|—|
|数値型|[int](https://docs.python.org/3/library/stdtypes.html?highlight=int)|
|数値型|[float](https://docs.python.org/3/library/stdtypes.html?highlight=float)|
|複素数型|[complex](h

元記事を表示

【Qiita API】Qiita投稿記事の総閲覧数知りたくない?

## はじめに
どうもこんにちはもきお([@mokio_50](https://twitter.com/mokio_50))です。実務でスクレイピングやデータ分析に触れたので、なんかデータ取ってきて取得したものを分析してみたい欲にかられました。

そこでふと思ったのが、自分がこれまで投稿してきた記事の総閲覧数とかってパッとみる事できなくね?総閲覧数ってどのくらいなんだろう?と調べてみたくなりました。

なので今回は総閲覧数をPythonを使用し取得する実装を書き残しておきたいと思います。

## 実装方法
最初はスクレイピングしないと取得できないかなーと思っていましたが、調べてみるとQiitaさんが正式にAPI提供してくれているではありませんか!!ドキュメントも分かりやすく書かれています。さすがQiitaさん!

https://qiita.com/api/v2/docs

あとはこのAPIにリクエストを投げて、返ってきたjsonデータを可視化すれば良さそうです。Qiita API使用している良さそうな記事ないかなーと思っているとまさに自分がやりたい事を記事にしていただいてました。あり

元記事を表示

python、pip関連のメモ書き

#### pip listとpip freezeでパッケージ一覧表示と違いについて

pythonのpipでインストールしたパッケージとバージョンを一覧表示する場合、pip listかpip freezeでできます。

“`
$ pip list
$ pip freeze
“`

両者の違いは、出力形式にあるようです。

##### 参考サイト

・[pip listとpip freezeの違い](https://it-jog.com/py/piplistfreeze)
・[Python, pip list / freezeでインストール済みパッケージ一覧を確認](https://note.nkmk.me/python-pip-list-freeze/)

元記事を表示

AtCoder Beginner Contest(ABC) 283 – Pythonでリアルタイム参加結果と内容整理

# 1. 前書き
AtCoderBeginnerContest(ABC)の参加結果と内容の整理、および外部の解説記事を参考にした上で、自分なりに解法を整理していきます。
使用言語はPythonで行きます。本業ではJavaかRubyonRailsユーザーですが、計算速度の問題であったり、トレンドに乗っておくという意味でも(こちらが大きい)、Pythonに慣れていきたいと思います。

# 2. コンテスト内容
– コンテスト名
– AtCoder Beginner Contest 283
– 開催日時
– 2022/12/24(土) 21:00 – 22:40
– 実施区分
– リアルタイム参加

# 3. 結果
|区分|結果|所要時間|実行時間|
|:–|:–|:–|:–|
|A問題|AC|2:45|24ms|
|B問題|AC|8:10|463ms|
|C問題|AC|34:58(1)|202ms|
|D問題|AC|95:07(3)|159ms|

# 4. 解説

## 4-1. A – Power

### 4-1-1. 問題文
整数 A,B が与えられ

元記事を表示

Microsoft Azure: 秘密鍵を使ってサービスプリンシパルの認証を行う

Microsoft Azure で、秘密鍵を使ってサービスプリンシパルの認証情報を作成するコードを紹介します。 サービスプリンシパルに証明書を登録した場合は秘密鍵を使って認証できます。
さらに、その認証を利用して、 Azure Storage Account のコンテナ一覧、ファイル一覧を行なってみます。

## 環境

* Python 3.10.8
* pipでインストールしたもの
* azure-identity 1.12.0
* azure-storage-blob 12.14.1

## 認証情報を作成するコード

秘密鍵を使って認証情報を作成する場合は、 `azure.identity.CertificateCredential` を使います。
`CertificateCredential` のパラメータとなる `client_id`, `tenant_id` はサービスプリンシパルのページからわかります。

“`python
import azure

config = {
‘client_id’: ‘XXXXXXXXXXXXXXXXXX

元記事を表示

【入門】ソケット通信

# はじめに
普段何気にWebサイトを見たりする際に、実際にどのような通信が行われているのか意識したことはない、、、ブラックボックスとして意識の外に追いやっている方が多いのではないかと思います、

ネットワークエンジニアは、プロトコルの通信の仕組みはある程度理解している。
しかし、実際に作ってみようとしても、「あれ、、そんなのできるのか、、」となりました。

そこで、ネットワークの基礎的な通信であるソケット通信についてまとめて、実際に再現してみました。

# この記事の対象者
– ネットワーク初心者で、通信の基礎を学習したい
– 自分でソケット通信を再現してみたい
– ネットワークエンジニアなりたての初学者

# 環境
– Visual Studio Code
– Python 3.9.7

環境が無い方は以下を参考にして、準備してください

https://docs.microsoft.com/ja-jp/training/modules/python-install-vscode/

# 通信情報の取得
socketをimportすることで、通信の情報が取得することができます。
`

元記事を表示

ボイチャ録音できる!DiscordBotの開発

# はじめに
`Discord Bot作るならPython一択だよなぁ↑`という思考の元(?)Discord Botを開発されている皆さん、録音機能を実装したくなったことありませんか?

私が調べた限りでは、録音機能の実装方法を紹介をしている記事は少なく、数少ない検索結果の中にあったとある記事を読んでみましたが、DiscordのAPIを直接操作しているようで、難易度が高いように感じました。
しかし、Pycordというライブラリを使うことで、DiscordのAPIを直接操作しなくても簡単に録音機能を実装できちゃいます!

そんなわけで、今回はボイチャの録音ができるDiscord Botを作ってみたいと思います。
それでは早速作っていきましょう!

:::note warn
この記事はある程度Pythonが扱えることを前提とした表記・表現等があります。予めご了承ください。
:::

### 実行環境
– OS: `Ubuntu Server 22.04`
– Python: `v3.10.8` (Anaconda)
– pycord: `v2.3.2`
– ffmpeg: `v4.

元記事を表示

PythonであるLambda関数から別のLambda関数を呼び出す

最近あるLambda関数から別のLambda関数を呼び出す処理をする際に少し調べたのでメモ。

# 環境

| ランタイム | Python 3.9 |
| — | — |

# 今回の想定ケース

特定のLambdaから別のLambdaをまるごと呼び出す処理を想定。
今回は、以下の`testFunction01`から`testFunction02`を呼び出すような処理を実現していく。

“`python:testFunction01
def lambda_handler(event, context):
print(‘[testFunction01] testFunction01’)
“`

“`python:testFunction02
def lambda_handler(event, context):
print(‘[testFunction02] Called by testFunction01’)
return {‘message’: ‘called by testFunction01’}
“`

# 実現方法

基本的には[inv

元記事を表示

OTHERカテゴリの最新記事