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

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

ラズパイ 2つのプログラムを同時に動かす方法

#### いつもThonnyで動かしてるけど2つ動かす場合はできないので備忘録として。

1つ目のプログラムをtest1.py
2つ目のプログラムをtest2.py

LXTerminalを起動して、以下のようにする。
Python3 test1.py | Python3 test2.py

###### 補足
プログラムを止めるときは、[Ctrl]+[Z]キー

元記事を表示

Pythonモジュールの基本

# モジュール、パッケージ、ライブラリ
### モジュール
関数や、クラスをコードで取り入れることができる定義や文が入ったファイル(スクリプトファイル、`.py`がついたファイル一つ一つ)

### パッケージ
複数のモジュールがまとまったもの
・__int__.pyという名前のファイルを持つ
・__path__属性を持つ

### ライブラリ
モジュールとパッケージを集めたもの

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3389633/ad90f55a-c55a-717e-2460-54a2c0765c82.png)

# ・import ・from ・asの使い方

### import

**calc.py**
“`
def square(num):
return num**2

def cube(num):
return num***3
“`

“`
>>> import calc
>>> calc.square(2) # モジュール名.関数名
4
`

元記事を表示

【AtCoder】ABC235 D – Multiply and Rotate

# 概要
AtCoderの[ABC235のD](https://atcoder.jp/contests/abc235/tasks/abc235_d)を解いた。解説に書かれているような実装をしたはずだったのにハマったので、解法のメモ。
※以下、本問に関する解法を含みます。

# アプローチ
まず前提となる、この問題を解く上での大まかなアプローチ。
始点が決まっていて、操作の種類も少ない。基本的に定数を乗じるか、数字を文字列とみなしてローテーションするだけなので桁が減ることもない。
1から始めて$N$までの最短路をグラフ上で探索するような問題になりそう。
ただ、増やす方向には無限にいくらでも操作できてしまうし、桁のローテーションにより桁数が減ることがなくても数字としては小さくなる場合があるので、探索中に得られた数字が探している$N$よりも大きくなったからといって探索を止めるわけにはいかない。なので、探索範囲が無限大になってしまう可能性があるように見える。[^1]
そこで、各操作を行う前の状態を復元することも容易であることに注目し、求めたい$N$から逆に辿って、1に行きつくまでの最短回数を求

元記事を表示

【Python】PythonのClassについて復習

今回の記事は、PythonのClassに関するものです。
前回の記事:

https://qiita.com/oriefield/items/473049ca2cbc05ce4c6a

でClassを作成してまとめを作ると記載しましたが、その前にPythonのClassについて復習しておきたいと考えて記事を作成。

主に、[Pythonの公式ドキュメント](https://docs.python.org/ja/3/tutorial/classes.html)を参考にし、その概要の紹介となります。

1. Classとは
2. Scopeについて
3. Classのinstanceについて
4. Classの継承
5. Private変数
6. Iteratorについて

## 1. Classとは

>クラスはデータと機能を組み合わせる方法を提供します。

クラスを作成することで:

* 新しいオブジェクトの型を作成、その型を持った新しいインスタンスを作成することができる。
* インスタンスは自身の状態を保持する属性を持てる
* インスタンスは自身の状態を変更するた

元記事を表示

【python】ttkbootstrapでテキストファイル読み込みと作成

pythonでテキストファイル作成と読み込みアプリを作成しましたのでその成果物を共有したいと思います。

作成した成果物は以下になります。

プログラム実行時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/cc24239a-63a3-b335-74ef-763509f77d06.png)

テキスト読み込み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/3709b71b-cde9-9884-b056-1674dc78733c.png)

### 機能概要
chatGPTに機能を解説してもらいました。

1. TextEditorクラスは、ttk.Frameから派生しており、テキストエディタアプリケーションのメインウィンドウを表します。

2. ウィンドウの初期化、レイアウトの設定、テキストボ

元記事を表示

DropboxAPIを使ってテナントの種類を判定する

# はじめに
Dropbox for Businessのテナントには現在「チームフォルダテント」と「チームスペーステナント」の2種類があります。今後チームスペーステナントが増えていく(チームフォルダテナントだったものを順次切り替えていく)そうですが、テナントの種類によってAPIの挙動が変わるので見に行っているのがどっちのテナントなのか、はっきりさせる必要があります。

