Python関連のことを調べてみた

Python関連のことを調べてみた
目次

pythonのclassとアトリビュート

# 変数と関数
pythonの全てのものはオブジェクト

変数x:オブジェクトのインデックス(別名、お前に名前をつけてやる)
関数f(x):pythonオブジェクトを受け取ってpythonオブジェクトを吐き出すpythonオブジェクト(入力を受け取って出力を出すpythonオブジェクト)

# 構造体
pythonにはない
強いて言えばdataclass

構造体:変数の集合に名前を付けたもの
複数の変数が並んでる

“`python
@dataclass
class Student:
name: string
age: int
major: string
address: string
birthday: int

# 使用例
student_hina = Student(“hina”, 20, “sleep”, “Waseda”, 20040323)
“`

# class
class:ひな型
構造体の中である処理をしたい!関数の機能を取り込んだ
関数と構造体がくっついているようなイメージ

“`python
class Stud

元記事を表示

Co Drone EDUの紹介

# **はじめに**
プログラミングドローンは、興味を持っていたので、私は、2024年の1月に「Robolink Basecamp」という無料オンライン学習サービスを元にPythonを使ってCoDroneEDUを飛ばしたりしました。
現在、Blocklyを使って、飛ばしたりしています。

# **Co Drone EDUとは?**
## **Robolink社が開発したPythonとBlocklyのみに対応した屋内専用の教育プログラミングドローンの事。**

# Co Drone EDUの特徴
会社名:Robolink
拠点: アメリカ カリフォルニア州 サンディエゴ
飛行時間: 7~8分
重量: 57g(100g未満)
バッテリー充電時間: 60分
対応プログラミング言語: Python, Blocklyのみ
7つのセンサー: 加速度センサー、ジャイロセンサー、正面距離センサー、
  底面距離センサー、気圧センサー、オプティカルフローセンサー、カラーセンサー
その他:音やLEDライトの設定
技適マーク:2.4GHZ対応(※HDL社での購入のみ)

#

元記事を表示

WSL2環境下の複数ロボットとエレベータの連携をシミュレーションできる環境で遊んでみる 軌跡プロット編

# 1. はじめに
[WSL2の環境下において、Traffic-Editorを使って複数ロボットとエレベータの連携をシミュレーションできる環境を構築してみた](https://qiita.com/bebebefu/items/32dcb43db1213e1a00e0)の記事では、WSL2の環境下において、Open-RMFとtraffic-editorを使ってエレベータ付きの2階建ての建物環境を構築して複数台のロボットを動かすことができました。
ただ、それだけだとロボットが単に動いているだけで、なんの情報も取得できず面白くありません。
そこで今回はロボットの現在地を時系列データとして取得して、3次元プロットを行うことでロボットの軌跡を可視化することに取り組みたいと思います。

# 2. 実行環境
– CPU: CORE i7 7th Gen
– メモリ: 32GB
– GPU: GeForce RTX 2070
– OSと構築した環境: Window11でWSL2にUbuntu22.04をインストールした環境
– ROS2: Humble
– Open-RMFの構築環境:[WSL2の環境

元記事を表示

【AWS】IAMポリシーで設定できるアクションがいくつあるか、あなたは知っていますか?


# はじめに
皆さんはIAMポリシーで設定できるアクションがいくつあるかご存じですか?
私は知らないのですが、[例のドキュメント](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)を見ながらIAMポリシーの権限設定を検証しているときふと、一体いくつあるのかなぁと気になりました。

という訳で今回はIAMポリシーで設定できるアクションの総数を調べてみました。

* [例のドキュメント](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)

:::note warn
本記事の調査結果は2024/3/22時点のものです。
今後AWSのアップデートによって変動する点についてはご

元記事を表示

20220323 その1 Pythonの面白い記事、 Linux(Ubuntu on WSL2)でコマンドラインタイマー

### python

#### おもしろい記事:「a is not None」 と 「not a is None」の違い
[「a is not None」と「not a is None」は違うのか #Python – Qiita](https://qiita.com/junjis0203/items/25959074a8b642db7368)

### Linux(Ubuntu on WSL2)、コマンドラインでタイマー

お湯を沸かしている3分をはかりたい、キッチンタイマー使えよ、という気もするが足が生えているのかしょっちゅうどこかに行くので探すのが面倒だし、接触不良を(アルミホイルで)直し直し使ってるのでたまにボタン押しても反応が鈍い
高校生のときに買った100均のをこんなに長年に使っている人も少ないだろう😤

参考:
* [Linuxでアラームを設定する方法](https://ja.linux-console.net/?p=10196)
* [Linux Alarm Guide: How to Set Your Reminders or Wake-up Times](https

元記事を表示

Gemini API サンプルコード

“`
import os

