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

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

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
#import clipboard #pythonista 3の場合は上の行の“import pyperclip”をコメントアウトしてこちらを使用

#折り返し文字数
x = 15

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

def vertical_text(text, chars_p

元記事を表示

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のライブラリをインストールします。
ターミナルを開き、以下のコマン

元記事を表示

SAM で PuLPをローカル起動した時に苦労した話

# 背景
 AWS Lambdaを利用してバックエンド開発を行っていた際、ローカルサーバーを起動した時にエラーが発生。PythonランタイムでPuLPと呼ばれるライブラリを使用していたのだが、デプロイ環境やpytest時には問題なく計算できるのに、ローカルサーバー起動時のみ計算できない。

# 目的
 AWS SAM にてPythonランタイムのLambda関数でPuLPライブラリを用いる際、ローカルサーバーでのプログラム実行時に発生した`’PULP_CBC_CMD: Not Available`による`PulpSolverError`を調査した結果、原因と、間に合わせだが解決方法が分かったので共有する。
なお、私のデバイスのみでしか発生しない、もしくは解決しない可能性もある。

# 結論
## 原因
`sam build`実行時に生成される`\.aws-sam\build\pulp\solverdir\cbc\linux\64\`内の`cbc`というファイルのパーミッションが`-rw-r–r–`になっている。
このcbcファイルは`-rwxr-xr-x`でなければ使用できず、

元記事を表示

【備忘録】importlibを使用した動的なインポート

### 事の発端

以前作成したPython形式のファイルをJSON形式のファイルに書き換えたいと思い立ち,

1. 変換対象のファイルから変数(中身は数字,文字,リスト,None,ブーリアン等)をインポート
2. インポートした変数を辞書型に変更
3. JSON形式で保存

を行う変換コードをPythonで作成してみました.変換対象のPythonファイルが1つであれば,変換コードの文頭で静的にインポートして万事解決でしたが,当該のPythonファイルが複数存在していたため,変換コード内でfor文を使用して一つ一つ変換していく運びになりました.

ところが,文頭以外で別のPythonファイルをインポートする方法が分からなかったので,「importlib」というパッケージを使用して文中で必要に応じてインポートするということにしました.

### 変換対象のファイルの例
このようなファイルが複数個存在しています.また,格納先は
/hoge/src/
内となっています.

“`/hoge/src/example.py
# 日付と番号
date = [“20230607”, 3]
# 名前

元記事を表示

Tello-Console 基本操作メソッド一覧


# 基本操作メソッド
 基本操作メソッドでは、ドローンの基本的な動作を制御します。

– [takeoff](https://qiita.com/GAI-313/items/702481de45d8b2bcface#takeoff)
ドローンを離陸させます
– [land](https://qiita.com/GAI-313/items/702481de45d8b2bcface#land)
ドローンを着陸させます
– [wait](https://qiita.com/GAI-313/items/702481de45d8b2bcface#wait)
ドローンを待機させます
– [forward](https://qiita.com/GAI-313/items/702481de45d8b2bcface#forward)
ドローンを前方へ移動させます
– [back](https://qiita.com/GAI-313/items/702481de45d8b2bcface#back)
ドローンを後方へ移動させます
– [right](https://qiita.

元記事を表示

pyenvのインストールではまってしまった。 メモ

Open Interpreter が有料だと思って無視していたが、無料だと分かりインストールしようとしたところPython3.9では動かないことが分かり、3.10に変更しょうと思いました。
VS-Codeのインタープリターで変更すれば良いかと思ったらそうはいかない。
ターミナル上で変更したいので、pyenvをインストールしました。
LinuxやMacだと簡単だがWindows上だと結構面倒で、かなりはまってしまった。
pyenvのインストールはこちらの記事が参考になりました。
[【pyenv-win】pyenv のインストールと実行](“https://qiita.com/probabilityhill/items/9a22f395a1e93206c846)

インストール完了後、バージョン確認のコマンドを実行すると、以下のエラーが出力
““`
‘DOSKEY’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
‘chcp’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていま

元記事を表示

Qiita への記事投稿のおすすめのやり方

すでにやっている方にとっては意味のない記事ですが…

プログラムと実行結果を共に記事にするには,Jupyter Lab でプログラムを含む記事を書き,Save and Export Notebook As … で Markdown を選び,出来上がった Markdown ファイルを Qiita の記事投稿ウインドウにコピペするのが最善。

見やすいし,プログラム片をPythonのREPLにコピペして(必要なら少し変更を加えて)実行してみることもできる。

以下は,つい最近投稿・公開された記事(プログラムと実行結果は画像として張り込まれている)を,上述のようなやり方で投稿するとどうなるかの実例である。

## 一次元配列の扱い

この部分に,解説記事を書く。

“`python
import numpy as np
a = np.array([1, 2, 3])
a
“`

array([1, 2, 3])

“`python
print(a)
“`

[1 2 3]

“`python
type(a)
“`

元記事を表示

Python3チートシート(データ分析編)

# 本記事の内容

1. Pythonの基本
2. 事前準備
3. pipコマンド
4. Jupyter Notebook
5. ライブラリによる分析の実践

# 1. Pythonの基本

基本的な内容は以下ご参照
https://qiita.com/1429takahiro/items/710a877b1afb1626334f

# 2. 事前準備

検証用環境として、OSSのanacondaを利用
https://anaconda.org/

“`python:前提環境
(base) [takahiro@ITakahiro ~]$ python
Python 3.7.6 (default, Jan 8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
“`

##### venv環境の作成

– venvとはPy

元記事を表示

Spring × Ras Piでセンサから取得したデータを表示する #03AWS編

# 前回までに行ったこと
1. ローカルのPCでDocker上にデータベース構築とSpringでのサーバ構築
1. Ras Pi側でセンサからのデータを取得してdocker内のデータベースにデータ登録

# 今回行うこと
今までローカルのPCで行っていたことをAWSに移行する。

## AWSでdocker&docker-composeを動かす準備&テスト
### docker部分
[[AWS]EC2内でDockerコンテナを起動して、ブラウザからアクセスする](https://weseek.co.jp/tech/2196/)を参考にHello Worldの表示まで行った。
![スクリーンショット 2023-09-26 165149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3473187/616a6b8e-d08f-4205-7640-f8d913fd042f.png)

### docker-compose部分
さらにここからdocker-composeを導入する。
[EC2(AmazonLin

元記事を表示

Pythonで画像ファイルのIPTCを更新する(pyexiv2)

## はじめに

先日、Pythonのpyexiv2を使って、複数の画像ファイルにつけたIPTCのキーワードを集計するという記事を書きました。

https://qiita.com/st10/items/5ae77fd5393365cce42a

当初は、キーワードの集計ができたところでよしとしていたのですが、キーワードの更新もやってみようと思い、試してみました。

## 環境

* OS: Windows 11 Home 22H2
* Python: 64ビット版、3.11.4

## インストール

* pip install pyexiv2

## IPTC情報のうち、キーワードを更新する

サンプルの画像ファイルからIPTCのキーワードを取得して、取得したキーワードの末尾に現在日時の文字列を追加するという処理を行っています。

キーワードに限らず、更新したい要素の値を作り込み、「要素名: 値」で辞書を作成、作成した辞書をmodify_iptc()メソッドで更新するという流れになります。

“`python
import pyexiv2
import datetime
impo

元記事を表示

OTHERカテゴリの最新記事