https://help.dropbox.com/plans/upcoming-business-team-changes?fallback=true

https://help.dropbox.com/ja-jp/organize/team-folders

# 判定する方法
## /get_current_accountのapiの中身を見て判断する
/get_current_accountの中の[‘root_info’][‘.tag’]の中身がteamかuserかで判定できます。
teamならチームスペーステナント、userならチームフォルダテナント(従来のテナント)となっているようです。

### 実装例(pyt

元記事を表示

【Python】loggerに渡した文字列を関数で変更してみた

Pythonでちょっと高級なAppを作るときに使用するlogger
loggerに渡した文字列に細工をしたいことありませんか?

今回はloggerにわたす文字列を加工して出力するloggerを作成しました

# コード
“`Python

from logging import LogRecord, Logger, Formatter, StreamHandler, FileHandler, DEBUG, INFO

def change_message(s: str) -> str:
if s == “\\\n”:
return “\n\n\n\n\n”

s = s.upper().replace(“\n”, “\t”)

if “CAT” in s:
s += “ฅ^•ω•^ฅニャー”
return s

class OriginalFormatter(Formatter):
def format(self, record: LogRecord) -> str:
record.messag

元記事を表示

BardをPythonから利用してWebサイトを参照させる(非公式API)

# はじめに
– Bardを使ったWebサイトの参照を含むタスクをpythonで試したので、やり方をまとめました。
– (少なくともこれを始めた当時は)ChatGPTではAPI経由でURLを指定したWebサイトの読み込みができなかったので、できそうなBardを使いました。
– 利用しているAPIは非公式のものです。
– BardでのURLへのアクセスは恐らく英語にしか対応していません。

# Bard API
以下のgithubリポジトリのライブラリを利用しました。

https://github.com/dsdanielpark/Bard-API

なお、
> Please note that the bardapi is not a free service, but rather a tool provided to assist developers with testing certain functionalities due to the delayed development and release of Google Bard’s API. It has been d

元記事を表示

Python最大桁から有効数字で丸める

Pythonである数字を有効桁数で丸めたい。

round関数を用いれば、小数点ある桁で丸められるが、今回は最大桁数から動的に丸めたい

例: 有効数字3桁
0.0012344 -> 0.00123
12344000 -> 12300000
123.44 -> 123

そのための関数を作成した。

# 関数本体
“`Python
import math
from typing import Union
InputType = Union(float, int, list[“InputType”])
def round_sigdig(val: InputType, sigdig: int) -> InputType:
“””最大桁からある桁数で丸める関数
Args:
val (any):
number or list of number or array of number
数値もしくは数値のlistもしくは数値のarray
sigdig (int):
signif

元記事を表示

Metaの大規模言語モデル「Llama 2」との会話をMacBook(M2)でPythonで実装してみた記録

