Python3関連のことを調べてみた

Python3関連のことを調べてみた

python組み込み関数解説①

## 本記事で解説する関数たち
– abs
– aiter
– all
– anext
– any
– ascii
– bin
– bool
– breakpoint
– bytearray
– bytes

## 注意
Python3.12.4 現在の内容です
また、
“`python
print(“Hello World”)
> Hello World
“`
と書いた時、上の部分が実行するコード、その下の`>`に続く部分はshellへの出力とする

## 関数解説
### abs
入力値の絶対値を返す
数値系の方でなくてはならない
abs関数の実行時に、`object.__abs__(self)`が呼び出される
“`python
print(abs(1-44))
> 43

print(abs(43))
> 43

print(abs(-1*1/3))
> 0.3333333333333333

# 複素数の場合は…
print(abs(3 + 4j))
> 5.0
“`

### aiter
`async – awairt` に関する関数のため、まずは非同期処理につい

元記事を表示

Python3: ファイルの行数を数える

## プログラム

“`py:line_count.py
#! /usr/bin/python
#
# text/line_count.py
#
# Jun/24/2024
#
# ——————————————————————–
import sys
import subprocess
#
# ——————————————————————–
def count_lines(filename):
try:
result = subprocess.run([‘wc’, ‘-l’, filename], capture_output=True, text=True)
output = result.stdout.strip()
line_count = int(output.split()[0])
return line_count

元記事を表示

print関数のつかいかた

:::note warn
Python3.12 での情報です
今後様々な改善がなされていくと考えられます
:::

## Print文完全形
“`python
print(*objects, sep=’ ‘, end=’\n’, file=None, flush=False)
“`
オプションがそれぞれ明記されていない時、
sepは` ` (Space) endは`\n`(改行)、fileは`None`、flushは`Flase`となっている
なお、`*objects`の`*`は、アンパック演算子と呼ばれる。

### アンパック演算子
`*objects`によって、objectsの内容を分解することができる
“`python
print(*range(3))
# 0 1 2

print(*”abc”)
# a b c

def f(x, y , z):
return x**2+y*x+z
a = 1, 1, 2
print(f(*a))
# 4

def f(x, y, z):
return x ** 2 + y * x + z