import google.generativeai as gemini
from dotenv import load_dotenv
from pathlib import Path

# .env ファイルを読み込む
load_dotenv()
# Gemini API キーを設定
gemini.configure(api_key=os.getenv(“API_KEY”))

# モデルを準備
model = gemini.GenerativeModel(“gemini-pro”)
response = model.generate_content(“鯖の塩焼きの健康効果を教えてください。”)
print(response.text)
# プロンプトに画像を使用するためのモデルを準備
model = gemini.GenerativeModel(“gemini-pro-vision”)

img = [
{
“mime_type”: “image/png”,
“data”: Path(

元記事を表示

メール送信プログラム

“`send_mail.py
import smtplib
from email.mime.text import MIMEText
import argparse

# コマンドライン引数の処理
parser = argparse.ArgumentParser(description=’Send emails via SMTP on port 25 with optional TLS.’)
parser.add_argument(‘–tls’, action=’store_true’, help=’Enable TLS.’)
parser.add_argument(‘–num-emails’, type=int, default=1, help=’Number of emails to send. Default is 1.’)
args = parser.parse_args()

# SMTPサーバーの設定
smtp_server = “smtp.example.com”
port = 25 # ポート25を固定で使用

sender_email = “sender@ex

元記事を表示

アポロニウスの円の軌跡とPython

# はじめに
二定点からの距離の比率が等しいという条件を課した場合の軌跡は円になる。これをアポロニウスの円というのだが、今回はこのことについて、証明したのち、Pythonを用いてシミュレーションをしてみる。具体的に前半は、ユークリッド距離の定義式を用いて証明について議論し、後半ではPythonの複素数機能を用いてプログラムを実装することとする。
# アポロニウスの円
## 導入
定点A,Bに関してAP:PB=一定という条件を課したときに点Pの軌跡は円または直線(AP=BPのとき)を描くというものである。
## 証明
$A(a,0),B(b,0)$として$P(x,y)$とした場合、APとBPは以下のようにして表すことができる。

“`math
AP=\sqrt{(x-a)^2+y^2}
“`
“`math
BP=\sqrt{(x-b)^2+y^2}
“`

したがって、Cを定数とした場合、

“`math
\frac{AP}{BP}=C
“`
が成立することから、

“`math
\frac{AP^2}{BP^2}=C^2
“`

ゆえに、AP,BPを代入すると以下のよ

元記事を表示

stable-diffusion-webui The NVIDIA driver on your system is too old 対策 windows

## stable-diffusion-webuiを更新したらNVIDIA driverのバージョンが違うので怒られた
windows環境。
“`
RuntimeError: The NVIDIA driver on your system is too old (found version 11070).
Please update your GPU driver by downloading and installing a new version from the URL:
http://www.nvidia.com/Download/index.aspx Alternatively,
go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.
“`

書いてあることはお前のNVIDIA driverバージョンはversion 11070だから古いぞ
NVIDIA driverのバージョンをあ

元記事を表示

特定のページが更新されたら通知する仕組みを作ってみた

## はじめに
RSS対応のサイトだと、更新情報追いやすいけど、RSS非対応のページも追いたいよね。って人向けの記事です。
RSS対応しているサイトなら、RSSリーダーを使った方が早いです
また、Discordのチャンネルにも通知がしたかったので、メールとDiscord両方に通知を行っています。

Discord側にWebhook用のURLが必要ですが、本記事では紹介しません
参考サイトのZennの記事が細かく書かれていますので、そちらをご覧ください

なお、この仕組みは更新を検知したいサイトに確認リクエストを送ります。
高頻度で設定してしまうと、サーバーに負荷がかかる為、
**高頻度での設定**はしないようにお願いします

### 参考サイト
https://zenn.dev/lambta/articles/5edbda4ccb1ec6

https://qiita.com/Kalmari/items/bf07b8345054f4af605e

https://dev.classmethod.jp/articles/daily-check-for-non-rss-page/

##

元記事を表示

RDKitのログメッセージをコントロールする: SMILES Parse Error の解消法

### **user**:

ChatGPT先生、このエラーについて、何か知ってますか。

“`python
from rdkit import Chem

s = [‘c1ccccc1’, ‘-c1ccccc1c’, ‘c1c(cccc1’, ‘c1cccc’]

mol = []

for smiles_encoding in s:
try:
rdkit_mol_encoding = Chem.MolFromSmiles(smiles_encoding)
mol.append(rdkit_mol_encoding)
except:
rdkit_mol_encoding = None

print(mol)
“`

“`
[, None, None, None]

[22:43:58] SMILES Parse Error: syntax error while parsing: -c1ccccc1c
[2

元記事を表示

QR コードを簡単に作成する

Zenn と併用しているため、リンクのみです。

https://zenn.dev/sun_asterisk/articles/4b8488e913dbca

元記事を表示

ブラインド商法の欲しい景品を得るのに必要な試行回数

# はじめに

ブラインド商法の欲しい景品を得るのに必要な試行回数を計算しよう。

# 結論から

全$N$種のガチャから$n$種の景品を引くまでの回数の期待値は

$$N \times \left( 1 + \frac{1}{2} + \cdots + \frac{1}{n} \right)$$

である。

# 理論

## クーポンコレクター問題

全$N$種のブラインド商品から全種類を引くまでに必要な試行回数を求める問題は **クーポンコレクター問題**として知られています。同様の事例として、ちょっと前はコンプリートガチャなんかが社会問題になりましたね。ガチャの特定の種類をすべて収集すると別のアイテムがもらえるというシステムです。

https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%BC%E3%83%9D%E3%83%B3%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%BF%E3%83%BC%E5%95%8F%E9%A1%8C

ただ全種類ではなく、自分の推しが関連する商品だけ欲しいということもあるのではないでしょう

元記事を表示

Flake8でファイルの最大行を統制する方法がなかったのでプラグインを作ってみた

ESLintにはファイルの最大行を設定することができる。

https://eslint.org/docs/latest/rules/max-lines

Flake8にはない!!!
頑張って探してもなかった。だから作った。
Pythonは何もしないとコード肥大化しがち。こういうの使って減らしていかないと。

https://github.com/misogihagi/flake8-max-lines

## 使い方

他のFlake8プラグインのように使える。

“`console
pip install flake8 flake8_max_lines
flake8 {任意のpythonファイル}
“`

`–max-lines`で最大行を変えることができる。
デフォルトはESLintにあわせて300。

“`
flake8 –max-lines 500 {任意のpythonファイル}
“`

import ast
from typing import Generator, List, Tuple

MSG = “MXL001 File has too many lin

元記事を表示

QBC345備忘録【A~C】

## はじめに
[ABC345](https://atcoder.jp/contests/abc345)です!3完でした :sob:

## A – Leftrightarrow
### 問題
https://atcoder.jp/contests/abc345/tasks/abc345_a

### 考えたこと
前と後ろにのみ”<"と">“があって、”=”が1つ以上あれば”Yes”、それ以外は”No”です。

### コード
“`a.py
s = input()

if (
s[0] == “<" and s[-1] == ">”
and s.count(“<") == 1 and s.count(">“) == 1
and s.count(“=”) > 0
):
print(“Yes”)
else:
print(“No”)
“`

一行で書けそうだったので挑戦してみました。中身は同じです。
“`a_oneline.py
print(“YNeos”[not ((s := input())[0] == “<" and s[-

元記事を表示

Djangoで作成したプロジェクトをGitHubに公開する前の諸々

備忘録として

wsl Ubuntu-22.04使用

***

“`terminal
pip install python-dotenv
“`


“`setting.py
#Pathの下に
from dotenv import load_dotenv
import os
load_dotenv()
“`


.envファイル作成


settings.pyの”SECRET_KEY”をコピー

.envに貼り付け

“`.env
SECRET_KEY = #貼り付け#
# ” は不要
“`

“`settings.py
SECRET_KEY = os.environ.get(‘SECRET_KEY’)
“`

“`terminal
pip freeze > requirements.txt
“`

.gitignoreファイル作成
( 参考:https://qiita.com/anqooqie/items/110957797b3d5280c44f )
https://www.toptal.com/developers/g

元記事を表示

Pyenvとvenvを使ってPython環境を使い分ける方法

PyenvとvenvによるPythonの開発環境管理方法を使うと、バージョンごとに仮想環境構築など多彩な環境構築ができるようになります。

## Pyenv:Pythonバージョン管理ツール
PyenvとはPythonのバージョン管理ができるコマンドラインツールです。
Pythonは別のバージョンを複数同時にインストールしておくことができます。複数インストールされているバージョンをひと目で確認したり、インストール・アンインストールやバージョンの切り替えが簡単にできるコマンドになっています。

### Pyenvのインストール
Pyenvのインストールは、MacであればHomebrewからが簡単。
“`bash
$ brew update
$ brew install pyenv

$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.zshrc
$ echo ‘command -v pyenv >/dev/null || export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.zshrc
$ echo ‘eval

元記事を表示

Pythonで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみた

# 概要

Pythonで「文字列の先頭や末尾などの位置にマッチするパターンを記述する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index12.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re
pattern = re.compile(r’^Red’)
print(bool(pattern.search(‘Red Table’)))
print(bool(pattern.search(‘Reduce speed’)))
print(bool(pattern.search(‘Border Color is Red’)))

import re
pattern = re.compile(r’\ARed’)
print(bool(pattern.search(‘Red Table’)))
print(bool(pattern.search(‘Reduce speed’)))
print(bool(pattern.search(‘Border C

元記事を表示

Anime Recommendations Databaseのアニメタイトルを日本語化する

# はじめに
今回はAnime Recommendations Databaseというオープンデータの英語アニメタイトルを日本語のもの変換した方法(力技)と、実際に対訳に使えるJSONファイルを公開します。

## データセット
https://www.kaggle.com/datasets/CooperUnion/anime-recommendations-database

# 方法
ChatGPTにぶち込みました。時間がかかるので、一部はClaudeにも入れました。
GeminiとCopilotはプロンプロトが悪いのかうまくいきませんでした。

## 前準備
上記のオープンデータからタイトル一覧を取得し、titles.txtとして保存しました。
これをGPTに渡します。
“`python
titles = df_anime[df_anime[“視聴タイプ”]==”TV”][“タイトル”].tolist()
with open(“titles.txt”, “w”) as file:
for title in titles:
file.write(title

元記事を表示

PythonでExcelの表をHTMLファイルに変換する方法

Excelワークブックは一般的なスプレッドシート形式であり、データの組織化、分析、表示に広く使用されます。Excelファイルは通常、専用のドキュメントビューアで表示する必要があります。Excelテーブルをより互換性のある形式で表示したい場合は、HTML形式に変換して、さまざまなブラウザで直接表示することができます。また、ExcelファイルをHTML形式に変換すると、Excelテーブルをウェブページに簡単に埋め込んだり、直接ウェブページとして表示したりすることができます。本記事では、**Pythonを使用してExcelワークブックまたはワークシートをHTMLファイルに変換する方法**について説明します。

– **[Pythonを使用してExcelワークブックをHTMLファイルに変換する方法](#pythonを使用してexcelワークブックをhtmlファイルに変換する方法)**
– **[Pythonを使用してExcelワークシートをHTMLファイルに変換する方法](#pythonを使用してexcelワークシートをhtmlファイルに変換する方法)**
– **[Pythonを使用してEx

元記事を表示

OTHERカテゴリの最新記事