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

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

【Python】与えられた月と年を基に、築年月を求めるコードを実装

# 概要
Pythonで、与えられた月と年を基に、現在の日付との差を計算して築年月を求めるコードを実装しました。その際、細かな注意点があることも記載します。

# サンプルコード
以下に二つの関数を記載しました。
どちらも築年月を抽出するコードです。
“`py
from datetime import datetime

# 関数1
def calculate_age_month_1(month, year):
start_date = datetime(int(year), int(month), 1)
end_date = datetime.now()
duration = end_date – start_date
years = duration.days // 365
months = (duration.days % 365) // 30

return ‘築’ + str(years) + ‘年’ + str(months) + ‘ヶ月’

chikunengestu = calculate_age_month_1(9,

元記事を表示

python-note: script

# 概要
Pythonノート: pythonスクリプトを書く場合のTips

## `__name__` による動作の区別

“`py
if __name__ == “__main__”:
“`
のような記述は何を意味しているか?
一言でいうとpythonプログラムから外部モジュールとして呼ばれたか、記述されたファイル自身が実行スクリプトとして呼ばれたかの違いを区別している。

実行スクリプトとして呼ばれた場合は自動変数`__name__`に`__main__`が、モジュールとして呼ばれた場合はモジュール名が設定される。

### 記述例

以下のようなpythonモジュールを記述したファイルがある場合
“`py
# module.py
def mod():
print(f”name = {__name__}”)

if __name__ == “__main__”:
mod()
“`

単独のスクリプトとして実行すると
“`bash:実行
$ ./module.py
“`

“`text:出力
name = __main__
“`

以下のような

元記事を表示

python 環境構築

**Anacondaを使わずに**VSCodeでpythonを使用する環境をつくったので
備忘録としてやり方のざっくりとしたまとめをここに書いておきます。
(素人が拾ってきた情報まとめてきただけですが、、)
ちなみにOSは**Windows 11**です。

## Pythonインストール方法
**1. [このページ](https://www.python.org/downloads/)からPythonのインストールファイルをダウンロード&実行**

**2. Pathを通す(インストール時に「Pathを通す」にチェックをつければ自動でPath設定はやってくれる)**

Python.exeはC:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python311に、pipはC:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python311\Scriptsに格納されているので、それぞれ
コントロールパネル>システムとセキュリティ>システム>詳細設定>環境変数からPathを選択、編集ボタンを押して新規P

元記事を表示

ファイルが正しくコピーされたかざっくりと確認する

# 発端

最近うっかり8TBのHDDを買ってしまったので数TBのデータを移行して換装しました

rsyncでコピーしましたが、正しくコピーが出来たのか検証するにも数TBにもなると時間がかかります

時間がかかる事を許容できるのであればdiffで同一性のチェックをすると良いと思いますが、とりあえずほぼ問題なくコピーが出来てるという前提に立って、その上でざっくりチェックしたいなと考えました

# 作ったもの

https://gist.github.com/m-m-n/7d7e8e6644f2baa3a277fdc1c17ea476

最初に作ったのも載せちゃいます

## 仕様

– ディレクトリを2つ与え、ファイルリストを作成する
– 片方にしか存在しないファイルを表示する
– ファイルサイズが異なるものを表示する
– ファイル先頭から1MB、ファイル末尾から1MB、中間からランダムで1MBの3箇所のチェックサムを比較し、異なるものを表示する
– 3MB以下はファイル全体のチェックサムを比較し、異なるものを表示する
– コマンドラインの第一引数で与えたパスと第二引数で与えたパ

元記事を表示

DataFrameを1行ずつ取得して再度DataFrameに戻す方法とSeries型の回避

## 概要
この記事では、Pandasを使用してDataFrameから1行ずつデータを取得し、それを再度DataFrameに戻す方法と、Series型になってしまう場合の回避方法について紹介します。DataFrameを1行ずつ処理する際にSeries型に注意が必要ですが、簡単なコード例を通じて解決策を説明します。

## 問題

DataFrameをiterrows()を使って1行ずつ取得しようとしたところ、各行がSeries型として取得されてしまいました。以下はコード例です。

“`python
import pandas as pd

data = {
“No.”: [1, 2, 3],
“番号”: [“test1”, “test2”, “test3”],
“名前”: [“name1”, “name2”, “name3”]
}
df = pd.DataFrame(data)

for _, row in df.iterrows():
print(row)
“`
上記のコードでは、row 変数には各行がSeries型として取得されるため、データのア

元記事を表示

ラズパイ 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 APIをPythonから利用してWebサイトを参照させる(非公式API)

# はじめに
– Bard APIを使った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 be

元記事を表示

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-

元記事を表示

OTHERカテゴリの最新記事