Python関連のことを調べてみた2023年07月24日

Python関連のことを調べてみた2023年07月24日

初心者でもAtcoder茶色に行きたい。

はじめまして。**こんとらりあん**と申します。 初執筆なので読みにくいところも多々あると思いますが、ご容赦ください。 # 自己紹介 早速なんですが、自己紹介を軽くさせていただきます。 ・現在25歳で、大学を卒業し、2年ちょっとがたちました。 ・社会人ですが、IT、エンジニアといった職種や業界とは全く別世界にいます。 ・しかし、エンジニア、ざっくり言えばIT業界に興味があり、とりあえずプログラミングも勉強しようと思い立ちました。 ・今後はITの世界で働きたいと思っています。 # 過去のプログラミング歴 使用言語は**Python**です。 大学生の頃にほんのちょっとだけ独学で学習しましたが、すぐ折れました。 HTML&CSSについても少し触った経験はあります。 あとは、卒業論文でSPSSという統計ソフトを使いました。これはプログラミング関係ないですが。 半年ほど前から、Pythonを学び直しています。 Udemyを使って学んでいたのですが、ある時Atcoderというものに出会いました。 どうやら競技プログラミングというものらしく、 基礎的なコーディングの知識からアルゴリズムの
元記事を表示

Qiita の記事の中からランダムで Twitter に投稿する

## はじめに Qiita の記事の中からランダムで Twitter に投稿するシステムを構築しました。ランダムといっても完全ランダムではなく、音楽プレイヤーのシャッフルをリピートしている感じになります。同じ記事が連投されたり、偏ったりすることがありますからね。Qiita に投稿してある記事のリストを保持し、それをシャッフルして Twitter に投稿し、全ての記事が投稿されたら、最初に戻りまたシャッフルして Twitter に投稿することを繰り返す流れになります。 ソースコードは以下になります。 https://github.com/Pumi1a/Qiita_Twitter/tree/main ## 環境 * Raspberry Pi 4 Model B * CentOS Stream 8 * Python 3.11.0 * tweepy 4.14.0 * requests 2.28.2 ## 導入 ラズパイなどのサーバを持っていない方はホスティングサービスの利用を検討してみて下さい。無料で使えるホスティン
元記事を表示

【Flet】Fletで簡単なWEBアプリケーションのレイアウトを作成

