- 1. 数値を半角スペース、0埋めで出力 Python3編
- 2. 実数をフォーマット指定して出力】複数の実数を出力 (paizaランク C 相当)
- 3. [Python]リストのコピーとfor文
- 4. Pythonで標準入力を受け取る方法
- 5. 【matplotlib】random_walkでお絵描きしてみた
- 6. get_poacar_file_folder_abs_path_list.pyの実行ログ
- 7. 【Google Cloud】 Firestoreデータベースにローカルから接続する方法【Python】
- 8. 1 つの実数を出力 4 Python3編
- 9. 1 つの実数を出力 3 Python3編
- 10. PyQGISでタイルレイヤのURLを取得したい
- 11. ホールケーキ,ナイフ2回で3等分
- 12. 【行によって長さが違う二次元配列の表示】すべての行の長さと値が不定な 2 次元配列の出力 Python3編
- 13. すべての行の長さが不定な 2 次元配列の出力
- 14. 炭酸イオンを1つの点に置換した結晶構造の作成ログ
- 15. 直角三角形の出力 (paizaランク D 相当)
- 16. mod
- 17. 【langchain】TFIDFRetrieverのマージ
- 18. 数値を異なる長さで 2 行出力 Python3編
- 19. 【Python】filter関数で第一引数に None / 常にTrueを返す関数 /常にFalseを返す関数 を指定してみる
- 20. 四旬節第2金曜日とイースターとペンテコステの日付を求めるプログラム
数値を半角スペース、0埋めで出力 Python3編
今回はこれ(半スペ埋め3桁)
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__print_width_step1fstringでこれも攻略
“`py
N = int(input())
print(f”{N:>3}”)
“`
次はこれ(0埋め3桁)
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__print_width_step2“`py
N = int(input())
print(f”{N:>03}”)
“`
その後も問題を解いたが、残り3問は全部今までの復習・応用問題だったので
一発合格だった
実数をフォーマット指定して出力】複数の実数を出力 (paizaランク C 相当)
今日はこの問題。
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_boss以前、f-stringを使うといいですよ、と教えて頂いたので、自分なりに書き方を理解して応用して書いてみた。
“`py
Q = int(input())for i in range(1,Q+1):
Arr = input().split()
N = float(Arr[0])
print(f”{N:.{i}f}”)
“`そしたら見事に正解しました。
あれ、、、この書き方すごい直感的で書きやすい。。。
教えてくれた@shiracamus(しらかみゅ)さんありがとうございます。。。(追記)
あのあと、テストケースを適用したらダメダメでした。
結果的にArr[1]を使わずiを使っちゃだめでした。
出力がすごいことになってしまってました。。。
正解は下“`py
Q = int(input())for i in range(1,Q+1):
Arr =
[Python]リストのコピーとfor文
## 目的
この記事を閲覧して,以下のことが分かる事
– list のコピー時の挙動
– シャローコピーとディープコピー
– for 文中の list の挙動## list のコピー
まずはこちらを考えてみましょう.Q.以下のコードを実行した場合,どのように出力されるでしょうか?
“`Python
a = [0, 1, 2, 3]
b = a # b に a をコピー
a.append(4) # a に 4 を追加print(a)
print(b)
“`選択肢 A
“`Python
[0, 1, 2, 3, 4]
[0, 1, 2, 3]
“`選択肢 B
“`Python
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
“`A. 選択肢 B
答えは選択肢 B です.a にだけ 4 を追加したのに何故 b にも 4 が追加されているの?
こう思いませんでしたか?
これ実は,a と b が同じリストになってしまっています.“`Python
print(id(a)) # 135764862582848
print(id(b))
Pythonで標準入力を受け取る方法
## はじめに
本記事は、競プロやpaizaスキルチェックなどで必要な標準入力からのデータ取得について、Pythonでデータを受け取るための備忘録です。## 標準入力について
標準入力(Standard Input)はユーザからデータを受け取るための方法。
プログラムへのキーボードなどからの入力を受けつける。
input()関数は、ユーザーから文字入力を受け取り、文字列として返す。## 基本的なデータ取得
“`Python
str = input()# 前後の空白を取り除く
str = input().strip()# 数としてintやfloatで取得する
int = int(input())
“`## 1行に複数個の入力データの場合
#### 文字列データ
“`:Input
りんご みかん ぶどう
“`
“`Python
strs = input().split()
print(strs)
#Output: [‘りんご’, ‘みかん’, ‘ぶどう’]
“`
#### 数値データ
“`:Input
2 1 -5
“`
“`Python
nums =
【matplotlib】random_walkでお絵描きしてみた
## はじめに
Pythonのmatplotlibを使用してドリッピングやマーブリングのような画像を出力します.
完全にお遊びです.
(GenerativeAIで画像生成できるってのに何やってんだか…)## 動作環境情報
– Python 3.12.0
– matplotlib 3.8.1## 手法
四方八方にランダムに動く線を重ねて重ねて描いてみます.### ソースコード
“`random_walk_paint.py
import numpy as np
from random import random
import matplotlib.pyplot as plt
from math import *def random_walk(N):
x, y = 0, 0x_list=[0]
y_list=[0]
for n in range(N):
theta=2.0*pi*random()
x = x+cos(theta)
y = y+sin(theta)
x_li
get_poacar_file_folder_abs_path_list.pyの実行ログ
## スクリプトの入出力について
* get_poacar_file_folder_abs_path_list.py[1]
* 入力:COD[1]からダウンロードしたcifファイルを変換したPOSCARファイル約30万件が入ったディレクトリ(:308325件)
* 出力:poscar_abs_path_list.npy, poscar_folder_abs_path_list.npy
[1] https://github.com/k-morii-toridai/scripts_get_poscar_abs_path_list.git
## 実行の詳細ログ
“`terminal
pwd
“`
/mnt/ssd_elecom_black_c2c/scripts_get_poscar_abs_path_list“`terminal
ls -CF
“`
get_poacar_file_folder_abs_path_list.ipynb* get_poacar_file_folder_abs_path_list.py* old
【Google Cloud】 Firestoreデータベースにローカルから接続する方法【Python】
# はじめに
Firestoreは、NoSQLのドキュメントデータベースです。
この記事では、Google Cloud で Firestore を使い始めるための手順を紹介します。具体的には、Pythonのプログラムを用いてローカル環境からGoogle Cloud上のFirestoreにアクセスを行い、データを格納するところまでを目指します。
* 公式ドキュメント
https://cloud.google.com/firestore/docs?hl=ja(公式ドキュメントが一番参考になるので、何か困ったら公式ドキュメントを参考にしましょう)
:::note warn
本記事は、2023年11月17日時点の情報です。
名前が似ている「**Filestore**」というサービスもありますので、間違えないように気をつけましょう。
モード選択では、ネイティブモードを選択しています。
:::# 実施環境
* OS:macOS Ventura 13.5 (M2 mac)
* ブラウザ:Google Chrome 119.0.6045.123(Official Build
1 つの実数を出力 4 Python3編
次はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_step4formatをつかえばいいとおもうけど 変数Mどうやって入れよう。。。と思って
“`py
Arr = input().split()
N = float(Arr[0])
M = str(Arr[1])print(“{:.} + M + {f}”.format(N))
“`
エラーになった。。。。
どう書けばいいんかわからず調べる。こうだった。
二重かっこにすればよかったんだ。。。“`py
print(“{:.{}f}”.format(N,M))
“`
1 つの実数を出力 3 Python3編
今日はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__format_real_number_step3
・そもそも[実数って浮動小数点数のことかと思ったら違う](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0%E3%81%AF%E5%AE%9F%E6%95%B0%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84/#google_vignette)らしい
・とりあえずPythonの型としては整数はint、実数はfloatかdecimal型として出すらしい
https://pg-chain.com/python-int-float-decimal#google_vignette
floatかdecimalのどっちを使うかで悩みそうな気がするが。。。
PyQGISでタイルレイヤのURLを取得したい
# はじめに
この記事は、
**「タイルのURL取得なんて余裕だと思ってたのに、なぜかできない。。。」**
と謎にハマってしまった人(数日前の自分)に向けた記事です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/1ca4e1c8-1d46-305c-cb5b-5c57e7a2d37f.png)
# 予想される検索ワード
以下、この記事を求めているであろう方が入力しそうな
(というか実際に私が必死で検索した)検索ワードです。QGIS, PyQGIS, タイル, URL, 取得
# 実行環境
– Windows11
– QGIS 3.28# 忙しい人向けの結論
QGISでタイルレイヤを選択している状態で、Pythonコンソールで以下を実行すれば取得できます。“`python:Pythonコンソール
# アクティブレイヤ
layer = iface.activeLayer()# レイヤのソースを取得
src = layer.source()# ソー
ホールケーキ,ナイフ2回で3等分
問: 半径1のホールケーキを,ナイフを2回入れて3等分する。
答: 中心から上下(または左右)へ,約$\pm 0.265$離れた点を通り$x$軸($y$軸)に平行にカットする。
この解が適切かどうか,3分割された半月状の部分の面積をシミュレーションにより求めて,真値と比較検証する。
第1象限の一辺の長さ1の正方形内に二次元一様乱数$(x, y)$を$n$組発生させ,$(x, y)$が四分円内にあり,かつ,$y \gt y_{0}$ の点の割合が$\pi/3=1.0471975511965976$になることを確認する。
“`Python
import numpy as np
n = 100000000
x = np.random.rand(n)
y = np.random.rand(n)
print(2*np.mean((x**2 + y**2 < 1)*(y > 0.26493208460277684)))
“`1.04728812
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
【行によって長さが違う二次元配列の表示】すべての行の長さと値が不定な 2 次元配列の出力 Python3編
今日の最終問題
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_boss
たとえば、こんなふうに入力が与えられるとすると10 4
1 2 3 4 5 6 7 8 9 10
2 6 1 1最初の行は全部の数と、行数
2行目は全部の数
3行めは何番目まで出力するかを示している
つまり、3行目は 2文字まで、6文字まで、1文字まで、1文字まで、というのを表している。
出力は
1 2
3 4 5 6 7 8
9
10
となる。—
さて、解いてみたが、最後の最後、一方のループを止めず、一方のループをリセットする方法が見つからずギブアップ。
参考までに私が書いたやつ。“`py
tmp = input().split()
N = int(tmp[0])
M = int(tmp[1])values = input().split()
A =[0] * N
for i in range(N):
A[i] = int(values[i])nums = input
すべての行の長さが不定な 2 次元配列の出力
今回はこれ
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step4
前回のやつのすべての行の長さが不定であるものを出力せよという問題
たとえば、
4
2 4 3 1
というふうに出力されたら
1 2
1 2 3 4
1 2 3
1
というふうに出力しないといけないという問題。
前回の応用なんだけど、簡単ではある。
ただし、Nを全く使っていない。“`py
N = int(input())
M = input().split()
for j in M:
j = int(j)
for i in range(1,j+1):
if i == j:
print(i)
else:
print(i,end=” “)“`
なので、ちょっと考える。
すべての行の長さが不定な2次元配列の出力ということから、
おそらく、最初に配列を作っておいてそこから条件に沿って出力するというやり方ではないか?
炭酸イオンを1つの点に置換した結晶構造の作成ログ
# 最終目標設定
既存の結晶構造から,炭酸イオン(CO32-)を1つの点に置換した新しい結晶構造を作成する.## 今回行ったことの流れ
1.約30万個のPOSCARファイル※の中から,元素種C,Oを含むものを抽出する.
※ COD(Crystallography Open Database[1])から得たcifファイルをcif2cell[2]を用いて,変換した.
2. 1. で抽出したPOSCARファイルから,各原子について1.7Å※以内の隣接原子がリスト化されたPOSCAR.nnlist(というテキストファイル)を作成する.
※ 炭酸イオンの熱化学半径は1.64Å[3]
3. 2.で得たPOSCAR.nnlistから,隣接原子のリストに,Cを1つかつOを3つ含む,POSCAR.nnlistを抽出する.
4. 3.で抽出したPOSCAR.nnlistに対して,Cを1つかつOを3つ含む原子団のxyz座標を,各々の原子座標の相加平
直角三角形の出力 (paizaランク D 相当)
今日の問題はこれ。
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step3出力された数字に従って下記の様に出力する問題
たとえば4だったら
1
1 2
1 2 3
1 2 3 4
というふうに出力する。
これが直角三角形に見えるように出力するという意味今までの積み重ねから、難しくはなかった
“`py
N = int(input())for i in range(1,N+1):
for j in range(1,i+1):
if j == i:
print(j)
else:
print(j,end=” “)
“`
mod
[picoCTF][Cryptography][basic-mod1]# Writeup
* 解法が書いてあるので、翻訳ソフトで翻訳。
DeepLって分かりやすい日本語に変換してくれます。
![screenshot 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160736/0f52be36-8979-6367-431c-f6f92aeccbcf.png)
![screenshot 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160736/36bb1078-1b42-b63a-a8f1-527118c2da89.png)
* BingChatに作ってもらったプログラムを微修正。
~~~:python
# 入力データ
numbers = [128, 322, 353, 235, 336, 73, 198, 332, 202, 285, 57, 87, 262,
【langchain】TFIDFRetrieverのマージ
# 概要
異なるコーパスから作られた複数のTFIDFRetrieverを1つにする方法を検討しました。# 背景
TFIDFRetrieverはlangchainでキーワード検索をするときの有用な選択肢の一つです。
開発途中で検索対象の文書を追加する場合など、TFIDFRetrieverの更新やマージをしたくなることがあります。FAISSRetrieverなどDenseな埋め込みに基づくRetrieverの場合はdocstoreとembeddingをただ拡張すればよいのですが、TFIDFなどSparseなRetrieverの場合、単語のIDやIDF値がコーパスごとに決定されるため、単純にマージはできません。そこで方法を考えました。
(注:キーワード検索用のSparseなRetrieverとしては、BM25Retrieverのほうがよりメジャーなのですが、BM25Retrieverは内部で使用されているrank_bm25の扱いに習熟できていないため、今回はTFIDFRetrieverを対象とします。)
一番シンプルなのは、複数のデータセットをマージして、TFIDFRetriev
数値を異なる長さで 2 行出力 Python3編
続いてこちら
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__variable_array_step2数値 N と M が与えられるので、 1 行目には N 個、 2 行目には M 個の数値を出力する、という問題。
私はこちらの回答.
“`py
arr = input().split()
for i in range(1,int(arr[0])+1):
if i == int(arr[0]):
print(i)
else:
print(i,end=” “)
for j in range(1,int(arr[1])+1):
if j == int(arr[1]):
print(j)
else:
print(j,end=” “)“`
可読度をあげるなら、
問題にかかれているように“`py
arr = input().split()
N = int(arr[0])
M = int(arr[1])
“`
と
【Python】filter関数で第一引数に None / 常にTrueを返す関数 /常にFalseを返す関数 を指定してみる
# 概要
Pythonの`filter`関数で、以下のケースではどのような結果になるのだろう?と思ったので実施してみました。– 第一引数(`function`)に`None`を指定した場合
– 第一引数(`function`)が常に`True`を返す場合
– 第一引数(`function`)が常に`False`を返す場合## サンプルコード
“`py
def is_even(n):
return n % 2 == 0numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)# 出力結果: [2, 4, 6, 8, 10]
“``filter()`関数は、第一引数に指定した関数(条件)に合致する要素を残します。
なので、上記の場合、偶数の要素のみが出力されます。第一引数に指定したものでフィルターしてくれる、というわけです。
しかし、この考えだと少し違うことがわかりました。
正確にいうと、`is_
四旬節第2金曜日とイースターとペンテコステの日付を求めるプログラム
四旬節第2金曜日とイースターとペンテコステの日付を求めるプログラムです。
`chmod +x pe.py`として実行して下さい。
pythonで書かれています。
“`pe.py
#!/usr/bin/python3
import datetime
from dateutil.easter import *for i in range(1000,3000):
ed=easter(i).toordinal() # イースター
xd=ed-30 # 四旬節第2金曜
pd=ed+49 # ペンテコステ
x=datetime.datetime.fromordinal(xd).date()
z=datetime.datetime.fromordinal(ed).date()
t=datetime.datetime.fromordinal(pd).date()
print(“Lent 2nd Friday:”,x,”Easter:”,z,” Pentecost:”,t)
“`### 実行結果
“`
Lent 2nd Fri