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

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

Django で GraphQL 実装してみた リファクタ編

## Django で GraphQL 実装してみた
– [環境構築編](https://qiita.com/dbxkazuxdb/items/77a9c6d809a1c706e2db)
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– [Mutation編](https://qiita.com/dbxkazuxdb/items/0d8e79cdba10349b47ec)
– リファクタ編 ← この記事

### ディレクトリ
shemasフォルダを作成
その中に、NodeやQueryなどを記載していく

“`bash
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── fixtures
│   │   └── ingredients.json
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_category_is_active

元記事を表示

Django で GraphQL 実装してみた Mutation編

## Django で GraphQL 実装してみた
– [環境構築編](https://qiita.com/dbxkazuxdb/items/77a9c6d809a1c706e2db)
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– Mutation編 ← この記事
– [リファクタ編](https://qiita.com/dbxkazuxdb/items/b356912e1968fa8d02bb)

## 実装

### createメソッド追加
app/schema.py
“`diff_python
class IngredientNode(DjangoObjectType):
class Meta:
model = Ingredient
interfaces = (relay.Node,)
filter_fields = {
“name”: [“exact”, “icontains”, “istarts

元記事を表示

Django で GraphQL 実装してみた 環境構築編

## Django で GraphQL 環境構築(Docker)
– 環境構築編 ← この記事
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– [Mutation編](https://qiita.com/dbxkazuxdb/items/0d8e79cdba10349b47ec)
– [リファクタ編]()

### 環境

macOS Sonoma 14.5
docker 26.1.3

python 3.11
Django 4.2.9
graphene-django 3.2.2

#### ディレクトリ

project
├── apps
│   └── backend
│      ├── app # django app
│      ├── config # django project
│      └── manage.py
├── compose.yaml
└── docker
   ├── backend
   │   ├── ng

元記事を表示

Pythonで作ったExeファイルの起動時に、起動中、と表示したい

## 結論
Windows環境であれば、pyinstallerのsplashを利用することで実現できます。

(この記事を書いている2024/06/24時点で)
※公式にexperimentalの記載がありますので、試験的な機能であることをご承知おきください。
※macOSは非対応とのことです。

## 背景
Pythonで作ったExeファイルの起動時に、起動中と表示したい、と思ったものの、なかなか見つけることができなかったので、記事にしてみました。

### もう少し細かい背景
業務上、Pythonで作ったスクリプトをPyinstallerを利用してexe化して配布することが頻繁にあります。
作成したexeの起動に数秒を要し、ユーザー側で起動しているかわかりにくい状況に陥ることがありました。

## 環境
Windows 10
Python 3.11
Pyinstaller 6.4.0

## サンプルコード
以下のように、exeの時にimport pyi_splashで読み込むように指定します。
そして、起動後にpyi_splash.close()で閉じます。

```
# sam

元記事を表示

Pythonで軽減税率のプログラムを作成してみた:8%と10%の消費税を計算

### 前置き
Qiita Engineer Festa 2024に参加し、20個目の記事として、2019年10月1日に消費税が8%から10%に増加した際、導入された軽減税率をわかりやすくするプログラムをPythonで
作成しました。この記事では、ユーザが商品の値段を入力し、8%および10%の消費税を含んだ値段とお釣りを表示するプログラムを紹介します。

### 軽減税率とは
消費税増税に伴って10%となった商品の一部を消費税8%で据え置く制度です。

### 作成したプログラムコード
``` python
def calculate_total_price(price):
tax_rate_8 = 0.08 # 8%の税率
tax_rate_10 = 0.10 # 10%の税率

total_price_8 = price * (1 + tax_rate_8)
total_price_10 = price * (1 + tax_rate_10)

return total_price_8, total_price_10

def main():
# 商品の

元記事を表示

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("無効な入力です。数字を入力してください。")
```
### 出力結果
```

`

元記事を表示

OTHERカテゴリの最新記事