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

Python3関連のことを調べてみた2023年10月11日
目次

【pykakasi】pykakasiをpyinstallerでexe化しても使えるようにする

# pykakasi…exe化するとエラーがでる
pythonの状態で動かしているとpykakasiが動くのにexe化するとファイルが見つからない的なエラーが発生して動かなくなる。exe化した状態でも動かせるようにできたので、備忘録として残しておく。

# 原因
エラーが発生する原因はpykakasiが*.dbファイルを読み込んでいるが、そのパスに__name__が使われていることである。下にパスを取得する部分のプログラムを示す。
“`python3:
class Configurations:

data_path = pkg_resources.resource_filename(__name__, “data”)
jisyo_hepburn_hira = “hepburnhira3.db”
jisyo_passport_hira = “passporthira3.db”
jisyo_kunrei_hira = “kunreihira3.db”
jisyo_itaiji = “itaijidict4.db”
jisyo_kanw

元記事を表示

現在ニートを名乗っているフリーター23歳による入茶記事

# ABC233で入茶達成しました!!!
参加数24回での入茶で凡人による入茶記事なので、
僕に似たスペックの人には少しは参考になると思います。

![スクリーンショット 2023-10-09 11.20.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664972/7a4f4d54-c5b1-0449-294f-f5ccb26ef9dd.png)

# スペック紹介
## 最終学歴: 高校卒
最終学歴は高卒ですが、
大学受験の勉強(私立文系)はかなりしていたので、勉強はそこそこできていました。
センターや模試などでは英語7割,国語7割,世界史8割ぐらいでした。

勉強自体に苦手意識はないです。

## 勉強: 数学はどの程度できた?
高校2年生まで理系だったので1Aに関してはそこそこできましたが,
2B,3に関しては全くできません。
模試(進研模試です)では1Aは6割ぐらいだったと思います。
2Bに関しては記憶がないです。多分5割ぐらい?

# 入茶までにしたこと
### 1.基本的なアル

元記事を表示

【Python】Linterとして選ばれたのは「Ruff」でした

# はじめに
2022年頃まで、Pythonの開発でLinterやFormaterを導入する場合、以下のツールを採用することが多く見受けられていました。

| ツール | 用途 |
| — | — |
| [Flake8](https://flake8.pycqa.org/en/latest/) | Linter |
| [Pylint](https://pylint.readthedocs.io/en/stable/) | Linter |
| [isort](https://pycqa.github.io/isort/) | Import Sorter |
| [Black](https://black.readthedocs.io/en/stable/) | Formatter |

そんな中、これらのツールに対して一石を投じるようなツールが登場しました。それがRuffです。
本稿は、そんなRuffを導入する際の足がかりとして参考になれば幸いです。

# Ruffについて
Rustで書かれた非常に高速なPythonのLinterです。

https://astral.sh

元記事を表示

競プロ典型 90 問 004 – Cross Sum(★2)

## 競プロ典型 90 問 004 – Cross Sum(★2)

競プロの初めて向けの10問を解いたので、90問をチャレンジ!

★2でもめちゃくちゃ難しいんよな。。。
## 問題

H 行
W 列のマス目があります。
その縦横の合計を出してほしい。

## 説明
縦横の合計を足すのですが、
重複しているところを引くことが必要になります。これを包除原理というらしい。
H行とW列を足しても、重複があるため、(H+W)-1 が成り立つ。

Aは[[1,2,3],[1,2,3],[4,5,6]]みたいなリスト。

前処理として、縦のみ。横のみのリストを作成する。

### zip(*A)
zipは*演算子を使えば展開してくれる。
リストを展開して、各リストの要素を対応するものとして組み合わせる。
各リストの同じインデックス同士が組み合わさるみたい。
→各リストの同じインデックスインデックス同士という事は縦軸で合わさる。
縦の合計ができる。

参考:
https://qiita.com/kubochiro/items/5daedd51654a8155bc06

## ソースコード
`

元記事を表示

python でプライベート変数を扱う

### はじめに
まず前提として、Python では厳密に可視性を制御することはできません。
それを踏まえた上で、Python においてプライベート変数を扱う方法をまとめました。

プライベート変数の定義方法として、以下の二つが存在します。
– _single_leading_underscore
– __double_leading_underscore

以下でそれぞれを詳しく見ていきます。

### _single_leading_underscore
#### 概要
オブジェクト名の先頭に ‘_’ を __1つ__ 付けると、import されなくなります。

