- 1. 動けば良いの!?要件定義ミスと揃わないビンゴ
- 2. 配列の最大最小 Python3編
- 3. それ,numpy で書かない?–4–
- 4. python3のroundは銀行丸め(にハマったのでメモ)
- 5. i 番目の出力 4 Python3編
- 6. 数値と数字
- 7. 要素の削除・挿入 Python3編
- 8. Pythonでコンプガチャの期待値を求める
- 9. youtube-dlを利用した動画ダウンローダーを作成したので紹介
- 10. 配列のソート/反転/要素数のカウント/配列末尾への追加 Python3編
- 11. 配列の連結 Python3編
- 12. [Python]数字を扱うときの型の注意(整数型,文字列型)
- 13. 本当に最低限だけ覚えて一瞬で使い始めるPolars入門
- 14. Fast Whisperのpydoc version 0.10.0
- 15. paizaでのレーティングチェック(python3)【1724】
- 16. Pythonを使用したAzure Functionsでサードパーティー製のライブラリ導入方法
- 17. QRコードを生成したり読んだりしてみた
- 18. 炭酸イオンかどうかの判定アルゴリズムの作成(ログ)
- 19. 部分配列 Python3編
- 20. 配列の要素の入れ替え Python3編
動けば良いの!?要件定義ミスと揃わないビンゴ
こんにちは!去年は[MIDIキーボードの記事](https://qiita.com/Lundy/items/2c568f17b9df9b9602e0)を書いてました、$Lundy$ です!
一年ぶりの N/S高等学校 Advent Calendar、様々な技術的な記事に圧倒されてそういった記事を書くのは恐れ多いので、
今年は、プログラミングの中でもあまり注目されない**ある作業**をテーマに、体験談ベースの話を書かせていただきます!この記事は二部構成です。
第一章では、今回の体験談を紹介しています。
プログラミングに関して知識が無くても読めるように工夫したので、専門外の方もぜひ!第二章では、開発過程を紹介しています。
ビンゴの生成にまつわるオリジナルのアルゴリズムを開発したので、紙とペンで手元でも再現できる手順を紹介しています。こちらもぜひ!### テーマは「要件定義」
あまり注目されない**ある作業**こそ、今回のテーマ「要件定義」です。
要件定義とは、開発を始める前に、何を作れば良いかを明確にする作業のこと。
この記事では「要件定義」のミスを巡る失敗について体験談ベー
配列の最大最小 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__array_minmax
“`py
N = int(input())
A = list(map(int,input().split()))
print(max(A),min(A))“`
前にもやったことがあるのでわかったが、
他にもNをつかった出力方法がある“`py
print(A[N-1],A[0])
“`
たしかに!!つぎに平均を求めてそこから高いやつだけ出力する問題
https://paiza.jp/works/mondai/array_primer/array_primer__array_ave_step3
色々考えたけどオードソックスに。。。“`py
N = int(input())
A = list(map(int,input().split()))
summary = 0
for i in A:
summary += iaverage = summary / N
for i in A:
if i >= av
それ,numpy で書かない?–4–
## それ,numpy で書かない?–4–
for ループが遅いのに,それを使わざるを得ない選択肢を採っていないかな?
課題:random.random() とか random.uniform() を使うものだから for ループを使わないといけなくなるというジレンマ
https://qiita.com/yamadasuzaku/items/81c9750cf96a844aec38 のモンテカルロ法によるシミュレーション部分は以下のようになっている。
“`python
# 円と長方形の両方に含まれる点の数を数える
overlap_count = 0
for _ in range(num_points):
# 一様な密度で円内の点を生成
angle = random.uniform(0, 2 * math.pi)
r = math.sqrt(random.uniform(0, 1)) * radius
x = r * math.cos(angle)
y = r * ma
python3のroundは銀行丸め(にハマったのでメモ)
pythonのroundは銀行丸めpythonのroundは銀行丸め
pythonのroundは銀行丸めpythonのroundは銀行丸め
pythonのroundは銀行丸めpythonのroundは銀行丸めpythonのroundは銀行丸めなんだったら!!
ヨシッ覚えた(たぶん半年後ぐらいにまたハマる)
半日無駄にしたからな、次から同じミスはしない。pythonとrubyで同じコード書いたはずなに何故か同じ結果にならず調べたら四捨五入するroundの挙動が違っていました。
分かりやすくするために小規模テスト。
“`python3:test.py
test = 0.5000000
for ii in range(10) :
temp = test + ii
print(round(temp),”{:.30f}”.format(temp) )
“`
この実行結果は下記のようにX.5の時に偶数側に丸められます
銀行丸めとかなんか金額の平均計算したり合計したりするときに誤差が少なくなる丸めかたたらしいです
“`実行結果
0 0.500000000
i 番目の出力 4 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__string_i-thinput_step4
“`py
N,M,L = map(int,input().split())
A = input().split()
Ans = A[N-1]
print(Ans[L-1])“`
でも答えを見ると上の最後の二行はもっと短くできて
“`py
print(A[N-1][L-1])
“`
数値と数字
初心者向け(?)の記事で print() の例を示すとき,わざわざ
“`Python
price = 180
print(“バナナ” + str(price) + “円”)
“`と書くのは,数値と数字の違いを注意喚起しているからなのだろうか?とてもそうだとは思えない。
なぜわざわざ str() を使っって,しかも文字列連結 + を使って…
自分がそう思い込んでいて,それを他の人にも善意で教えると…“`Python
price = 180
print(“バナナ”, price, “円”)
“`
あるいは“`Python
price = 180
print(f”バナナ {price} 円”)
print(f”バナナ{price}円”)
“`でいいじゃないか。
price の前後に空白が置かれるかどうかの違いではあるが,空白を置くほうが好ましいと思うがなあ。
ちなみに,`print(“バナナ”, price, “円”)` みたいなので price の前後に空白が置かれるかどうかはデフォルトで決まっていたりして,空白が置かれないのがデフォルトの言語もあ
要素の削除・挿入 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__elm_erase
忘れてしまったので調べて書いた。
要素削除には`pop()`か、`del`をつかう。
違いは、popは()内に(●−1)番目を書き、
delは、配列[●−1]とかく“`py
N,M = map(int,input().split())
A = list(map(int,input().split()))
A.pop(M-1) # この行は del A[M-1] でもOK
print(*A,sep=”\n”)
“`
次は挿入https://paiza.jp/works/mondai/array_primer/array_primer__elm_insert
要素挿入には`insert()`
下記のように使う。“`py
N,M,K = map(int,input().split())
A = list(map(int,input().split()))
A.insert(M-1,K)
print(*A,sep=”\n”)
“`
Pythonでコンプガチャの期待値を求める
# 概要
マクドナルドでとあるキャンペーンを行うようです。
**マクドナルドのハッピーセット「ハローキティ50周年」**
– 第1弾 12月15日(金)~12月21日(木) キティのぬいぐるみ**25種**
– 第2弾 12月22日(金)~12月28日(木) キティのぬいぐるみ**25種**
– 第3弾 12月29日(金)~ 第1弾・第2弾で登場した全**50種**https://www.mcdonalds.co.jp/company/news/2023/1207a/
50種全部ほしいのですが、どうやらランダムっぽいです。
そこで、コンプできる回数の期待値はどうなるか、気になってしまったので、コンプガチャと見立てて、Pythonでプログラムを作成していこうと思います。# コンプガチャの期待値を計算
まず前提として、確率は全部均等とします。また、順番も完全ランダムとします。
コンプガチャの期待値を求める式は以下の通りです。
“`math
コンプガチャ期待値=n\sum_{k=1}^{n} \frac{1}{k}
“`$\sum$(シグマ)に
youtube-dlを利用した動画ダウンローダーを作成したので紹介
# はじめに
Pythonの`youtube-dl`というライブラリを使用して、簡単にYoutubeなどの動画や音声をダウンロードおよび変換できるツールを作成したので紹介します。
https://github.com/MURAMASA2470/youtube_downloads
# youtube-dlとは
youtube-dlは、Python製のコマンドラインツールで、様々な動画共有サイトから動画や音声をダウンロードするためのツールです。YouTubeだけでなく、多くのサポートされているサイトからメディアをダウンロードすることができます。
### 公式リポジトリ
https://github.com/ytdl-org/youtube-dl### サポートされている世界中のメディアサイト
https://ytdl-org.github.io/youtube-dl/supportedsites.html# 使い方
## 環境
– Python 3.x
Python3以上で動作します。2系では動作しない為、バージョンアップしてください。
## インストール
当
配列のソート/反転/要素数のカウント/配列末尾への追加 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__array_sort
こないだコメントで教えていただいたのが早速(出力で)役に立った!
まったく便利だなぁ
答えを見たけど、下記を簡単に書いたものだったので省略“`py
N = int(input())
A = list(map(int,input().split()))
print(*sorted(A), sep=”\n”)
“`簡単すぎたので次の問題も
https://paiza.jp/works/mondai/array_primer/array_primer__array_reverse
“`py
N = int(input())
A = list(map(int,input().split()))
print(*reversed(A), sep=”\n”)
“`やっぱり簡単だったので次の問題も
https://paiza.jp/works/mondai/array_primer/array_primer__elm_count
“`p
配列の連結 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__array_join
extendで連結
“`py
N,M = map(int,input().split())
A = list(map(int,input().split()))
B = list(map(int,input().split()))
A.extend(B)
for i in A:
print(i)“`
でも+でできるらしい。。。
“`py
N,M = map(int,input().split())
A = list(map(int,input().split()))
B = list(map(int,input().split()))
Ans = A + B
for i in A:
print(i)“`
[Python]数字を扱うときの型の注意(整数型,文字列型)
# 本記事の概要
本記事は数字を扱うときに整数型,文字列型どっちで扱うのかを注意しない自分が困りますよという内容です.## 早めの結論
1. ソート順が異なります
1. 言語によって等価演算の扱いが異なります## 注意1: ソート順
“`Python
# リスト
int_list = [i for i in range(20)] # 整数型のリスト
str_list = [str(s) for s in range(20)] # 文字列型のリスト# ソート
int_list = sorted(int_list)
str_list = sorted(str_list)
“`ソート順確認
“`Python
print(int_list)
print(str_list)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
# [‘0’, ‘1’, ’10’, ’11’, ’12’, ’13’, ’14’, ’15’, ’16’, ’17’, ’18’, ’19’, ‘2’,
本当に最低限だけ覚えて一瞬で使い始めるPolars入門
# はじめに
株式会社LITALICOでエンジニアをしています@yknoguchiです。
この記事は[『LITALICO Advent Calendar 2023』](https://qiita.com/advent-calendar/2023/litalico)10日目の記事です。ちなみに今日は僕の誕生日でもあります。めでたい!
来年もきっと誕生日駆動アドベントカレンダーをやると思います。## この記事の特徴
:::note info
この記事では、Polarsの詳しい使い方の解説は行いません。
:::この記事の目標は、以下のとおりです。
**「これを読むことで最低限のPolarsの使い方を覚え、とりあえずすぐにPolarsを触れる」**
QiitaにはPolarsの解説記事が上がっていますので、詳しい使い方はそちらをご確認ください。この記事ではあくまでPolarsを始める最初の一歩を想定しています。そのため、必要最低限の機能しか紹介していません。
## Polarsとは
Polarsとは、Pythonで大量のデータフレームを集計するときに使用するライブラリで
Fast Whisperのpydoc version 0.10.0
ローカルで動かしてみたかったけど、関数の引数がよくわからなかったので、large-v3とやらも試してみたかった。
ちなみに、whisperのGPU対応済んでたら、8G搭載GPUだったし、以下一行で問題なく動きました。(もちろんGPUの搭載メモリ少ないと問題起きるのだろうけど)
“`
pip install faster-whisper
“`計測はしてませんが、たしかに速いです。
“`
Help on package faster_whisper:NAME
faster_whisperPACKAGE CONTENTS
audio
feature_extractor
tokenizer
transcribe
utils
vad
versionCLASSES
builtins.object
faster_whisper.transcribe.WhisperModelclass WhisperModel(builtins.object)
| W
paizaでのレーティングチェック(python3)【1724】
先月ぐらいからpaizaでレーティングチェックをしてきましたがこの辺りが今の限界かな。。
python3
![paiza.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638856/fa74764e-f7c3-8666-99f6-4ace0ecfaa6f.jpeg)
– Aランクの感想と気を付ける点
数学的、情報理論的基礎知識がちゃんと必要
やることさえ思いつけばコードは書けないことはないが
引き出しが少ないのでその思いつくが難しい
自分の数学知識は中学レベルも怪しいのでどうしても長考してしまうのと制限時間があるなかだとどうしてもあせっていい案が思い浮かばない
再挑戦で1週間ぐらい長考した問題もあった(やる気が少ないのもあるけど)タイムアウトさせないため、効率的な処理をさせるためにどうするかとか
再帰関数を使用しているならちゃんと無限ループに陥らないようにするとか– B,Cランク
やってやれないことはないけど
早解きが苦手、あとケアレミスが多い
例えば配列の中を2個づつ3個づつ見ていくみたいな
Pythonを使用したAzure Functionsでサードパーティー製のライブラリ導入方法
# かけた時間の割にとてもシンプルだったので共有
まず、Pythonを使用したAzure Functionsの作成方法はMicrosoftのドキュメントを参照。
https://learn.microsoft.com/ja-jp/azure/azure-functions/create-first-function-vs-code-python
次に、生成されたファイルの **「requirements.txt」** の中に導入したいサードパーティー製のライブラリの名前を記載するだけ。
例:numpy と scikit-learn を追加
“`requirements.txt
# DO NOT include azure-functions-worker in this file
# The Python Worker is managed by Azure Functions platform
# Manually managing azure-functions-worker may cause unexpected issuesazure-functions
num
QRコードを生成したり読んだりしてみた
# はじめに
こんにちは、チョコレートの入っているアドベントカレンダーを12/1に完食したさこもなです!# Wifi?Bluetooth? いいえ、カメラです
私がとある電子工作をしていた時、データを Raspberry Pi に送りたかったのですが、ラズパイにはカメラを接続していたので、それを活用できないかと考え、QRコードを利用することに決めました。# QRコードについて
日常において、QRコードを見ないことはないのではしょうか。
そんなQRコードと聞いたら、皆さんは何を連想しますか?
一般的には「URL」を取得するイメージが強いと思います。
だがしかし!実はURL以外にもテキスト形式など様々なデータを設定することができるのです。今回その際にQRコードの読み取りにつまづいたので、それをここにメモしていこうと思います。
ちなみに、QRコードに埋め込める情報量は、バイナリだと約3000バイトほどだそうです( -`ω-)✧
# Raspberry Pi でQRコードを読み取ってみる
サンプル用のQRコードを生成には「[QRのススメ](https://qr.quel.
炭酸イオンかどうかの判定アルゴリズムの作成(ログ)
## 目標
POSCARファイルから,炭酸イオンを含むどうかを判定するアルゴリズムを作成する.## 前準備
0-1.元素種C, Oを含むPOSCARファイルから,POSCAR.nnlistを作成し,CとOの結合距離の分布図を描く.
0-2.1.より炭酸イオンのCO間の結合距離の最大値を推定する.## 結合探索アルゴリズム
1.POSCARファイルが元素種C, Oを含む
2.POSCAR.nnlistにおいて,原子Cから0-2.のCO結合距離以内に,原子Oを3つ以上含む,中心原子Cが存在する.
####### 条件1:原子Cから原子Oに対して,結合手がちょうど3本生えているか? #######
3.2.の中心原子Cに対して,
1番近い原子がOであり,かつ2番目に近い原子もOであり,かつ3番目に近い原子もOである,中心原子Cが存在する.
4.2.の中心原子Cに対して,4番目に近い原子が
存在しない場合 → 条件1をクリア.
存在する場合 → 5.に進む.
5.2.の中心原子Cに対して4番目に近い原子が,0-2.で推定されるCO間結合の最大値より大きい.
→ 条件1をクリア.
部分配列 Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__partical_array
私が書いたのはこれ
“`py
A,B,N = map(int,input().split())
S = list(map(int,input().split()))
for i in range(len(S)):
if i + 1 >= A and i + 1 <= B: print(S[i]) ``` ただ、rangeだと範囲指定ができるのでforループの部分を 下記のようにしてもよい どっちかと言うと下がいいかも ただ`range`関数の癖には注意かも ```py for i in range(A-1,B): print(S[i]) ```
配列の要素の入れ替え Python3編
https://paiza.jp/works/mondai/array_primer/array_primer__array_elm_change
私が書いたのはこれ
“`py
A,B,N = map(int,input().split())
S = list(map(int,input().split()))
for i in range(len(S)):
if i + 1== A:
tmp = S[B-1]
S[B-1] = S[A-1]
S[A-1] = tmp
breakfor i in S:
print(i)“`
でもよく考えたら、
べつにif文なくてもそのまま変えたらいいだけだった。。。
答え見てわかってしまったorz