- 1. NAND 演算の基本 (paizaランク D 相当)
- 2. 集合の結合 Python3編
- 3. 重複の判定 1 (paizaランク C 相当)
- 4. 重複の削除 Python3編
- 5. 集合の探索 Python3編
- 6. 商品の検索 (paizaランク C 相当)
- 7. 一定時間 HLS ストリーミングが再生されなかったら配信止めたくない? with Lua + Python3
- 8. 価格の算出 Python3編
- 9. 元素種C,Oを含むPOSCARファイルのパスのみ抽出(ログ)
- 10. POSCARが存在するディレクトリorファイルパス一覧の取得方法(ログ)
- 11. 文字列の出現率 (paizaランク C 相当)
- 12. 【Python】csv.DictReaderで遭遇したエラー2件の解決方法 (KeyError / invalid literal for int() with base 10)
- 13. [Python] 土日祝日を除いた営業日の数を調べる
- 14. Python3で画像をリサイズする方法
- 15. OpenAI の各モデルを使って音声でチャットしてみる
- 16. pygameの簡単なコードなのになぜか重いのは、イベント処理の不足が原因の可能性
- 17. 英小文字の出現率 (paizaランク C 相当)
- 18. Atcoderほぼ緑コーダーのスニペット(Python)
- 19. ABC329 提出したコードや感想 (言語:Python)
- 20. 数値の出現率 Python3編
NAND 演算の基本 (paizaランク D 相当)
https://paiza.jp/works/mondai/logical_operation/logical_operation__basic_step5
今やっているのは論理演算メニューシリーズ。
とりあえず書き方は下のコード通り覚えておけばOKだけど
論理については理解しておいたほうがいいです。
論理と覚えるところは区別しましょうpythonだと、論理積、論理和、否定、排他的論理和があり、それらをつかって
他の論理も表現します。“`py
A, B = map(int, input().split())
#論理積
print(A and B)
#論理和
print(A or B)
#否定(単項演算)
print(int(not A))
# EOR,XOR演算(排他的論理和)
print(a ^ b)
# NOR演算(否定的論理和)
print(int(not(A or B)))
# NAND演算(否定的論理積)
print(int(not(A and B)))
# XNOR演算(排他的否定的論理和)
print(int(not(A ^ B)))
“`
ド・モルガンの法
集合の結合 Python3編
https://paiza.jp/works/mondai/data_structure/data_structure__set_boss
2つの集合を1つにしてソートして出力する問題
和集合は下記のように `A | B` または `A.union(B)`“`py
N = int(input())
A = {int(x) for x in input().split()}
B = {int(x) for x in input().split()}
print(*sorted(A | B))
“`他のやり方
“`py
N = int(input())
A = [int(x) for x in input().split()]
B = [int(x) for x in input().split()]c = set(A + B)
print(” “.join(map(str, sorted(c))))
“`下の方が直感的にわかりやすいか?
重複の判定 1 (paizaランク C 相当)
https://paiza.jp/works/mondai/data_structure/data_structure__set_step3
>N 個の要素からなる数列 A が与えられます。2 ≦ i ≦ N の各 i に対して、A_i と同じ値が A_1 から A_{i-1} の間にあるかどうかを判定してください。
考え方としては、まずAのリストをつくり、そこからBのリストに、まず1個入れ、そこからループするたびにBのリストにA1つずつ入れていき、
ループするたびにあるかどうか確かめ出力し、また1個入れ。。。というのを繰り返す“`py
N = int(input())
A = [int(x) for x in input().split()]
B = []
for i in range(N):
if i == 0:
B.append(A[i])
else:
if A[i] in B:
print(‘Yes’)
else:
print(‘No’)
重複の削除 Python3編
https://paiza.jp/works/mondai/data_structure/data_structure__set_step2
>N 個の要素からなる数列 A が与えられます。数列 A は昇順にソートされています。A の重複した要素を取り除いて昇順に出力してください。辞書の作り方を前回学んだので
さっそくここでも。“`py
N = int(input())
A = {int(x) for x in input().split()}
print(*sorted(A))“`
この場合他の作り方もあったので復習で一応やっとく
“`py
print(” “.join(map(str, A)))
“`
集合の探索 Python3編
https://paiza.jp/works/mondai/data_structure/data_structure__set_step1
集合をつくってそこから検索せよという問題。
集合を作るのは初めてだけど辞書と同じはず?
とりあえず作ってみた
作った集合をprintしてみたら文字列型だったので事前に検索するのを
文字列型にしたらOKだった“`py
N, B = map(int, input().split())
B = str(B)
A = set(input().split())if B in A:
print(‘Yes’)
else:
print(‘No’)
“`
{}があるので辞書みたいだが、違うのは、キーがないこと。
他にも Aをつくるときにintにしていれる方法もあった“`py
A = {int(x) for x in input().split()}
“`
商品の検索 (paizaランク C 相当)
https://paiza.jp/works/mondai/data_structure/data_structure__dict_boss
>N 個の文字列 S_1, … , S_N と、Q 個の文字列 T_1, … , T_Q が与えられます。各 T_i について、以下の処理を行ってください。
・ S_j == T_i を満たす最小の j を出力する。ただし、そのような j が存在しない場合は -1 を出力する。という問題。
下以外はとくに難しいところはなく、すぐ解けた。
ポイントは
該当する要素のインデックスを調べるというところ。
見つかったかどうかのフラグ変数を実装したところ。
そしてループで該当するものが見つかったら
その場でbreakしないといけないところ。“`py
N,Q = map(int,input().split())
S = [input() for _ in range(N)]for _ in range(Q):
target = input()
flag = 0
for i in S:
if
一定時間 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] = pricefor 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 csvcsv_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 workdaysstart_date = datetime.datetime(2023,1,1)
end_date = datetime.datetime(2023,11,23)
holidays =[datetime.dat
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