a = [1, 1,

元記事を表示

Stability AIの最新サービス「Stable Image Ultra」とStable Diffusionの過去モデル(2022年〜)の生成画像をひたすら比較して進化を実感してみた

[Supership](https://supership.jp/)の名畑です。[創刊50周年記念 花とゆめ展](https://www.hanayume-ten.com/)は、歴史を感じながら、自分の思い出を重ねられる、素晴らしい展示でした。本当に名作揃い。

## はじめに

2023年7月に「[Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた](https://qiita.com/nabata/items/a9b3e759bc09c20581f6)」という記事を書きました。[Stability AI](https://ja.stability.ai/)による画像生成AIモデルである[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の各バージョンでの出力結果を比較してみるという内容でした。

あれから1年経ちましたので、同じように、現時点での最新モデルと過去のモデルを比較しようというのが今回の主旨となります。2022年〜2024年までを比

元記事を表示

Python3: ヘッダーを考慮した csv ファイルの読み込み

## csv ファイル

ヘッダーを考慮すれば次の2つのファイルは、同じデータになります。

“`text:cities_header.csv
id,name,population,date_mod
t1271,千葉,59178,2003-9-21
t1272,勝浦,47215,2003-10-15
t1273,市原,83654,2003-6-14
“`

“`text:cities_ex02.csv
id,date_mod,population,name
t1271,2003-9-21,59178,千葉
t1272,2003-10-15,47215,勝浦
t1273,2003-6-14,83654,市原
“`

ふたつ目のファイルは次のようにして作成しました。

“`bash
awk -F, ‘{print $1″,”$4″,”$3″,”$2}’ cities_header.csv > cities_ex02.csv
“`

## csv を読むプログラム

“`py:csv_header.py
#! /usr/bin/python
#
# csv_header.py

元記事を表示

cfgribをgoogle colaboratoryで使う

`ecmwf-opendata`をgoogle colaboratory(以下google colab)で使いたくて色々試していたが、gribデータをうまく読み込めず利用できなかった。また、なぜかこの手の記事を見つけられなかった(ので環境のせいかも)。

## google colabでの環境
“`
!python –version
“`
Python 3.10.12
“`
cfgrib.__version__
“`
‘0.9.12.0’
“`
xarray.__version__
“`
‘2023.7.0’

## エラーの状況
`cfgrib`はgribフォーマットのデータを`xarray`というPythonパッケージで読み込むための補助的な外部パッケージ。

よって、google colabで使う場合は以下のようにpipインストールをして利用する。

“`
!pip install cfgrib
!pip install xarray
“`
その後、`xarray`の`open_dataarray`メソッドにて、`engine=’cfgrib’`とキーワード引数

元記事を表示

【Python】special variablesって知ってる?

# はじめに

Pythonをデバッグしたときに出てくる `special variables`について、皆さんご存知でしょうか? この記事では、`special variables`について、解説したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156096/ac0d2353-fa2a-222e-8b59-73aa3a5e2e39.png)

special variablesをクリックして、開くと[Dunder(特殊メソッド)](https://qiita.com/twrcd1227/items/e5cb450b5a225c65d12b)がいっぱい出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156096/abed466a-9c0d-4e78-41c3-72c99882b8b8.png)

# special variablesとは?

インタープリタ

元記事を表示

Pythonでキューを list, deque で実装したときの速度比較

# Pythonでキューを実装

キューを実装したときパフォーマンスを比較するため、次の5パターンを用意した

1. dequeを使ってpopleft→append
1. dequeを使ってappend→popleft
1. dequeを使ってmaxlen指定でappend
1. listでpop→append
1. listでappend→pop

### コード

“`python
import timeit
from collections import deque

import matplotlib.pyplot as plt
import numpy as np

LIST_LEN = 10**8
APPEND_REP = 10**6
LOOP = 15

def que_test1(list_len=LIST_LEN, append_rep=APPEND_REP):
que = deque([.0]*list_len)
for i in range(append_rep-1):
que.popleft()
que.appe

元記事を表示

PythonのJSONでkeyにintを使うとデータが飛ぶ

# はじめに
JSONって便利ですよね
でもちょっと扱いを間違えると場合によっては上書きでデータが飛んでしまったり…

# 本題
問題です。
“`python3
data = {2024: “令和6年”}
“`
というdict型のデータがあったとします。
ここで、
“`python3
print(data[2024])
“`
を実行したら何が表示されるでしょうか?

…簡単ですね。
“`
令和6年
“`
です。

## JSON化して保存する
データが出来上がったので保存します。
“`python3
import json

data = {2024: “令和6年”}
with open(“data.json”, mode=”w”) as f:
f.write(json.dumps(data))
“`

## 保存したJSONを利用する
出来上がったデータを読み込んで西暦2024年が和暦何年なのかを参照します。
“`python3
with open(“data.json”) as f:
data = json.loads(f.read())

元記事を表示

[数理最適化][実装]Python で Nelder-Mead法


# **概要**

* **Nelder-Mead法**は導関数を使わずに凸関数を最適化するアルゴリズムです.
* 本稿ではNelder-Mead法を実装しベンチマークテストを行います.
* 言語は**Python**で実装します.
* 本稿では実装とテストに焦点を置いているため数学的な背景についてはあまり触れませんのでご容赦ください.
* 説明には**個人的な解釈が多分に含まれます*

元記事を表示

非常に便利なhping3

いつも負荷試験等でお世話になっているhping3についての記事です。

:::note warn
※攻撃ツールとして利用することは厳禁であり、必ず管理下にあるノードに対してのみ実行しましょう。
:::

hping3は非常に強力なツールで、TCP/IPパケットの生成、送信などができネットワークの診断やセキュリティテストなど幅広く利用されていると思います。ただ負荷試験については場合によってですが、そのままの利用ができないパターンもあります。

その一つとして、hping3には時刻データを含むパケットを送信する機能がありません。そのため、時系列データを伴う負荷試験にhping3を利用するのは難しくなります。

**※もちろん、JMeterとかGatlingを使うという方法もありますが、時系列データのテストにDummyデータ送りたいだけの場合とか、わざわざ新しいツール覚えるより手っ取り早くhping3のみで負荷試験して時間短縮したいですよね?**

そこで、今回はあるデータを大量に送信しつつも、送信タイミングの日時をデータ内のタイムスタンプフィールドに設定するという事をやってみました。(※コ

元記事を表示

Pythonで野球の試合結果をシミュレートしてみた

### 前置き
Qiita Engineer Festa 2024に参加してから、この記事で19個目の記事投稿になる。

そこで、私はパッと思い浮かんだ。野球は、2つのチームが攻撃と守備を交代しながら、各頂点に4つのベースを持つ菱形の区画において、得点を競い合うスポーツである。基本的には、9イニング制で1番から9番まで選手がいて、3アウトで攻守交代になる。

### 以前3年前に作成したプログラムコード
“`python
import random, math

max_inning = 9
team1, team2, hit = “”, “”, 0
inning, score1, score2 = 1, 0, 0
inscore, inscore1, inscore2 = 0, 0, 0
hitper, hitInt, outs = 101, -1, 0
manual, end, batter = False, True, False
players = [0, 0, 0, 0]

def hitsim(team, manual):
global players, hitpe

元記事を表示

【AWS】関数delattr()を使って属性を削除する方法とサンプルコード

# 概要
指定したオブジェクトから指定した属性を削除する`delattr`関数を使ってみたので紹介します。

公式ドキュメントはこちらです。

https://docs.python.org/ja/3/library/functions.html#delattr

# サンプルコード

“`py
class Person:
def __init__(self, name, age):
self.name = name
self.age = age

john = Person(“John”, 30)

print(john.__dict__) # {‘name’: ‘John’, ‘age’: 30}

delattr(john, ‘age’)

print(john.__dict__) # {‘name’: ‘John’}
“`

`delattr(john, ‘age’)`を実行すると、`john`から`age`属性が削除されたことがわかります。

もちろん、ここで属性ではないもの(例:`gender`)を選択するとエラーになります。

元記事を表示

JavaScriptでECDSA署名してPythonで検証しようとしたら

## JavaScriptでECDSA署名したらPythonで検証できなかった

JavaScriptはWeb Crypto APIで署名

SubtleCrypto: sign()とSubtleCrypto: verify()

https://developer.mozilla.org/ja/docs/Web/API/SubtleCrypto/sign

https://developer.mozilla.org/ja/docs/Web/API/SubtleCrypto/verify

PythonはCryptographyライブラリで検証

cryptography.hazmat.primitives.asymmetric.ec.ECDSA

https://cryptography.io/en/latest/hazmat/primitives/asymmetric/ec/#elliptic-curve-signature-algorithms

上手くいかない。
JavaScript同士、Python同士は問題ないのでお互いのデータのやり取りがおかしい。

SubtleC

元記事を表示

Pythonでサイコロ転がしゲームを作ってみた

### 前置き
今日は、6月21日だ。そこで、サイコロのことをぱっと思い浮かんだ。
サイコロの目は、6つあり、目の総和が21である。
そのような理由で、パソコンとサイコロを転がすゲームが作りたくなった。

### プログラムコード
“`python
import random

def get_user_choice():
while True:
try:
user_choice = int(input(“1から6の数字を選んで、入力してください: “))
if user_choice not in range(1, 7):
print(“無効な入力です。サイコロの目(1から6)を入力してください。”)
else:
return user_choice
except ValueError:
print(“無効な入力です。数字を入力してください。”)
“`
### 出力結果
“`

`

元記事を表示

Windows PythonとBLEAKを使ってESP32とBLE通信してみました

以前作ったESP32のBLE通信ソフトですが僕にとっては必要十分だったみたいで、
気が付けば2024年の今でも同じソースコードで使っています。
そこで以前WindowsC#で挫折したBLE接続ですが最近PythonのBLEAKで使える様に
なったそうなので挑戦してみる事にしました。

#実行に必要なリソース
  ESP32とArduinoIDE開発環境(以前作った奴です)
  Windows機とPython開発環境(Bleakをインストールしてください

#機能
  ESP32とSerial通信ぽい事をします(サンプルプログラムミみたいな感じです

#使い方
  ESP32側もコンパイルして動作させておきます
 Windows機からは「ESP32_BLE_SERVER」に接続して通信を行います。
通信するだけのソフトなので、後はお好きな様にどーぞ

#問題点
  接続・切断テストを行っていますが、全ての条件が網羅できていない様です。
  私はあまりPythonの事をよく判っていません。

“`py:WindowsBLE.py:
import asyncio
impo

元記事を表示

Pythonで決定性チューリングマシンのシミュレーションを行う

## 動機
学校の課題で決定性チューリングマシンの設計があったので, それの答え合わせ用にチューリングマシンのシミュレーションを行うためのPythonコードを書きましたので共有します。
何回か動作は確認しましたが保証はできません。
## コード
“`dtm.py
from typing import List, Dict, Tuple
from enum import Enum

class Transition(Enum):
“””
Enum representing the direction of transition in a Turing Machine.

Attributes:
RIGHT (int): Represents a move to the right on the tape.
LEFT (int): Represents a move to the left on the tape.
“””
RIGHT = 1
LEFT = -1

class State:

元記事を表示

python exe化

# pythonプログラムをexe化する
exe化ツールはいくつかあるが、pyinstallerを利用
Nuitkaはexeファイルが大きくなる傾向
* pyinstaller
* Nuitka

`pyinstaller –clean –onefile –noconsole`

使ってみたけど `–noconsole` だとexeが落ちた時に気付けないので、最近は`–noconsole`は外して実行
pyinstallerもexeファイルはでかい。。。

Edgedriverexeを取り込みたい
–binary “edge.exe;edge.exe”
でうまくいかない

アイコンのオプションもあったな。
–icon=test.ico

アイコンファイルの作り方
https://service.tree-web.net/icon_converter/

元記事を表示

Pythonで現在のプロ野球の順位表を作ってみた

プロ野球も、交流戦が終わり、今週金曜日からリーグ戦が再開しようとしている。
そこで、私はPythonを使って現在のプロ野球の順位表を作成するのに興味を持った。

### プログラムコード
“`
pip install pandas
import pandas as pd

# セントラルリーグのデータ
central_league_data = {
“チーム”: [“広島カープ”, “阪神タイガース”, “読売ジャイアンツ”, “横浜ベイスターズ”, “ヤクルトスワローズ”, “中日ドラゴンズ”],
“勝利数”: [32, 32, 31, 32, 27, 27],
“敗戦数”: [25, 30, 30, 31, 33, 33],
“引き分け数”: [4, 4, 5, 1, 4, 5],
“勝率”: [0.561, 0.516, 0.5081, 0.5079, 0.45, 0.45],
“ゲーム差”: [None, 2.5, 0.5, 0, 3.5, 0]
}

# パシフィックリーグのデータ
pacific_league_data =

元記事を表示

PythonでCoin Toss Gameを作ってみた

今年は、パリオリンピックが開催される。

そこで、私はよくサッカーの試合でエンドを決めるために使われているコイントスをPythonを使い、プログラムコードを書くことについて、興味を持った。

### What is Coin Toss?
硬貨などを投げ上げて、落ちたそれの裏表で物事を決めることである。

### プログラムコード
“`py
import random

def get_user_choice():
while True:
try:
user_choice = int(input(“What do you choose? Type 1 for Heads, 2 for Tails, or 3 to Quit: “))
if user_choice not in [1, 2, 3]:
print(“Invalid input. Please choose 1 for Heads, 2 for Tails, or 3 to Quit.”)
else

元記事を表示

OTHERカテゴリの最新記事