[Supership](https://supership.jp/)の名畑です。今時の漫画アプリって「無料で1日1話読める」というのが多いように思いますが、私、なぜか家に単行本で全巻揃っている漫画もその1日1話無料で毎日1話ずつ読み直したりするんですよね。最近だと[修羅の門](https://gmaga.co/c/shuranomon.html)とか。まとめて読めるのに、わざわざ毎日コツコツと。それがなぜかは自分でも答えが出ていません。

## はじめに

[Meta](https://about.meta.com/ja/)がリリースした大規模言語モデル[Llama 2(ラマ2)](https://ai.meta.com/llama/)。
前回の記事「[Metaの大規模言語モデル「Llama 2」をMacBook(M2)にダウンロードして会話をしてみるまでの記録](https://qiita.com/nabata/items/311c1fc33a16f66d34d8)」ではこの**Llama 2**をローカルに落としてサンプルプログラムを叩いて会話をしてみました。

今回はこの**Ll

元記事を表示

Scikit-learnのall_estimators()関数の活用:全モデルでの精度を一括比較する

Scikit-learnは多機能で広く使われているPythonの機械学習ライブラリですが、提供されている多数のモデルをどれが一番性能が良いのか比較するのは一苦労です。そこで役立つのが`all_estimators()`関数です。

# all_estimators()とは?

`all_estimators()`はScikit-learnが提供する全ての推定器(モデル)のリストを返す関数です。特に引数`type_filter`を指定することで特定の種類(’classifier’、’regressor’等)のモデルだけを取得することが可能です。

# 実際に使ってみる

以下のコードでは、カリフォルニア住宅価格データセットを用いて`all_estimators()`で取得した全ての回帰モデルを一度に評価し、その中で最も良いモデルを見つける例を示します。
今回は`all_estimators()`の使用例にのみフォーカスするため、前処理や特徴量選択は省略しています。

“`python
import warnings
import pandas as pd
from sklearn im

元記事を表示

CP4NAを使い始める(MacOS+VSCode)

# はじめに
Cloud Pak for Network Automation (CP4NA)を使い始める時に、まずはローカルの環境のセットアップが必要となります。[ドキュメント][1]にも導入方法が記載されていますがだいぶサラッとしていますので、実際にVSCodeを使ってセットアップしてみた例をご紹介します。

本手順は以下の環境で実施しています。
– クライアントPC: macOS 13.4
– エディタ: Visual Studio Code 1.80.1
– Python: 3.11.4
– lmctl: 3.5.0
– CP4NA: 2.4

[1]:https://github.com/IBM/lmctl/blob/main/docs/getting-started.md

# 本手順の対象・流れ
VSCode上でPythonの仮想環境を作成し、CP4NAのコマンドラインツールである`lmctl`をインストールします。lmctlを使用して、CP4NAの環境に接続するための設定を行います。

# 1. Python環境セットアップ
## 1.1. VSCodeワークスペ

元記事を表示

[AtCoder]Pythonのそれぞれの操作の計算量と代替案

# はじめに
著者は水色コーダーで、pythonのみを用いてAtCoderに取り組んでいます。
競プロでコードを書く際に計算量がオーバーしないかは大切な指標です。
それぞれの操作の計算量については以下の記事で綺麗にまとまっています。
[Pythonistaなら知っておきたい計算量のはなし](https://qiita.com/Hironsan/items/68161ee16b1c9d7b25fb)

ここでは、計算量ごとに水色問題(ABCのE問題程度)まででよく使う操作をまとめました。基本的に最悪計算量で記載しています。
また、計算量がオーバーしがちな操作の対処法や代替案を記載しております。

基本的にAtCoderの問題では定数倍が原因となり計算量がオーバーすることは少ないです。
そのため同じ計算量で別の処理に書き換えるのでなく、O(N)をO(logN)にするなど、根本的な改良が求められるケースが多いです。

## O(1)
基本的にこれらの操作は計算量として問題にならないです。
TLEの場合は他の操作が原因の可能性が高いです。

### 一般
~~~Python
#数値の初期化、

元記事を表示

プライベートIPアドレスの範囲をリアルな縮尺で示した図を作った

# プライベートIPアドレスの範囲を図で示す

IPv4では、全アドレス空間`0.0.0.0~255.255.255.255`のうち以下のa,b,cの範囲をプライベートIPアドレスとして使用します:

a. 10.0.0.0 ~ 10.255.255.255
b. 172.16.0.0 ~ 172.31.255.255
c. 192.168.0.0 ~ 192.168.255.255

これらの範囲を**模式的に**図示するとこんな感じです:
![privateIP_moshiki.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150194/20973824-5e13-24c7-7f57-c271b3d0e115.png)
「グレーの範囲がプライベートIPの範囲です」と言われれば、そうですねと答えるしかない図ですが、しかしこの図は誇張しすぎです。グレーの範囲はもっと狭いはずです。

どういうことかというと、すべてのアドレスの数は$2^{32}$ = 4,294,967,296通り(約42億)で、実際のと

元記事を表示

pythonでAWS Lambda のレイヤー機能を利用する

# はじめに

前回、pythonでAWS Lambda を業務利用で量産するにあたって、自分があると便利だと思うクラス構成の雛形を記事で公開しました。

今回は、その続編です。
(前回はこちら)

https://qiita.com/Syoji_Yonemoto/items/7e8a7668358798656932

基底クラス達を、レイヤーに登録して複数Lambda関数から使いまわすと便利なので、レイヤー機能へ登録するためのメモ書きです。

# 公式ドキュメント

別言語(NodeJS)でもレイヤー機能を使ってるのですが、よくドキュメント迷子になるので、重要なページをメモ書き。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html#configuration-layers-path

<抜粋>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/55deb790-40e6-

元記事を表示

Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた

[Supership](https://supership.jp/)の名畑です。[週刊少年ジャンプ](https://www.shonenjump.com/j/)34号に掲載された[小園江ナツキ](https://twitter.com/osonoeosonoe)先生の読切漫画「[殺陣ロール](https://togetter.com/li/2192828)」好きです。

## はじめに

7月27日についに[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の新モデル**SDXL**の**1.0**がリリースされました。当初の予定よりは遅れたものの、**0.9**がリリースされた6月23日から1月程度での高速リリースです。

**SDXL 0.9**の際に「[Stable Diffusionの最新モデルSDXL 0.9と過去モデルで生成画像を比較してみた](https://qiita.com/nabata/items/1b1fbc362d71dc76237b)」という記事で**Stable Diffusion**にお

元記事を表示

MacでAtcoderの入力を受け取る環境を整える【Python】

競プロの入力例を簡単に受け取る環境作りを紹介します。

## 記事の概要

| やること | 効果 |
| — | — |
| ファイルの準備
・入力例を受け取るためのファイル
・コードを書くためのファイル | 2つの画面で、入力例を見ながらコードを書ける。自分で入力例を作成する際も便利。 |
| 標準入力セットをスニペットに登録| 入力を受け取るためのコードを書く手間が省ける。 |
| ローカルでの入力受け取りの記述を、提出用に自動変換| 提出用のコードに自分で書き換える手間が省ける。 |
| Atcoderから入力例を自動で読み込む | 問題の入力例をコピペする手間が省ける。 |

試行錯誤しながらの方法なので、まだ最適でないかもしれません。より良いやり方思いついたら、ぜひコメントで教えてください。

## 環境

– OS : macOS
– エディター : Visual Studio Code
– 言語 : Python(Jupyter Notebook使用)

## 1. ファイルの準備
まずは、以下のようにフォルダ内に2つのファイルを作成します。

元記事を表示

Raspberry Pi 4Bでneopixel(WS2812B)をSPIで制御してみた

# 結論
* [adafruit-circuitpython-neopixel-spi](https://pypi.org/project/adafruit-circuitpython-neopixel-spi/)を使用する
* 本家の[adafruit-circuitpython-neopixel](https://pypi.org/project/adafruit-circuitpython-neopixel/)はSPIに正式対応していない。
* NeoPixel_SPIのインスタンス化の際に、引数に”bit0=0b10000000″を入れる。
* bit0はNeoPixel dataをSPI dataに変換するための値
“`python
import board
import neopixel_spi
pixels = neopixel_spi.NeoPixel_SPI(
board.SPI(),
n = 10, # LEDテープの連結数を指定。今回は10個
brightness=0.01,# 明るさの指定
auto_write

元記事を表示

Qiita の投稿規定

**Markdown 記法についてのページもちゃんと用意されているのに**,多くの人は無頓着に投稿されるようです。

https://qiita.com/Qiita/items/c686397e4a0f4f11683d

余計なお世話ですが,以下の2項目だけを特にお願いします。

![スクリーンショット 2023-07-30 23.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/5fd44646-b3eb-e709-8c67-85f3a46c48d7.png)

![スクリーンショット 2023-07-30 23.27.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/d5c1e656-1b0f-29d6-5328-b5e6ee8d0ac4.png)

元記事を表示

injector(DIコンテナ)の隠蔽

[前々回](https://qiita.com/odxdoge/items/6031419f9461a8775d98)と[前回](https://qiita.com/odxdoge/items/2d1924e7d4fbe92e9969)の続きです。
クラスの依存関係の管理方法について解説しました。
injectorの実用的なテクニックについて深掘りします。

## アーキテクチャ設計と実装

今までのコードでDIの考え方について解説してきました。また、その実装をライブラリを使って実現する方法についても示してきました。このようにアプリケーションのアーキテクチャを設計し、決定した場合、その後実装を行うはずです。
しかし、実際にAWS Lambdaで実装すると、ひとつ思うことがあります。
lambda handlerの最初にinjectorインスタンスを作成し、設定を行う必要があり、複数のLambdaを運用すると重複したコードになります。

これにはいくつかの問題が挙げられます。
– 関係するすべてのLambda実装者がinjectorについて理解している必要があります。
– injecto

元記事を表示

OTHERカテゴリの最新記事