以下はアンダースコアを 1 つ付けたものと付けていないオブジェクトを定義したモジュールであり、これらを import できるかを見てみます。

“`Python:module.py
class PublicClass:
def no_underscore_method(self):
return ‘public_class_no_underscore_method’

de

元記事を表示

Stable Diffusion Web UI導入でつまずいたところ

昨今熱いAI業界にて、Stable DiffusionのWebUIがあると聞いたので導入を試みてみたが、詰まったところがあったので記録

# TL;DR
– 初手導入時にPythonバージョンが違うと、入れ直してもダメ
– Pythonインストール後に一から改めて、.bat(Macなら.sh)の実行をやり直す必要がある

# 導入に際して
基本に関してはググれば出てくるのが割愛
自分も見つけた数点の記事を参考に実行していった

やることとしては、基本的には

– Python3.10.6のインストール(済んでいればスキップ)
– 設置用ディレクトリを用意する
– stable-duffusion-webuiの[GitLab](https://github.com/AUTOMATIC1111/stable-diffusion-webui)から `git clone` する
– cloneしたディレクトリのstable-diffusion-webuiディレクトリに入りwebui-user.bat(Macならwebui.sh)ファイルを実行

これだけで完了である(時間はある程度かかる)

元記事を表示

Tello-Console 取得メソッド一覧

# 取得メソッド一覧
 取得メソッドとは、ドローンからステータスを取得できるメソッドです。以下のメソッドは、リクエストされるとドローンに指定されたステータスを要求します。

– [get_flighttime](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_flighttime)
ドローンの飛行時間を取得します
– [get_tof](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_tof)
ドローンの対地高度を取得します
– [get_battery](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_battery)
ドローンのバッテリー残量を取得します
– [get_imu](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_imu)
IMUセンサーからドローンの姿勢を取得します

# get_flighttime
 この

元記事を表示

Pythonでdict型(辞書型)のデータをインデント付きの見やすいJSONに変換してprintする

Pythonの改修をしている時に「渡ってきてるdictの要素なんだろうな」と思ってとりあえずprintしたら複雑な階層構造のdictがダーッと1行で出力されて非常に困ってしまったので、見やすく表示する方法を備忘として残しておく。

# 環境
“`
$ python –version
Python 3.12.0
“`

# やり方(実行例)

Pythonを対話モードで起動して以下を実行すれば良い。
“`python
import json

