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

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

一定時間 HLS ストリーミングが再生されなかったら配信止めたくない? with Lua + Python3

# はじめに
## 何の記事なの?
nginx-rtmp-module を使ってストリーミング配信しているとどうしても『観たり聴いたりしてない間は止めてもいいかなー』という「オフタイマー」な機能が欲しかったのでふとした思いつきで実装してみることにしました。
Python はそこそこ、 Lua はほぼ初めてな人ですが完全に「なんとなく」で実装しています。

一応誕生日ネタではあります~~が、後日「[個人開発 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/personal-developement)」に枠が残っていたらこの記事を書くことになったきっかけになった話やそのコードを出そうと思います(予定)~~。

## Q: こんなん誰が得すんのさ?
A: (少なくとも)自分は得しましたw

## 前提設定内容
:::note warn
今回関係ある見せられる部分だけ抜き出して内容を差し替えています。
また、ファイル名やパラメーターは後日「個人開発 Advent Calendar(ry」に載せる(かもしれない)ものとは違

元記事を表示

価格の算出 Python3編

https://paiza.jp/works/mondai/data_structure/data_structure__dict_step4

価格リストを作ってその中から買い物リストにあるモノの値段を出力せよという問題。

前のがヒントになってこれは解けた。
一瞬難しかったのが、`name,price = map(str,input().split())`
数値の部分を数値にせず文字列のままにしたが
問題なく検索できたのでそのあとも最後までできた。

“`py
N, M = map(int,input().split())
prices = {}
for i in range(N):
name,price = map(str,input().split())
prices[name] = price

for order in range(M):
item = input()
if item not in prices:
print(-1)
else:
print(prices[item])

“`

元記事を表示

元素種C,Oを含むPOSCARファイルのパスのみ抽出(ログ)

# 目標設定
元素種C,Oを含むPOSCARファイルのパスのみを抽出する.

## スクリプトの説明
* get_C_O_existed_poscar_abs_path_list.py[1]
* 入力:poscar_existed_file_path_list.npy
* 出力:C_O_existed_poscar_abs_path_list.npy

[1] https://github.com/k-morii-toridai/scripts_get_C_O_existed_poscar_abs_path_list.git

## 流れ
以下の順にスクリプトを実行する.
1. get_poscar_existed_path_list.py[1]
2. get_C_O_existed_poscar_abs_path_list.py[1]

## 詳細ログ

“`terminal
pwd
“`
/mnt/ssd_elecom_black_c2c_480G/scripts

“`terminal

元記事を表示

POSCARが存在するディレクトリorファイルパス一覧の取得方法(ログ)

# 目標設定
[1]でcifファイルをcif2cellを用いてPOSCARファイルに変換した.その際,507142件存在したcifファイルは,308325件がPOSCARファイルに変換され,残りはエラーのため変換されなかった.そこで,生成されたPOSCARファイルパス一覧,またはPOSCARが存在する親ディレクトリのパス一覧を取得し,.npy形式で保存する.

[1] cifファイルをPOSCARファイルに一括変換(ログ)

## スクリプトの説明
* get_poscar_existed_path_list.py[2]
* 入力:
* cif/(というディレクトリ名のパス)
* 出力:
* poscar_existed_file_path_list.npy
* poscar_existed_folder_path_list.npy

[2] https://github.com/k-morii-toridai/scripts_get_poscar_existed_path_list.git

元記事を表示

文字列の出現率 (paizaランク C 相当)

https://paiza.jp/works/mondai/data_structure/data_structure__dict_step3

先日は元々数が決まってる英小文字や数字だったけど、今回は出力されたものの出現率を調べるという問題。

ひとまず前回学んだ辞書リスト?(言い方)に入れることはできたけど
同じ単語だったら1増やすってのをどうすればいいんだろうか
おそらく今までのパターンからしてこの内包表記の中でなんかすればいいはずだ

“`py
N = int(input())
A = {input(): A[] for x in range(N)}
B = 
“`
結果は
“`
{‘bcd’: 0, ‘abc’: 0}
“`
まあ予想通りではある。
ここからいろいろやってみたが、
全く進まず30分経過したのでギブ。
ここまでやった。
辞書をupdateすればいいかなと思ったけど
結局できず。

“`py
N = int(input())
count = 0
A ={}
for x in range(N):
target = input()
if i

元記事を表示

【Python】csv.DictReaderで遭遇したエラー2件の解決方法 (KeyError / invalid literal for int() with base 10)

# 概要
Pythonの`csv.DictReader`オブジェクトを利用していたら以下の二つのエラーに遭遇しました。
どちらも解決できたので、こちらで紹介します。

– `KeyError: ‘XXXX’`
– `ValueError: invalid literal for int() with base 10: ‘XXXX’`

## 修正前コード

“`py
import os
import csv

csv_directory =’./csv’

for filename in os.listdir(csv_directory):
if filename.endswith(‘.csv’):
csv_file_path = os.path.join(csv_directory, filename)

with open(csv_file_path, newline=”, encoding=’utf-8′) as csvfile:
csv_reader = csv.DictReader(csvfi

元記事を表示

[Python] 土日祝日を除いた営業日の数を調べる

#### 0.初めに
国内株などに投資をして、記録をつけていると、営業日の数を知りたくなる。

#### 1.仕様
土日に加え、祝日を差し引く。
しかしこれでは証券市場・金融機関の休みに対応できない
12/31,1/2,1/3を差し引く
役所の休みは
12/29,12/30を差し引く

11/22から11/22を指定したら1日と返してほしい。0日ではない。

#### 2.jpholiday,workdaysをインストールする
コマンドプロンプトで
`pip install jpholiday`
`pip install workdays`
を入力

#### 3.サンプルプログラム
任意の日付から任意の日付までの日数
“`python:business_day.py
import datetime
import jpholiday
import workdays

start_date = datetime.datetime(2023,1,1)
end_date = datetime.datetime(2023,11,23)
holidays =[datetime.datetime

元記事を表示

Python3で画像をリサイズする方法

## 要 旨
Python3を使用して、画像を1個リサイズする方法について記述します。
## 実行環境等
コンピューター:iMac 21.5インチ 2017年モデル
mac OS:Ventura 13.6.1
python: 3.8.3
## 実施要領
インプット画像: input.png (1280,720)
アウトプット画像: output.png (896,504)
とします。
Python3インタープリターの起動
“`python:インタープリターの起動
username%python3
“`
必要なライブラリの読み込み
“`python:ライブラリの読み込み
>>>from PIL import Image
“`
インプット画像を読み込む
“`python:インプット画像の読み込み
>>>img = Image.open(‘input.png’)
“`
サイズの確認
“`python:サイズの確認
>>>img.size
(1280,720)
“`
リサイズする
“`python:リサイズ
>>>img_resized = img.resize((896,5

元記事を表示

OpenAI の各モデルを使って音声でチャットしてみる

# やりたいこと
OpenAI が提供しているモデルに、新しく Text to Speech のモデル (tts-1, tts-1-hd) が追加されました。Input にテキストを入力するとそのテキストを自然なイントネーションで読み上げてくれるものです。
元々あった Speech to Text のモデルである whisper-1 と組み合わせることで GPT のモデルと音声で対話できるなーということでやってみた内容をまとめてみます。

# 環境
* Windows11 Pro
* WSL2 (Ubuntu22.04)
* Python 3.10.12
* 音声入力のためのマイクが必要です
* 音声出力のためのスピーカーが必要です

:::note warn
OpenAI が提供する API を使うためにはあらかじめクレジットを追加しておく必要があります。無料枠が残っている場合は、その範囲内で利用できます。
:::

# 構成
分かりきっているが構成は以下のような形。「」は音声、”” はテキスト。

![image.png](https://qiita-image-store

元記事を表示

pygameの簡単なコードなのになぜか重いのは、イベント処理の不足が原因の可能性

## 要約
簡単なテストコードでも重くフリーズしたようになるが、イベントハンドリングを行っていないからかもしれない。

## コード

“`python
import pygame

# 初期化
pygame.init()

# 定数
WIDTH, HEIGHT = 800, 600
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 0, 255)

# ウィンドウの設定
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption(“Game Template3”)

# フレーム数
clock = pygame.time.Clock()
# フレームレートの上限設定
fps_limit = 30

# ゲームループ
running = True

# 再描画対象のrectリスト
dirty_rects = []

pygame.display.flip()

while running:
clock.tick()
di

元記事を表示

英小文字の出現率 (paizaランク C 相当)

https://paiza.jp/works/mondai/data_structure/data_structure__dict_step2

今度はアルファベット版。
アルファベットを配列に入れないといけないのだけどpythonでそんなのあったっけ?
と調べてみると、結構使う人がいるらしいですね、うまくまとまっているのがあったので
こちらで。(ありがとうございます!)

https://qiita.com/okkn/items/3aef4458ed2269a59d63

たしかにVBAのときもchrつかったなー。
あのときは呪文のようにしか聞こえなかったです(まだVBAはじめて2年目ぐらいのとき)

とはいえ。
97 +26文字ですね、覚えておこう。たしかによく使いそうです。

“`py
[chr(i) for i in range(97, 97+26)]

“`

あとはこうですね。
前回の方法をつかってやります。
今回は私が使った方法がよかった。

“`py
N = int(input())
S = list(input())
A = [chr(i) for i in r

元記事を表示

Atcoderほぼ緑コーダーのスニペット(Python)

# 記事構成
[1. Atcoder自己紹介](#1-Atcoder自己紹介)
[2. スニペット集](#2-スニペット集)
[3. 最後に](#3-最後に)

# 1. Atcoder自己紹介
– 茶色🟤コーダー
– 主な使用言語:Python,C++(C++は最近使ってません)
– 一時期休んでたけど最近再開
– 現在のグラフ↓

![abckuri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3564785/136561dd-ef66-36ae-af8c-26e4f88aa4d3.png)

まあほぼ緑コーダーって言っても問題ないはず

# 2. スニペット集
一応競プロで使いやすいものを作ってます.
## Yes,YES,No,NO
競プロのよくある出力用に

“`python:Yes出力
“Print Yes”: {
“prefix”: “yes”,
“body”: [
“print(‘Yes’)”,
],
“description”: “print Yes”

元記事を表示

ABC329 提出したコードや感想 (言語:Python)

# 記事構成
[1. Atcoder自己紹介](#1-Atcoder自己紹介)
[2. 各問題の感想と提出コード](#2-各問題の感想と提出コード)
[3. 今回の結果想](#3-今回の結果)
[4. 最後に](#4-最後に)

# 1. Atcoder自己紹介
– 茶色🟤コーダー
– 主な使用言語:Python,C++(C++は最近使ってません)
– 一時期休んでたけど最近再開
– 本コンテスト終了時のグラフ↓

![abc329.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3564785/53b6b5d3-abfe-e688-6478-5386cd105d7e.png)

# 2. 各問題の感想とコード
## A問題
特にいうこと無し.ABCのAって感じの問題が久しぶりに来た
コードは結構綺麗に書けたんじゃないかな

“`python:A問題
s = input()
for char in s:
print(char, end=’ ‘)
“`

## B問題
一回最大値探してからもう一

元記事を表示

数値の出現率 Python3編

https://paiza.jp/works/mondai/data_structure/data_structure__dict_step1

> 0 以上 9 以下の整数が N 個与えられます。各数値の出現回数を求め、「0」の出現回数、「1」の出現回数、…「9」の出現回数、をこの順に半角スペース区切りで1行に出力してください。

前回と比べたら難しくはないかな。。。

“`py
N = int(input())
A = list(map(int,input().split()))
counts =[]
for i in range(10):
count = 0
for j in A:
if i == j:
count += 1
counts.append(count)
print(*counts)

“`

答えだと、
countを配列にして、それぞれのインデックス(0~9)ごとに
数値を加算する方法だった。
ちょっと一瞬わかりづらいかも?

`print(*counts)`もよいが、
`print(” “.j

元記事を表示

Elasticsearch version8 におけるAPIの認証の通し方

# はじめに
Elasticsearchがversion8になってからcurlコマンドが実行できなくなったことはありませんか?
“`shell
$ curl -s http://localhost:9200/
“`
実行結果
“`json
{
“error”:{
“root_cause”:[
{
“type”:”security_exception”,
“reason”:”missing authentication credentials for REST request [/]”,
“header”:{
“WWW-Authenticate”:[
“Basic realm=\”security\” charset=\”UTF-8\””,
“ApiKey”
]
}
}
],
“t

元記事を表示

【Python】circular importエラーをシンプルに解説

Qiitaで検索しても手早くcircular importを解決する記事が見当たらず、初心者に不親切そうだと見受けられたので、手早く解説する記事をここに置きます。

## Circular Importとは?
:::note
日本語では **循環参照** というキーワードに当たります。
これで検索するといっぱい日本語の情報にヒットするでしょう。
:::

今回のバグを言葉で表すと、 **モジュールが巡り巡って自分を`import`するとエラーになる** ことです。

### 単純な例(2モジュール)
“`python:A.py
from B import f_b

def f_a():
f_b()
“`

“`python:B.py
from A import f_a

def f_b():
f_a()
“`

これは明確に`A→B`と`B→A`の依存関係がありますね。

:::note
慣例通り、`X→Y`は「XがYに依存している」という意味で用いています。
:::

例えば`A.py`を実行したり、他のモジュールから`import A`したりすると、`cir

元記事を表示

文字列の配列 (paizaランク C 相当)

https://paiza.jp/works/mondai/data_structure/data_structure__string_boss

>縦 H マス、横 W マスの H × W マスからなる迷路 S があります。上から i 行目、左から j 列目のマス は S_ij とあらわされ、 S_ij が「#」のとき壁であり、「.」のとき道です。整数 r、c が与えられるので、S_rc が壁かどうか判定してください。

一風変わった問題。

おそらくループで縦ヨコのマスを作ればいいんだとは思うが、
とりあえず1行目の各変数を格納しておいて、次の2行目がどうなるのか見てみた。

“`py
H,W,r,c = map(int,input().split())
print(input())

“`

“`
..#.
“`
なんとー。半スペで区切られていないやつだった。なるほど。
ほんなら、1文字ずつスライスして配列にいれればいいんかな?
やってみましょう。
ちなみにやり方は知らんが、phpで同じことをやったことがあるので
pythonでも同じことができるのか調べてみた。

ありま

元記事を表示

【Python】同じディレクトリの__init__を使うとcircular importになる

## 事象
同じディレクトリDに
“`
D
┠ __init__.py
┠ M1.py
┗ M2.py
“`
の3ファイルがあるとしましょう。
それぞれが以下のスクリプト記述がされているとします。

“`python:__init__.py
from D.M1 import f1
from D.M2 import f2
“`

“`python:M1.py
from D import f2

def f1():
print(“f1”)
f2()
“`

“`python:M2.py
def f2():
print(“f2”)
“`

ここで、外から`D.M1`を`import`すると`circular import`エラーが発生します。

## 原因
`M1`と`M2`モジュールは、`M1→M2`の一方通行依存関係なので、機能的には循環参照にはなっていません。

しかし、
“`python:M1.py
from D import f2
“`
の部分で、`M1`は`__init__.py`を`import`しています。
そして、`__init_

元記事を表示

cifファイルをPOSCARファイルに一括変換(ログ)

# 目標設定
cif2cell[1]を使って,cifファイルをPOSCARファイルに一括変換する.

[1] https://github.com/torbjornbjorkman/cif2cell

## 流れ
1. cif2cellのインストール.
2. 各cifファイルが存在するディレクトリ階層に,cifファイル名と同じ名前のディレクトリを作成.
* mk_cif_num_name_dirs.py[2]
* 入力:cif/(というディレクトリ名のパス)
* 出力:なし
3. 2. で作成したディレクトリに,cif2cellを用いて作成したPOSCARファイルを保存.
* mk_poscar_by_c2c.py[2]
* 入力:cif/(というディレクトリ名のパス)
* 出力:POSCARファイル
* 出力先:各cifファイル名のついたディレクトリ

[2] https://github.com/k-morii

元記事を表示

動的配列 Python3編

https://paiza.jp/works/mondai/data_structure/data_structure__array_boss

>N 個の要素からなる数列 A が与えられます。数列 A に対し、次の 3 つの操作を行うプログラムを作成してください。

>・ push_back x : A の末尾に x を追加する
・ pop_back : A の末尾を削除する
・ print : A を半角スペース区切りで1行に出力する

>例えば、入力例 1 において、数列 A は最初「1 2 3」です。最初の操作は「push_back 10」なので、末尾に 10 を追加して「1 2 3 10」となります。 2 つ目の操作は「push_back 12」なので、「1 2 3 10 12」となります。 3 つ目の操作は「print」なので「1 2 3 10 12」を出力します。 4 つ目の操作は「pop_back」なので末尾の「12」を削除して、「1 2 3 10」となります。最後の操作は「print」なので「1 2 3 10」を出力します。

というなかなかややこしい問題。

元記事を表示

OTHERカテゴリの最新記事