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

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

平方分割のバケット

https://paiza.jp/works/mondai/query_primer/query_primer__square_division_bucket

ちょっとよくわからなかったので、色々調べながら。

(下記は引用)
max 関数は引数に list オブジェクトを渡すと、list オブジェクトに含まれる要素の最大値を返します。この際、計算量は O(N) です。

“`py
import math
A = [int(input()) for _ in range(10000)]
rootA = int(math.sqrt(10000))
ans = [-1] * rootA

for i in range(rootA):
start, end = 100 * i, 100 * (i + 1)
ans[i] = max(A[start:end])

for val in ans:
print(val)
“`
たとえば、
100*100の平方根ごとに分け、調べるグループを100個ずつにして
そのなかでやりたい処理(たとえばこの問題なら100個の中から

元記事を表示

2次元区間和

https://paiza.jp/works/mondai/query_primer/query_primer__two_dimensions_interval_sum

常識的に考えたらこんな感じではいかないなと思うのだけど一応

“`py
H, W, N = map(int, input().split())
A = [[int(x) for x in input().split()] for _ in range(H)]
#W*Hの配列に0を入れたものを作る(0の分だけ+1する)
ans = [[0] * (W + 1) for _ in range(H + 1)]

for i in range(1, H + 1):
ans[i] = [0] + A[i – 1][:]
#計算して入れていく(もともとある数字に累積和を入れていくので+=になる)
for j in range(1, W + 1):
ans[i][j] += ans[i – 1][j] + ans[i][j – 1] – ans[i – 1][j – 1]

print(

元記事を表示

pythonの __name__ == “main”の意味

# `__name__ == “__main__”`の意味
参考

if __name__ == ‘__main__’: とは

関数用のファイル「test_m.py」、関数呼び出し用ファイル「call_m.py」
“`py
#test_m.py
def sample():
print(__name__)

sample()

#出力結果
__main__
“`

“`py
#call_m.py
from test_m import tax
sample()

#出力結果
test_m
test_m
“`

モジュールの呼び出し(import)で出力したときに2回出力するのを防ぐ。
“`py
#test_m.py
def sample():
print(__name__)

if __name__ == “__main__”:
print(sample())
“`
“`py
#call_m.py
from test_m import tax
sample()

#出力結果
test_m
“`

元記事を表示

gRPCのサンプルを作って動かしてみた。

## gRPCとは?
仕事関係で、gRPC技術と関わっていたので、調べてみることにしました。

ググってみると、
「gRPCは、Googleが開発したオープンソースの高性能なリモートプロシージャコール(RPC)フレームワークです。」らしいです。

えーと、ぴんとこないので、ChatGPTに簡単に解析をお願いしました。

>質問: ちょっとわかりづらいので、小学生でもわかるようなケースを例をあげて欲しいです。

回答: 以下は回答です。
>
>もちろんです。gRPCを小学生に説明するなら、こんな感じでしょうか:
>
>想像してみてください。あなたは大きな学校の一部で、たくさんのクラスがあります。各クラスは、特別なタスク(仕事)を持っています。例えば、一つのクラスは図画を描くことが得意で、もう一つのクラスは音楽を作ることが得意です。
>
>でも、時々、あるクラスが別のクラスの助けを必要とすることがあります。音楽クラスが絵を描くことが必要になった時、どうすればいいでしょう?そこで、gRPCというシステムが活躍します。
>
>gRPCは、学校の中でメッセージを送るための超速いポストマンのような

元記事を表示

VAEとEMアルゴリズムの違いについて

# はじめに
情報系学部学生のsunです。この記事はEMアルゴリズムとVAE(変分オートエンコーダー)にMNIST(手書きの数字データセット)を学習させて、視覚的にアルゴリズムとしての違いを理解することを目的にしております。

# 注意
引用元は最後に記載しますが、コードの解説において、個人の解釈が間違っている場合があります。間違いを見つけた場合コメントにてお知らせくださいますと幸いです。

## 1章 全体的なイメージと違いについて
### 1-1
VAEのイメージから軽く触れたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3674061/c1c7d2bc-f90b-53f9-9e47-2d723edf1784.png)
VAEとEMの比較をしたいと思います。
仮定として、MNISTの各ピクセル値がベルヌーイ分布に従うとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

二次元累積和 (paizaランク B 相当)

https://paiza.jp/works/mondai/query_primer/query_primer__two_dimensions_cumulative__sum

累積和を2次元でやればいいので
こんな風に書けばいいはずだと思ってたんですが、
どうも違うようで。。。

“`py
H,W,N = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(N)]
ans = [[0,0,0]] + A[:]
for i in range(1,H + 1):
for j in range(1, W + 1):
ans[i][j] += ans[i-1][j-1]
“`

つまり、Ansで雛形を作ったんですが、

“`
[[0, 0, 0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
“`
ではなく
“`
[0, 1, 2, 3], [0, 4, 5, 6], [0, 7, 8, 9]]
“`
こうしないとだめだった。
じゃあ

元記事を表示

pythonのclassとか__init__とか

参考

https://python.ms/class/#%E3%81%AF%E3%81%97%E3%82%99%E3%82%81%E3%81%AB

“`
>>> class Human:
… name = ‘andi’
… def say(self):
… print(‘こんにちは!’)
… def friend(self):
… print(‘judi’)

>>> i = human()
Traceback (most recent call last):
File ““, line 1, in
NameError: name ‘human’ is not defined. Did you mean: ‘Human’?
>>> i = Human()
>>> i.say()
こんにちは!
>>> i.friend()
judi
“`
追加も可能
“`
>>> i.height
Traceback (most recent call la

元記事を表示

ソーラーパネル稼働状況取得(AWS shellcloud上でのpython実行)

前回、時前ラズパイで、ソーラーパネルの稼働状況をPythonで取得することができました。

# 自前ラズパイでの動作
自前ラズパイでの動作は、上手く言っていました。けど、サーバーレスで実行したいため、色々試行錯誤しています。

# GAS上での動作
GASでは、上手くCRFSを取得できず、断念しました。

# 今回はAWSで行きます。
これなら、サーバーレスで実行できます。
自前のラズパイ上での実行でもいいのですが、技術的好奇心からAWSの扉を叩きます。
また、以前作成したPythonのプログラムも基本的に動きます。
まずは、shellcloud上で、作業環境を構築します。

### スクレイピング用

$ pip install requests
$ pip install beautifulsoup4

### GAS用

$ pip install gspread
$ pip install oauth2client

と以前作ったプログラムをコピペで作ります。
当時とは、HTMLの構成が変わったようで、ログインこそできるものの、
スクレイピングが

元記事を表示

pythonのUnicodeDecodeError

# エラー
1.excelで作ったcsvファイルをvscode上で変更を加える。
2.pythonファイルでそのcsvを読み込ませる。

“`
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence
“`
エラーが表示される(泣)

# 解決
https://qiita.com/Ryo-0131/items/27829642d2f767507db0

「実際のファイルの文字コードと読み込み時に指定した文字コードが異なっているときに表示される変換エラーです。」

どうやらcsvファイルを変更を加えた→実際のファイルの文字コードと異なる文字コードを加えてしまった。と解釈。

変更前のファイルに戻して読み込みをしたら、無事読み込みに成功!!

元記事を表示

区間和

前回のを参考に、
今回は区間和ってことだから
おそらく区間ごとに和を取ってそれを配列に入れて
それらを差し引きすればいけるんじゃないかなと思って
そうしてみました。

“`py
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
ans = A[:]
for i in range(1,N-1):
ans[i] += ans[i+1]

print(ans)

for _ in range(K):
A,B = map(int,input().split())
print(ans[A-1] + ans[B-1])
“`
ただ、ケース1の2つ目で-10足りないことが判明し。
計算をしてみたところ考え方としてはちょっと違うようです。
時間もなかったのでちょっと答えを見てみました。

うーん。。。別に累積和はそのままでよかったみたいです。
ただ計算式が間違っていたようで。
区間を計算するには累積和の一番大きいやつ(4)から、一番小さいやつ(2(−1))を引く感じでよか

元記事を表示

python GUI tcl/tk 1クラスの複数ファイル分割

# 実行サンプル
tcl/tk で1つのクラスを複数ファイルに分割するサンプル。
1つのクラスが長文になった場合に可読性を良くしたいため。

# 実行環境
windows10
python3.9.5

pythonモジュール tcl/tk

# 実行手順
python プログラムファイル.py

# ソースコード
main.py, fileB.py の2つのファイル
fileBの関数を呼び出すときは必ず self を引数で渡すようにする

main.py
“`
import tkinter as tk
import fileB

class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()

def create_widgets(self):
self.entry1 =

元記事を表示

discordBOTの改良をした話

皆さん、こんにちは。takazonessです。
先日、discordの音楽BOTを作りましたが、中身を少し改良したので、そのコードを記事として記しておこうと思います。

https://qiita.com/takazoness/items/04d0d15ab3eff09389c2
↑これの改良版

# 改良点
・日本語化
・スキップ機能の追加
・キュー機能の追加
・再生後の音源ファイルを削除する機能を追加

# コード
“`python:discordbot.py
import asyncio
import discord
import yt_dlp as youtube_dl
from discord.ext import commands
from collections import deque
import os

# エラーについてのメッセージを非表示にする
youtube_dl.utils.bug_reports_message = lambda: ”

ytdl_format_options = {
‘format’: ‘bestaudio/best’,

元記事を表示

30秒で読める Python のデコレータの基礎

デコレータは関数を返す関数として作ります。

“`py
from typing import Callable
def deco(f: Callable) -> Callable:

return wrapper
“`

関数にデコレータをつけると、関数が置き換わります。

“`py
def just_print():
print(“ha.”)
just_print() # just_print が呼ばれる。

@deco
def just_print2():
print(“haha.”)
just_print2() # wrapper が呼ばれる。
“`

wrapper の中では通常、第一引数で受け取った関数を実行します。

“`py
# … の中身
def wrapper(): # 必要に応じて引数 *args, **kwargs
# ~~~ 前処理 ~~~
retval = f()
# ~~~ 後処理 ~~~
return retval
“`

元記事を表示

ABC348 with Python (A~E)

ABC348のA~E問題をpythonで解説していきます。今回のC問題は平和でしたね(・∀・)

# A – Penalty Kick
## 問題

高橋君はサッカーの試合で $N$ 回ペナルティキックを蹴ります。

高橋君は $i$ 回目のペナルティキックでは、$i$ が $3$ の倍数の場合は失敗し、それ以外の場合は成功します。

高橋君がペナルティキックを蹴ったときの結果を出力してください。

https://atcoder.jp/contests/abc348/tasks/abc348_a
## 考察
問題文の通り、3の倍数回目のペナルティキックではx、それ以外はoとすればよい。

## コード
“`python:A.py
N = int(input())
ans = []
for i in range(1, N + 1):
if i % 3 == 0: # 3の倍数回目ならば失敗
ans.append(“x”)
else:
ans.appe

元記事を表示

Numpy ndarray を使おう

## 1. Numpy ndarray を使う

“`python
import numpy as np
“`

### 1.1. 初期化しないベクトル(内容は不定)

“`python
np.empty(10)
“`

array([0.54296942, 0.98085815, 0.52797689, 0.09862195, 0.60034229,
0.86971354, 0.82463765, 0.13218043, 0.36232667, 0.3283693 ])

### 1.2. 0.0 を n 個含むベクトルを定義する

“`python
a = np.zeros(10)
a
“`

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

### 1.3. 0.1 を n 個含むベクトルを定義する

“`python
a = np.repeat(0.1, 10)
a
“`

array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0

元記事を表示

python認定基礎試験3章と4章のまとめ

●pop()

pop()引数が書かれていない場合は最後の末尾を削除する。

●return
“`py
def num(a,b):
return a+b
result = num(20,30)

print(result)

#出力結果
50
“`

●range
range(0,4)
0,1,2,3
range(1,4)
1,2,3,

●enumerate
反復可能体・・・リスト、文字列など
“`py
#iがindexの番号を格納、aに反復可能体の要素を格納
for i,a in enumerate(‘word’):
if i == 2:
print(a)
#出力結果
r
“`

●zip
“`py
for n,c in zip([1,2,3,4],[‘1′,’4′,’9′,’あ’]):
print(c*n)
#出力結果
1
44
999
ああああ
“`

元記事を表示

pythonでpipをインストールしたがモジュールが使えない問題

「requests」モジュールを使おうとしたところ
![pythonでpipを使うmac2024-04-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717619/6c9424c9-8453-9237-ff84-17a63a40c409.png)
使えないのでpipをダウンロードする。

https://qiita.com/dandan999/items/ce5d27e45b2263b0c061

しかし…
表示が変わらないのでVScodeのターミナルを確認すると
![pythonでpipを使うmac 22024-04-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717619/9d798628-d4a7-a3f6-8359-359afb39b652.png)
となっているのでインストールしたバージョン3.8に変更する。

# 対処

参考

https://www.codevace.com/v

元記事を表示

探索アルゴリズム①【Algorithm-Data構造入門Ⅴ】

# 探索アルゴリズムとは
探索アルゴリズムは、データの集合の中から特定の要素を見つけるための手法です。
2回に分けて主要な探索アルゴリズムを備忘録的にまとめていきます。

# 基本的な探索アルゴリズム
ここでは、よく使われる基本的な探索アルゴリズムとして以下の4つを紹介します。
– 線形探索(Linear Search)
– 2分探索法(Binary Search)
– ハッシュ法(hashing)←次回紹介
– 2分探索木(binary tree)←次回紹介

それぞれ、Pythonでの実装方法も紹介していきます。

# 線形探索(Linear Search)
線形探索(Linear Search)は、データの集合(通常はリストや配列など)を先頭から順番に走査し、目的の要素を探す探索アルゴリズムです。具体的には、最初の要素から順に目的の要素と比較し、一致するかどうかを確認します。もし一致する要素が見つかれば、その位置を返して探索を終了します。しかし、見つからない場合は、全ての要素を比較し終えるまで探索を続けます。

### メリット・デメリット
線形探索は非常に単純で実装が容易ですが

元記事を表示

累積和

https://paiza.jp/works/mondai/query_primer/query_primer__cumulative_sum

ひとまずやってみたのですが、
ケース3と4でタイムオーバーになってしまいました。

“`py

N, K = map(int,input().split())
A = [int(input()) for _ in range(N)]
B = [int(input()) for _ in range(K)]

for i in B:
sum = 0

for j in range(0,i):
sum += A[j]

print(sum)

“`

テーマが累積和っていうらしいですが
“`
A_1 から A_i までの和を sum[i] とすると、
sum[i] = sum[i-1] + A[i] という関係が成り立つので
すべての i について sum[i] を計算しておく

“`
ん???
ちょっとよくわかりませんでした。。。
でも調べると、

たとえば
3つの配列の要素が下

元記事を表示

【Python】指定したデリミタで文章を分割し、リストの要素としてそれぞれ追加する方法

# 概要
句点で区切られている文章を、句点ごとに区切ってリストに変換する方法を紹介します。

複数の文からなる文章を指定したデリミタ(句点など)で分割し、それぞれの部分にデリミタを追加するという処理を行います。

# サンプルコード

例えば、
“`
‘私はりんごが好きです。また、バナナも良いですよね。皆さんの好きなフルーツ教えてください。’
“`
という文章を「。」ごとに区切る関数を作成しました。
「。」だけでなく、「♪」や「!」の場合も同様に以下の関数で可能としています。

“`py
def split_paragraph_into_sentences(paragraph, delimiters):
sentences = [paragraph]

for delimiter in delimiters:
sentences = [part + delimiter for sentence in sentences for part in sentence.split(delimiter)[:-1]] + [sentence.split(de

元記事を表示

OTHERカテゴリの最新記事