# JSONに変換して出力したいdictをここに定義
target_dict = {‘food’: {‘fruits’: {‘red_fruits’: [‘apple’, ‘strawberry’, ‘cherry’], ‘yellow_fruits’: [‘banana’, ‘pineapple’, ‘lemon’], ‘green_fruits’: [‘kiwi’, ‘grape’, ‘green apple’]}, ‘vegetables’: {‘leafy_greens’: [‘spinach’, ‘lettuce’, ‘kale’

元記事を表示

AtCoder アルゴリズムと数学 009 – Brute Force 2 解答例(Pythonでのbit全探索 / 動的計画法のシンプルなコード例)

[Supership](https://supership.jp/)の名畑です。季節の変わり目が訪れるたび、[TVアニメ てーきゅう](http://te-kyu.com/)の10期は放送されないのだろうかと期待してしまいます。

## はじめに

コードを書きたい気分のときにはよく[AtCoder](https://atcoder.jp/)を利用させてもらっています。

AtCoderでは、競技プログラミングの世界で有名な[E869120](https://twitter.com/e869120)さんが執筆されました書籍「[問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本](https://gihyo.jp/book/2022/978-4-297-12521-9)」の[演習問題集](https://atcoder.jp/contests/math-and-algorithm)が公開されていまして、それをたまに解いています。

そのうちの1問について、解法を残しておきたくなりましたので、残します。
[bit全探索](https://www.ktpc.tokyo/le/

元記事を表示

【pytest】 pytest において mock を生成する方法

### 概要
mock の生成方法が複数存在し、複雑だったので整理した。

### mockとは
mock を知らない人のために簡単に説明を。

– テストにおける mock とは、テストに必要なオブジェクトを代替するもの。
– mock を使用することで、オブジェクトの属性や戻り値を自由に設定できる
– DB から値を取得する必要のあるメソッドをテストしたい時などに重宝する

### mock を生成する方法
1. unittest.mocker.patch を使用する
– 以下のいずれかの方法で指定したオブジェクトを mock 化できる
– @patch() アノテーションを使用する
– patch() メソッドを使用する
– with 文で生成可能

– 以下の例では os.getcwd() メソッドの戻り値を固定している

“`python
import os
from unittest.mock import patch
class Tes

元記事を表示

PytorchのResNetの出力のクラス数を変更する

# ResNetの出力クラス数を変更したい
有名なResNetですが、Pytorchで簡単に使うことができます。しかし、出力次元数を変えるのに少し調べる必要があったので、備忘録としてまとめておきます。

# PytorchのResNetのドキュメントを確認する
多くの人がPytorchのResNetの[ドキュメント](https://pytorch.org/hub/pytorch_vision_resnet/)を確認すると思いますが、ここには、出力のクラス数を変更できそうな記述がありません。そのため、途方に暮れてしまうわけですが、GitHubの[ソースコード](https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py)へのリンクがあるので、このソースコードをもとに、ResNetの出力数を変更していきます。

# 出力クラス数を変更したモデルを作成する
上のソースコードを解析した結果以下のコードで、出力クラス数を変更したモデルを作成できました。何か間違いあったら教えてください!!(研究でも使っているの

元記事を表示

AWS Lambda+PythonでExcelファイルにPlantUMLを埋め込む

# はじめに

AWS Lambda+PythonでExcelファイルにPlantUMLを埋め込もうとして苦戦したのでメモ

手こずったところ
– plantwebを自前でレイヤー作成
– requestsのインポートでエラー
https://qiita.com/HLHHS11/items/c26f1632a141a1dcc7a7

2023/12/4以降AWS CloudShell環境がAmazon Linux 2からAmazon Linux 2023に更新されていく予定なので、この情報は使えなくなる可能性があります

# 準備 – plantwebのレイヤー

### AWS CloudShellでPython3.10環境をビルド

AWS CloudShellでPython3.10環境をビルドします。AWS CloudShellのデフォルトでは3.7です。

OpenSSL 1.1.1をインストール

“`sh:
sudo yum install openssl11 openssl11-devel
“`

Python3.10をインストール

“`sh:
sudo yum

元記事を表示

Visual Studio Codeをインストールしてみました。

Visual Studio Codeは便利な開発・実行環境です。
pythonとも相性がよくPATHの参照、コマンドプロンプトとの連携、デバック等
総合的に便利そうです。

https://kino-code.com/what-is-visual-studio-code/

インストールは簡単です。

1.下のリンクをクリックしてダウンロード・インストールをします。
https://code.visualstudio.com/

2.日本語化
  view>Command Paletteを選択します。
  ![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/06e51846-e44c-737e-0fe9-720ac8d98c90.jpeg)
  >configure display languagew入力します
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/75a3893e-

元記事を表示

クリップボード内の文字列を縦書きに変換(括弧の縦書き化、改行文字数指定対応)

# 概要
動作確認:Python3.11
Python3を使用して、

* クリップボード内の文字列を検知
* 縦書きに変換
* コード内の変数 x に指定された文字数で折り返し
* 各種、カッコなどに対応

したものを再度クリップボードを出力します。

# 前準備
必要なライブラリは以下のとおりです。インストール済みの方はそのままで結構です。

Python 3
“`zsh
pip install pyperclip
“`
Pythonista 3
clipboardモジュールを使用

# ソースコード
### Python 3
“`python:VerticalTextFormatter.py
import pyperclip

#折り返し文字数
x = 8

# クリップボードからテキストを取得
original_text = pyperclip.paste()

def vertical_text(text, chars_per_line=x):
# 半角の空白と英数字を全角の空白と英数字に変換
text = text.replace(‘ ‘, ‘ ’)

元記事を表示

Djangoをインストールしてみました。

Djangoについてはこちら
https://ja.wikipedia.org/wiki/Django

Djangoをインストールしてみたのでメモ代わりに手順を残しました。

1.VENVE(仮想環境)を作成しておきます。
  仮想環境とは、、、説明はこちら
  https://www.sejuku.net/blog/68423

  コマンドプロンプトを立ち上げて以下のコマンドを打ち、仮想環境を作成します。
  python -m venv 仮想環境名
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/e15f29c8-7810-cebd-036a-83d946707fdf.jpeg)
 ここでいうと仮想環境は「python-test」となります。

結果を確認してみましょう。今作成した「python-test」のディレクトリの中を覗いてみます
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

pythonをインストールしてみました。

pythonをインストールしたのでメモとして手順を残しておきます。
※記事は2023/10時点のものです。
pythonの概要についてはこちら
https://ja.wikipedia.org/wiki/Python

1.インストールサイトに移動します。
  以下のリンクをクリックしてください。
   https://www.python.org/

2.この画面の一番下までスクロールします。
  (今回はWINDOWSを選択してます)
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/0d59b246-e119-0d75-fa85-521c89ea1640.jpeg)
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/abcecf24-88df-faf2-7613-3aab9c3bcb04.jpeg)

3.現時点の最新(3.12.0)をクリックしま.しょう.
![無題.j

元記事を表示

辞書(dict型)でkey指定で値を取得するのとget()メソッドを使うのは何が違うのか【Python】

Pythonのコード改修をしていて`dict.get(‘key3’).get(key3f)`のような記述があり、「なんでや!`dict[‘key3’][‘key3f’]`でええやろ!`.get`の4文字余分やろ!」と思ったので、なぜこういったコーディングになるのかの理由を調べた。

# 結論
keyで指定すると`KeyError`になりエラーハンドリングしていない場合は途中終了するが、`get()`の場合は`None`が返ってくるため、場合によっては途中終了しない。

>##### get(key[, default])
>Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError.

([公式ドキュメント](https://docs.python.org/3.12/library/stdtypes.html#mapping-type

元記事を表示

Pythonの優先度付きキューの説明と改変

記事を書くことは初めてなのでうまく書けていないです
私が得意としているのは競技プログラミングなので細かい仕様はわかっていない可能性があります

書き途中だけど下書きにしないで投稿します

# 優先度付きキュー(Priority Quque)とは <-知ってる人は読まなくていいよ ある箱に物を入れたり取り出したりが得意なデータ構造です。 取り出す際はある一定のルールに基づいて取り出します。 例えば箱の中の最小の値を取り出し続けるなど… こんな感じ 箱(常に最小の値を取り出せる)=[] 3を入れる 箱:[3] 2を入れる 箱:[3, 2] 4を入れる 箱:[3, 2, 4] 取り出す ->2
取り出す ->3
取り出す ->4

# Pythonにある優先度付きキューの種類
Pythonには3つ使える優先度付きキューがある。
[heapq](https://docs.python.org/ja/3/library/heapq.html)モジュール
[queue]()パッケージのPriorityQueueモジュール
[asynic]()パッケージのPriorityQueueモジュール
`

元記事を表示

【Python】高速で省メモリな新しい日本語全角/半角変換モジュール Habachen

## はじめに
日本語の全角/半角を相互変換する Python のライブラリやスニペットは様々なものが公開されています。 Pure Python のライブラリですと、 [jaconv](https://github.com/ikegami-yukino/jaconv/) が有名ですね。最近だと、 [Utsuho](https://github.com/juno-rmks/utsuho/) が活発に開発されているようです。異字体セレクタも考慮されている点が、これまでのライブラリには無かった特徴だと思います。

ネイティブ拡張を使った CPython 用の高速な日本語の全角/半角変換モジュールと言えば、 [mojimoji](https://github.com/studio-ousia/mojimoji) が挙げられますが、 [issue](https://github.com/studio-ousia/mojimoji/issues/21) が立てられてから1年以上アクティビティがないということもあり[^1]、文字コードの勉強も兼ねて自分で同等のものを実装してみることにしたのですが、そ

元記事を表示

はじめてのChatGPT API 〜API呼び出し編〜

# はじめに
ChatGPTを使ったクイズアプリを作るにあたって、
前回はChatGPT APIについて得た情報をまとめたので、今回は実際にAPIを呼び出していきたいと思います!

また、開発中のあれこれについては以下のサイトでまとめています。
https://zenn.dev/kitaji12/scraps/a115ff66546e65

# 事前情報
– OpenAI / ChatGPT 初心者
– クイズアプリは React + Flask で作成

# 開発環境
– macOS Monterey 12.5
– Visual Studio Code 1.46.1
– Python 3.10.6
– Flask 2.3.2

# 準備
– [前回の記事](https://qiita.com/kitaji12/items/5ef3428f7c06bbbc7a75)で紹介したアカウントの作成からAPIキーの作成まで行う

# OpenAI ライブラリをインストール
Pythonのサンプルプロジェクトを作成し、OpenAIのライブラリをインストールします。
ターミナルを開き、以下のコマン

元記事を表示

OTHERカテゴリの最新記事