今回の記事は、`Flet`のチュートリアル後にWEBレイアウト的なものを試しに作成してみたので、その備忘録です。時間を置くと何を作っていたかも忘れるのでなるはやで作成していきます。 レイアウトとしては、次のような感じ: ![outline.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3275023/daa4637c-bc57-d3c5-ce5c-7812918264fb.png) ナビゲーションバー(Nav Bar)があり、サイドバー(Side Bar)+サイドバーを閉じる・開くボタン(btn)そして本文(Main)といったものです。 Mainについてはどのようなものを実装するか検討中のため、簡単なテキストの出力にとどめました。 今回の作成物のスクショがこちら(ボタン名などはかなり適当なのでご注意): ![example.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3275023/755eabc7-dd30
元記事を表示

画像をURLからダウンロードして、gzipで圧縮し、base85でエンコードして軽量化したのち、復元してnp.arraybufferで読み込んで表示

画像をPythonオブジェクトとして保持しておきたい場面があったので、メモ書きです。 ## 画像の読み込み – 必要なパッケージのインポート “`python import requests from PIL import Image import numpy as np from io import BytesIO import matplotlib.pyplot as plt import gzip import base64 “` – 画像をダウンロードして表示 “`python url = “http://placekitten.com/600/400” res = requests.get(url) img = Image.open(BytesIO(res.content)) plt.imshow(img) “` ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203944/297cf255-104a-790e-8b20-7540cdb68f43.png)
元記事を表示

Pyhon 辞書(dict)のループ処理(for)をするときのメソッド(keys(),values(),items())の使用例

# Pyhon 辞書(dict)のループ処理(for)をするときの要素関係 Pythonの辞書`dict`の中のシーケンス要素をfor文でループ処理をする時、`key()`,`value()`,`items()`を使用することで辞書に対して指定したキーや値の組み合わせで要素を取り出すことができる。 ### そもそもPythonでいう辞書(dict)って? 簡単に説明すると、**Pythonコード内で定義できるデータの持ち方**の一つです。 他にもリスト(list)、タプル(tuple)があります。 ※Pythonのデータの持ち方については、他記事で記載します。^^ 辞書の例 `d = {‘key1’: 1, ‘key2’: 2, ‘key3’: 3}` * `キー:値` の書き方で値を設定すること  今回は`key1`がキー、`1`が値 * `{}`で囲むこと * 辞書内に要素を複数入れたい場合は`,`で区切って設定すること ### そのまま辞書オブジェクトをfor文で実行すると、`key`が取得される 辞書作成 “` d = {‘key1’: 1, ‘key2’: 2,
元記事を表示

PythonでDisjoint Sparse Tableを書いたよ。

PythonでDisjoint Sparse Tableをかきました。 好きにつかってやってください! # コード 長いので折りたたみにしてます。
コード詳細 “`Python class DisjointSparseTable: “””Disjoint Sparse Table リストに対して、事前構築O(NlogN)、区間演算O(1)でできます。 演算funcは、結合則を満たすものだけです。 結合則: func(a, b) == func(b, a) (順番は関係なし) Attributes: lst (list): 対象のリスト func (Callable[[int,int],int]): 演算 (xor, gcd, min, max, …) Examples: >>> dst = DisjointSparseTable([9, 1, 6, 10, 2], min) >>> ds
元記事を表示

yfinanceがバグったので、pip updateで対応

株価取得プログラムが動かない

alphavantage APIとか使って、以下のような株アプリを作ってる

https://stonehills.tokyo/flask/

原因調査のため、サンプルプログラムを作成して、実行

import mysql.connector
import yfinance as yf
import json

ticker = yf.Ticker("GOOG")

print(ticker.info)
「しりとり上手の高木さん」と、LINEでしりとり勝負をしたい!
# 概要 「[からかい上手の高木さん (© 山本崇一朗 小学館)](https://ja.wikipedia.org/wiki/%E3%81%8B%E3%82%89%E3%81%8B%E3%81%84%E4%B8%8A%E6%89%8B%E3%81%AE%E9%AB%98%E6%9C%A8%E3%81%95%E3%82%93)」 という漫画・アニメにヒントを得て、 **高木さんと、LINE でしりとり勝負をするゲーム** を作りました。 ※ [高木さんのアイコンは、SNSでの個人利用が許可されているものを使っています。](https://twitter.com/takagi3_kyun/status/1480860726340505605) # ライトニングトーク 発表資料 2023年7月13日(木)**「[みんなのPy
元記事を表示

docker、djangoでサーバーを起動し、ホストからアクセスするまで

# 内容 ubuntuのイメージからコンテナを作り、python3、djangoをインストールしたうえでホストのpcからテストサーバーにアクセスするまでの備忘録です。あくまでテストのため、冗長な操作が多いです。 対象:docker、django初心者 前提:windows上でwsl2をインストール済み。linuxコマンド、dockerの操作の多少の理解。 言い訳:初めての記事作成のため、用語の使い方、説明など稚拙な点が多いと思われます。 # イメージの作成 ```docker:dockerfile #dockerhubからubuntuのイメージを引っ張ってくる FROM ubuntu ``` 適当なディレクトリに上記の内容のdockerfileを用意します。 ```console:コマンド docker image build -t test/django . ``` イメージの作成 ・-t : タグ名の指定 ・. : 現在のディレクトリのdockerfileを参照 # コンテナとbashの起動 ```console:コマンド docker container run -d -i
元記事を表示

A* アルゴリズム

# A*アルゴリズムとは https://stone-program.com/python/algorithm/a-star-introduction/ 近場から探索を開始して,(さすがに障害物は避けるけど)ゴールに着くまで手当たり次第に探索&記録していった幅優先探索では,迷路の大きさ=探索範囲の広さだった. 当たり前だが,探索範囲が広くなればなるほど計算コストも増加する. つまり,広い迷路において「待てばゴールに着けるし,最短経路も出せるけど,コスパが悪い」のが前回行った幅優先探索だった. 一方でA*アルゴリズムとは,**ゴールのありそうな方向に向かって探索を進めていく**ことで,探索範囲を絞り,コスパよくゴールを探してくれるアルゴリズムのことである. ## A*アルゴリズムの解説 A*アルゴリズムでは,トータルコスト *F(n)* が小さくなるように次のノード(探索点)を選び探索を進めていく. *F(n)* は以下の式によってあらわされ,特に *H(n)* のおかげで探索範囲は小さくなる.(*H(n)* がゼロの場合,ダイクストラ法と呼ばれる手法になる) ☆☆☆☆☆☆☆☆
元記事を表示

pythonのpandasで、データフレームをN件ずつに分割して処理する

# 結論 pandasのデータフレームをdfという変数に入れていたとします。N件ずつに分割したい場合は`[df[i:i+N] for i in range(0, len(df), N)]`で分割できます。 # サンプルコード dfには既に205件のデータ(「商品番号」「単価」)が入ったデータフレームであるとします。 ```.py import pandas as pd # ... # データフレームをN件ずつに分割 N = 10 splited_df = [df[i:i+N] for i in range(0, len(df), N)] for part in splited_df: print(part) ``` ### 結果 ``` 商品番号 単価 0 9QYSNZB1 16000 1 IK7H29YP 15000 2 W5X9B5YL 27000 3 2GU990CA 15000 4 U67GM6E5 17000 5 1ORHZ5ZA 29000 6 C8EIXRZZ 10000 7 GG62Y92U 30
元記事を表示

【超入門】解いて覚えるPython 計算のルール編

Pythonにおける計算のルールを問題を解きながら確認していきます。 いきなり問題に入りますので、分からない問題は解答と解説を見て覚えていきましょう! ## 問題1(括弧を含む計算はどうなる) 次のコードの出力結果を選択肢から選んでください。 ~~~py (4 + 3) * 2 - 5 ~~~ ~~~:選択肢 ➀ 5 ➁ 44 ➂ -21 ➃ 9 ~~~
解答 ➃ 9

演算子の優先順位は、算数・数学と同じで問題ありません。また、括弧()で囲むとその部分が先に計算されるのも同じです。 優先順位についてより詳しく知りたい方はこちらをご確認下さい。 https://docs.python.org/ja/3/reference/expressions.html#operator-precedence
## 問題2(割り算の出力結果は?) 次のコードの出力結果を選択肢から選んでください。 ~~~py 10 / 2 ~~~ ~~~:選択肢 ➀ 5 ➁ 5.0 ➂ 0 ➃ 8 ~~
元記事を表示

遺伝的アルゴリズムのサンプルコード

遺伝的アルゴリズムのサンプルコード 参考文献 「C言語による画像処理入門」2000/11/1 (著)安居院 猛、長尾 智晴 [文献のAmazon](https://www.amazon.co.jp/C言語による画像処理入門-安居院-猛/dp/4785631244/ref=sr_1_2?__mk_ja_JP=カタカナ&crid=36QQH3TUBJFRT&keywords=C言語による画像処理入門&qid=1690083613&s=books&sprefix=%2Cstripbooks%2C454&sr=1-2) 前準備 ```bash:console pip install numpy pip install matplotlib ``` ソースコード ```python:sample.py # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt def initialize_random_number(seed=None): #seed=0 print("seed="
元記事を表示

Poetryを使ってディープラーニング環境を構築する

# はじめに Pythonでパッケージ管理や環境構築が手間になることがあります。リモートリポジトリをクローンして動かそうとしたら依存関係の問題で動かなかった...というのはよくある話です。 「パッケージを推奨バージョンに合わせたいけど、ローカル環境は汚したくない...」 そんなときに役立つツールがPoetryです。 ここでは、Poetryを使用して、ディープラーニング用の環境を構築する方法について解説します。 GPU版のPytorchを使えるようにします。 # Poetryを使えるようにする homebrewを使ってインストールするのが一番楽です。 [このリンク](https://brew.sh/index_ja)からhomebrewのページに飛んで、指示に従ってインストールしてください。 homebrewのインストールができたら、Poetryは以下のコマンドでインストールできます。 ```bash brew install poetry ``` # プロジェクトの作成 新規の場合: ```bash poetry new project_name ``` 既存のプロジェクトをpo
元記事を表示

音源データ「.mp3」をcolabで「MIDI」へ変換する方法

・導入

私は現在、ピアノを学習している。
ただ楽譜などは読めないので、synthesiaというツールを用い、勉強中である。
自分の好きな楽曲をsynthesiaで練習するためには「MIDI」というデータを用意しなければなりません。しかし、販売されている音源は「.m4a.」というデータ形式であるので「.m4a.」→「MIDI」へ変換することが必要である。 「.m4a.」「MIDI」へ変換することができるソフトウェアは見つからなかったのだが、「.mp3」「MIDI」へ変換するものは発見したのでそれを利用しようとしたのだが、いかんせん正体不明のソフトウェアを自身のパソコンにインストールするというのは嫌なものなので、今回はGoogle Colaboratoryを使用し、音源データである「.mp3」をsynthesiaで利用できる「MIDI」へ変換する方法を解説する。 ※「.m4a.」→「.mp3」への変換の仕方は省略する(iTunesを使用)

元記事を表示

【Python】クラスで簡単なデコレータを作成してみる

## 内容 関数実行時に以下の内容を出力するデコレータをクラスで定義する - 関数開始メッセージ - 関数実行時の引数 - 関数終了メッセージ - 関数実行にかかった時間 ## 実装 ``` python from time import * class logger: def __init__(self, func): self.func = func def __call__(self, *args): # 関数開始メッセージ print(f"--- {self.func.__name__} start ---") # 関数実行時の引数 print(f"--- args: {args} ---") start = time() ret = self.func(*args) difftime = time() - start # 関数終了メッセージ print(f"--- {self.func.__nam
元記事を表示

ABC 311 備忘録

## 概要  今回はABC311(2023年7月23日(土)21:00~22:40)についてポイントと自分の実装について書いていきたいと思う。 ## A問題 https://atcoder.jp/contests/abc311/tasks/abc311_a ### ポイント - 'A', 'B', 'C' について文字数のカウントをそれぞれ行う ### 自分の実装 ```Python:ABC_311_A.py N = int(input()) S = input() ans = 0 count_ABC = [0, 0, 0] for i in range(N): ans += 1 if S[i] == 'A': count_ABC[0] += 1 elif S[i] == 'B': count_ABC[1] += 1 else: count_ABC[2] += 1 if count_ABC[0] >= 1 and count_ABC[1] >= 1 and count_ABC[2] >=
元記事を表示

ABC311回答メモ

0.はじめに  トヨタコンテストなので、難易度高いのかなーと思ったらやっぱり高かったです。  Bあたりから難易度高めでCは諦めかけましたが何とかクリア。  D以降は時間的にも気力的にも難易度的にも手が付けられませんでした。。 1.A - First ABC  リストで、ABCそれぞれに、文字列内に出現したかフラグを持ち  文字列を先頭からチェック。  ABCどれかが発生したらフラグを立て、フラグのリスト合計が1になったら  アドレスを出力して終了としてACでした。  https://atcoder.jp/contests/abc311/submissions/43830264 2.B - Vacation Together  N、Dの最大がそれぞれ100だし、B問題なのでTLEは意識しないで行けそうと判断。  最初にna(現在チェック中の日の範囲で連続o日数を保持)とans(最大連続o日数)を0で初期化  一日目から、全員がoの日をチェックしていき、全員oの場合、naに+1  全員がoでない日が出てきたら、ansとnaのうち大きい方をansに保持しnaをクリア  という感じで実
元記事を表示

自作したChatGPT規格のプラグインをFunction callingを使って呼び出す方法

# まえがき 前回、ChatGPT規格のプラグイン開発に触れてみました。 プラグインの呼び出し元である**AIオーケストレーション**にはLangchainを採用して色々と試していましたが、エラーになる確率の方が高かったです、、。 https://qiita.com/sakue_103/items/30a6d170285327d6f73d Microsoftが掲げる**Copilot stack × Plugins**の全体像に対して、前回行った内容を当てはめると以下のようなイメージでしょうか。 - 自作のプラグインを作成 - Langchainから自作のプラグインを呼び出す - プラグイン連携はOpenAPI仕様に基づく ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393221/bc61db29-7cb0-0883-6c7d-d5eb855c518b.png) もう少し具体的な図で示すと以下のようなイメージです。 ![image.png](https://qiita-im
元記事を表示

HackTheBox Socket WriteUp

今回は、HackTheBoxのMediumマシン「Socket」のWriteUpです! 名前からして、最近多いあれかな?という気がしていますが、そうだった場合私はあまり得意ではないので心配です。。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/4b8f20a3-9855-6055-54a9-ad1cfaca273c.png) グラフはいつものMediumという感じですね。 苦戦する予感がしますが、攻略目指して頑張ります! HackTheBoxってなに?という方はこちらの記事を見てみてください!一緒にハッキングしましょう~。 https://qiita.com/WhizOwl/items/165783694cb4791cff34 また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください! https://qiita.com/Perplex/items/30f949fe261f56af7476 ## S
元記事を表示