- 1. 【Python3】【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)をやってみた
- 2. 【Python3】3Dプリンタ (paizaランク B 相当)をやってみた
- 3. 【Python3】文字の一致 (paizaランク D 相当)をやってみた
- 4. 図形認識AI
- 5. python備忘録~DataFrameのindexについて~
- 6. Python マルチプロセステスト
- 7. pythonでboolean型はあるのか調査
- 8. 【Python】Ruff を使って Python らしいコードを学ぼう【初心者】
- 9. python import 自作モジュール 相対パスの不可解
- 10. 【Houdini】Script Solverで色々やる
- 11. PostgreSQL: Python で Upsert
- 12. UUID と Base32
- 13. en_core_web_smが見つからない場合
- 14. ガード節とは何か、綺麗なコードを書くために。
- 15. TypeScriptばかりの人が、初めてPythonを触った感想
- 16. Googleによる生成AIモデル「Gemma 2」をMacBook(M2)で動かしてみた
- 17. Pythonで小数をいい感じに取り扱うために
- 18. Pandas: テキストファイルを csv に変換
- 19. 【python】即興で3角形の辺の長さの和を入力して、ピタゴラスの定理が成立するかチェックしてみた
- 20. Pandas: List から DataFrame を作成
【Python3】【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)をやってみた
https://paiza.jp/works/mondai/b_rank_skillcheck_archive/name_card
### 🎨 Pythonプログラム:名刺の裏側の番号を表示 🌐
以下のPythonプログラムは、指定された名刺の番号 `m` を基に、その名刺の裏側の番号を計算して表示します。
“`python
# 入力値を読み込み、nとmに分割
n, m = list(map(int, input().split()))# 名刺のページ番号を計算
# (m-1) // (n * 2) は0始まりのページ番号、+1で1始まりのページ番号に変換
page = (m-1) // (n * 2) + 1# ページの最後の名刺番号を計算
pmax = page * n * 2# ページの最初の名刺番号を計算
pmin = pmax – (n * 2 – 1)# 名刺の裏側の番号を計算
# pmax + pmin – m でm番の名刺の裏側の番号を求める
print(pmax + pmin – m)
“`### コードの説明 📄
1. **入力の読み
【Python3】3Dプリンタ (paizaランク B 相当)をやってみた
https://paiza.jp/works/mondai/b_rank_skillcheck_archive/3d_printer
### 🎨 Pythonプログラム:3Dプリンタの立体の正面図を出力 🌐
以下のPythonプログラムは、指定された立体データを読み取り、立体を正面から見たときの図を出力します。
“`python
# X, Y, Zのサイズを読み込む
X, Y, Z = list(map(int, input().split()))# Z行Y列の出力用の2次元リストを初期化
m = [[‘.’ for j in range(Y)] for i in range(Z)]# 各層(Z軸方向の各平面)ごとにデータを読み込む
for k in range(Z):
for i in range(X):
# 一行分のデータを読み込む
n = input()
# Y軸方向に沿ってデータを処理
for j in range(Y):
# ‘#’があればその位置を出力用のリストに
【Python3】文字の一致 (paizaランク D 相当)をやってみた
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str
**Pythonコード実装**
以下にPythonコードを示します:
“`python
# 標準入力から入力を受け取るためにsys.stdinを使用
import sys
input = sys.stdin.read# 入力を読み込む
data = input().split()# 文字列aとbを取得
a = data[0]
b = data[1]# 文字列aとbが一致するかどうかを判定
if a == b:
print(“OK”) # 一致した場合は”OK”を出力
else:
print(“NG”) # 一致しない場合は”NG”を出力
“`### 説明:
1. `sys.stdin.read` を使って標準入力からデータを読み込みます。これにより、全ての入力が1つの文字列として読み込まれます。
2. `split()` メソッドを使用して、改行を区切りとして入力データを分割し、リスト `data` に格納します。
図形認識AI
chatGPTに書いてもらったコードに、必要な箇所だけ修正したり、パスを設定して作りました。ファイル名はshape_and_text_recognition.pyです。Tesseractというのをインストールして環境変数を設定してからコード中にパスを記載し、
Dense(2, activation=’softmax’) # クラス数に応じて変更
の部分の数字の2はフォルダの数です。図形を認識できるAIを作りたくてwordの図形描画で描いたものを画像として保存してフォルダにいくつか入れました。
モデルのトレーニングの箇所で、トレーニング用のフォルダのパスを指定します。
train_generator = train_datagen.flow_from_directory(
r’C:\Users\Owner\Desktop\AI\data\train’,
target_size=(64, 64),
batch_size=32,
class_mode=’categorical’
)
最後に下のメイン処理の箇所で
図形認
python備忘録~DataFrameのindexについて~
先ほどpythonで開発をしている最中にDataFrameの時系列データの時間列をエポック秒に変換する際に、非常に苦労したので僕の試行錯誤の結果が似たような状況のどなたかの役に立てばと思い備忘録として書いていきたいと思います。
# 過程
現在FX関連のとあるツールを自作しているのですが、APIから取得したレートの情報の時系列DataFrameについて時間に関しても整数値で扱えた方が何かと都合がいいと思い、Datetimeをエポック秒に変換し始めました。
最初はindexの情報が書き換えられないことを知らず、
“`python
#tickは一定期間のOHLCの価格などが入っているDataFrame形式の多次元リスト
tick[“Datetime”] = pd.to_datetime(tick[“Datetime”]).apply(lambda x: x.timestamp())
“`この方法で直接indexを置き換えてやろうと思ったのですが、結果は失敗で以下のエラーが出てきました。
“`
KeyError: ‘Datetime’
“`
次に、indexの内
Python マルチプロセステスト
“`sqlite3_multi_process.py
import concurrent.futures
import datetime
import traceback
import datasetCONTITIONS = [
{‘db’: ‘1’, ‘min’: ‘1’, ‘max’: ‘1000000’},
{‘db’: ‘2’, ‘min’: ‘1000001’, ‘max’: ‘1500000’},
{‘db’: ‘3’, ‘min’: ‘1500001’, ‘max’: ‘3000000’},
{‘db’: ‘4’, ‘min’: ‘3000001’, ‘max’: ‘4000000’},
{‘db’: ‘5’, ‘min’: ‘4000001’, ‘max’: ‘5000000’}
]
ARGS = len(CONTITIONS)def find_by_condition(conds, arg):
”’
データベースからリストを取得する。
”’
DB_PATH = ‘/Users/fu
pythonでboolean型はあるのか調査
# 背景
pandasのデータフレームでflagを0、1で記載していたがC++の時の様にboolean型があるのか気になった。# 調査結果
bool型は存在し利用可能。## chat gptによるそれぞれの利点
### 0と1で記載する場合の利点
– 互換性:他のシステムやフォーマット(例えば、CやC++)と互換性がある場合、0と1を使用することが一般的です。
– 計算:0と1を直接使用することで、計算や集計がしやすくなる場合があります(例えば、合計を取るときなど)。
### bool型を使う場合の利点
– 可読性:TrueとFalseは、人間にとって直感的で理解しやすいです。データの意味が明確になります。
– エラー防止:0と1だけでなく、他の整数が誤ってデータに含まれてしまうリスクを減らせます。bool型はTrueかFalseの2値しか取り得ないため、データの一貫性が保たれます。
– メモリ効率:bool型は通常1ビットで表現されるため、メモリ使用量が減る可能性があります(ただし、実際の実装によって異なることもあります)。# 記載例
~~~python3
impo
【Python】Ruff を使って Python らしいコードを学ぼう【初心者】
# はじめに
ナイトウ([@engineer_naito](https://twitter.com/engineer_naito))と申します。
最近 ChatGPT に頼りっぱなしです。
手でコードが書けないことに気づきました。一番経験のある言語が Python だったので、Python を自分の手で書けるように勉強をしています。
勉強には競技プログラミングでお馴染みの AtCoder の過去問を選びました。
Novisteps という非公式の過去問学習記録サイトを併せて利用しています。
https://atcoder-novisteps.vercel.app/AtCoder ではブラウザ上にエディタがあるのでそれを利用することもできますが、慣れている VS Code を使います。
linter や formatter などの静的解析ツールなしでのコーディングが辛かったので今回は Ruff も使います。この Ruff が Python 学習に非常に効果的だと感じのでその理由を書きます。
まずは Ruff について。# Ruff とは
公式ドキュメント
https
python import 自作モジュール 相対パスの不可解
my_package/
├── __init__.py
├── mod.py
├── sub_package
├── __init__.py
└── sub_mod.pysub_modからmodを呼び出す
sub_mod.py
from .. import modsub_mod.pyを単体で動かすとエラーになる事がある
対策
root dirに移動してパッケージで実行(my_packageの上に移動)
python -m my_package.sub_package.sub_modまたは、PYTHONPATHを設定 $env:PYTHONPATH=”C:\user\xxx\my_package”
sub_mod.py
import modとする。
【Houdini】Script Solverで色々やる
# 0. はじめに
HoudiniのScript Solver DOPについて調べたので、備忘録がてらまとめます.
質問や内容に関する指摘がありましたら、遠慮なくコメントとかください.### 0-1. 動作環境
Red Hat Enterprise Linux 9.2
Houdini Education Edition Version 20.0 Build 547 Py39### 0-2. 免責
この記事をもとに被った不利益について私は一切責任を負いません.# 1. Script Solverとは?
SideFXの[公式ドキュメント](https://www.sidefx.com/ja/docs/houdini/nodes/dop/scriptsolver.html)によると
>Script Solver DOPは、接続されたオブジェクトに対してSolveステップとしてHScriptコマンドを実行します。 通常では、このコマンドは、外部スクリプトファイルをソースとします。 このスクリプトは、どのHScriptコマンドも実行することができ、さらには、いくつかのコマン
PostgreSQL: Python で Upsert
こちらの SQL を python で実装しました。
[PostgreSQL: Upsert](https://qiita.com/ekzemplaro/items/0da59b50cb4ac9db007a)## プログラム
“`py:postgre_upsert.py
#! /usr/bin/python
#
# postgre_upsert.py
#
# Jul/17/2024
#
# ——————————————————–
import sys
import os
import psycopg2
from dotenv import load_dotenv
#
#
# ——————————————————–
def sql_upsert_string_gen_proc ():
insert_sql = ”’
INSERT INTO cities (id, name, population, date_mod)
V
UUID と Base32
## UUID と Base32
### UUID
– 128ビットの一意な数値
– 文字列では `540d79a1-0d3f-4973-b340-1d4923033768` のような16進数 36文字で表現### Base32
– 32を底とする(1つの文字で 0~31 を表す)
– 5ビットを1文字で表現できる
– 実際には、40ビット単位を8文字に変換する
– 使用するASCII文字により、Base32 と Base32hex がある[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) で用いる文字一覧
“`
Table 3: The Base 32 AlphabetValue Encoding Value Encoding Value Encoding Value Encoding
0 A 9 J 18 S 27 3
1 B
en_core_web_smが見つからない場合
## 問題
spacyを使ったpythonファイルをコマンドライン実行しようとしたところ、下記のエラーコードが発生した。
“`python
OSError: [E050] Can’t find model ‘en_core_web_sm’. It doesn’t seem to be a Python package or a valid path to a data directory.
“`## 解決
とりあえずエラーコードで調べたところ、下記コードを実行すればen_core_web_smがダウンロードされ、うまくいくらしい
“`
python -m spacy download en_core_web_sm
“`
(参考:https://github.com/explosion/spaCy/discussions/10895)初心者ゆえにどのような原因で上記エラーが発生したかまで特定することは叶わなかったので、詳細の説明は有識者にゆだねたいと思う。
ガード節とは何か、綺麗なコードを書くために。
## コードを綺麗にする
コードを綺麗にする(可読性を上げる)事によって、未来の自分を助けることになります。## ガード節
ガード節とは、メソッド(関数)のはじめに例外などを処理することです。
+ **悪い例**
ネストが3段もあり、ifとelseが多く、とても読みづらいです。
“`python
def is_hoge_check(age, state, time):
if(age >= 20):
if(state == “active”):
if(time >= 10):
return True
else:
return False
else:
return False
else:
return False
“`
+ **良い例**
悪い例とは違い、ネストが1段でelseが無く見やすくなりました。
“`
TypeScriptばかりの人が、初めてPythonを触った感想
## Pythonってキm
普段TypeScriptばかりの人が、初めてPythonを触った感想。
本気で全くけなす意図はないです。ネタです。
でも、そういうのが嫌な人はやめておきましょう。それと、本気で初めてPythonを触ったので、単に間違っていてもっとちゃんとした書き方すればいいんだよ、
とかあるかと思います、その辺も含めてファーストインプレッションがこんな感じだったということでお願いします。Python3の話です、それ以前との違いはよく分かっていませんが。
## インデントがブロック
うん、いやね、普段TypeScriptでもインデント入れてるから変わらないといえば変わらないけど。
特にブロックの終わりのところで何となくムズムズする、いやそれだけなんですが。## \_\_init\_\_ ってなんじゃ?
“`python
class Hoge
def __init__ (self)
honyarara“`
\_\_ を定義しやがったぞ!?
まあTypeScript(JavaScript)でもダブルアンダースコア自体は一
Googleによる生成AIモデル「Gemma 2」をMacBook(M2)で動かしてみた
[Supership](https://supership.jp/)の名畑です。2024年夏アニメが始まりましたが[異世界スーサイド・スクワッド](https://suicidesquad-isekai.com/ja/)がエンタメに徹していて見ていて楽しい。ハーレイ・クインはやっぱり最強。
## はじめに
Googleによる生成AIモデル[Gemma](https://blog.google/technology/developers/gemma-open-models/)の後継である[Gemma 2](https://blog.google/technology/developers/google-gemma-2/)が先日リリースされました。
> 2月に発表した「Gemma」は20億パラメータと70億パラメータの2サイズでの展開だったが、Gemma 2は90億パラメータと270億パラメータの2サイズ。
> 270億パラメータ版は、「そのサイズクラスで最高の性能を発揮し、2倍以上の規模のモデルに匹敵する性能を実現」するという。90億パラメータ版でも、[米Metaの「Llama
Pythonで小数をいい感じに取り扱うために
# はじめに
浮動小数点数の計算は、微妙な誤差が生じることがあります。
これはPythonというかCPUの性質に起因するものです。この記事ではPythonでいい感じに取り扱うための方法を書いていきます。
# Pythonでの挙動とその誤差
Pythonで以下のようなコードを実行します。“`python
a = 0.33
b = 10print(a * b)
“`0.33に10を掛けるだけの単純なものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3283241/9bb1326a-16ae-80b1-9de5-c35ef309231b.png)
実行するとこんな感じ。
ごく僅かですが、誤差がありますよね。これは当然の話で、現代のCPUにおいては精度に関する微小な誤差が生じてしまいます。
これは、コンピュータが有限の精度で実数を表現するために起こります。
(IEEE 754規格では2**53以上の整数値を表現できないため)Pythonの場合も同様で
Pandas: テキストファイルを csv に変換
## 仕様
コラム名、データとなっている次のようなテキストファイルを csv に変換する方法
入力ファイル
“`text:in01.txt
市区町村コード 131016
宛名番号 12345678912
個人履歴番号 1
個人履歴番号_枝番号 1
最新フラグ 1
改製番号 1
世帯番号 234567890123456
“`出力ファイル
“`text:out01.csv
“市区町村コード”,”宛名番号”,”個人履歴番号”,”個人履歴番号_枝番号”,”最新フラグ”,”改製番号”,”世帯番号”
“131016”,”12345678912″,”1″,”1″,”1″,”1″,”234567890123456″
“`## プログラム
“`py:vertical_to_csv.py
#! /usr/bin/python
#
# vertical_to_csv.py
#
# Jul/15/2024
#
# ——————————————————————-
【python】即興で3角形の辺の長さの和を入力して、ピタゴラスの定理が成立するかチェックしてみた
# はじめに
プログラムコンテストの題材で、三角形の3辺の和の長さを整数で入力し、ピタゴラスの定理が成立する(直角三角形)かどうか判定するプログラムを実装しました。## ソースコード
ソースコードは下記になります
“`python
num = int(input())
count = 0
for b in range(1,num):
for c in range(1,num-b):
a = num – b – cans1 = pow(a,2)
ans2 = pow(b,2)
ans3 = pow(c,2)
ans4 = ans2 + ans3
if ans1 == ans4:
count += 1if count >= 1:
print(“YES”)
else:
print(“NO”)
“`## 実行結果
実行結果は下記の画像です。
![tedt1.jpg](https://qiita-image-store.s3
Pandas: List から DataFrame を作成
## プログラム
“`py:from_list.py
#! /usr/bin/python
#
# from_list.py
#
# Jul/15/2024
# ——————————————————————
import pandas as pdkeys = [‘aa’,’bb’,’cc’,’dd’]
data = [[1,2],[4,56],[9,83],[11,24]]df0 = pd.DataFrame({
‘aa’: [1,2],
‘bb’: [4,56],
‘cc’: [9,83],
‘dd’: [11,24],
})print(df0)
print()df = pd.DataFrame({keys[i]: data[i] for i in range(len(keys))})
print(df)
# ——————————————————————
“`##