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

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

DrissionPageのChromiumPageの使い方

[DrissionPage](https://github.com/g1879/DrissionPage)はウェブ自動化、スクレイピング、テストのための優れたツールである。この記事ではChromiumPageの機能を簡潔に紹介している。

完全なドキュメントは[DrissionPageのドキュメント](https://drissionpage.cn/)で確認できる。

## 目次

1. [インストール](#インストール)
2. [ChromiumPageオブジェクトの作成](#chromiumpageオブジェクトの作成)
3. [基本的な使い方](#基本的な使い方)
4. [高度な使い方](#高度な使い方)
5. [一般的なシナリオの処理](#一般的なシナリオの処理)
6. [ページ情報](#ページ情報)
7. [要素の操作](#要素の操作)
8. [要素の待機](#要素の待機)
9. [ファイルアップロード](#ファイルアップロード)
10. [タブ管理](#タブ管理)
11. [iFrame処理](#iframe処理)
12. [イベントリスナー](#イベントリスナー)
13.

元記事を表示

Kaggle Masterに学ぶ機械学習実践アプローチ 写経 01

“`python
# %%
print(“hello”)

# %%
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
from sklearn import datasets
from sklearn import manifold

# %%
data = datasets.fetch_openml(
‘mnist_784′,
version=1,
return_X_y=True
)

pixel_values, targets = data
targets = targets.astype(int)

# %%
pixel_values

# %%
single_image = pixel_values[0:1].to_numpy().reshape(28, 28)

# %%
plt.imshow(single_image, cmap=’gray’)

# %%
tsne = manifold.TSNE(n

元記事を表示

島探し (paizaランク S 相当) Python解説

# 自己紹介
大阪大学2回生で競技プログラミング部rainbou副部長、Atcoder緑
X:https://x.com/e4h99rhQ7I24670

# 問題文 島探し (paizaランク S 相当) URL
https://paiza.jp/works/mondai/s_rank_skillcheck_sample/search-island

# 解説
この問題はSランク問題のなかでは基礎的な問題だと思います。特に、初めてSランク問題に挑戦さあれる方には特におすすめです。
Atcoderで出題されればおそらくdiff400くらいだろうと思われます。

解法自体は非常にシンプルでUnionFindや幅優先探索などなんでも解けると思います。ここでは、一番簡単で分かりやすいであろう幅優先探索を使った解説をしていきます。

グリッド上を全探索し1が出てきたらansを+=1してそこに隣接している1のマスを0に変えていけばいいです。その後、変更されたマスをqueに入れてを繰り返しやっていく感じになります。
計算量はO(HW)です。

※ここでは入力例にあったN, Mを用いずにH, Wと

元記事を表示

mod7占い (paizaランク S 相当)

# 自己紹介
大阪大学2回生で競技プログラミング部rainbou副部長、Atcoder緑
X:https://x.com/e4h99rhQ7I24670

# 問題文URL
https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

# 解説
この問題はぱっとみ、かなり難しい問題のように見えます。
この問題ではDPという考え方を使うのですが、慣れていないとおそらく解けなかったと思います。
さすがはSランク問題といった感じです。(笑)
Atcoderで出題されればおそらくdiff800程度でしょう。

先ほども触れましたようにこの問題はDPを使います。
N<=10^5である点からもDPとぱっと思いつくことは難しくないと思います。(DP解きなれてくればなんとなく問題文から雰囲気を察すれるようになれます。) 今回はDP[i][j][k]<-i番目の数のみでj枚使ってKmod7を作れる個数でDPします。 遷移としては ```python DP[i+1][j][k] += dp[i][j][k] DP[i+1][j+1][(k+a)

元記事を表示

村人の友好関係 (paizaランク S 相当) Python解説

初めてqiitaで記事を書きます。読みにくい点などもあるかと思いますが優しい目でお願いします。質問等は随時受け付けています。
# 自己紹介
大阪大学2回生で競技プログラミング部rainbou副部長、Atcoder緑
X:https://x.com/e4h99rhQ7I24670

# 問題文(村人の友好関係 (paizaランク S 相当))
https://paiza.jp/works/mondai/s_rank_skillcheck_archive/group_popularity
# 解説

まず、この問題はpaizaのなかでもかなり難しい問題だと思います。体感はAtcoderで1200diff程度だと思っています。

以下具体的な解法に触れていこうと思います。
制約等から愚直解ではrun time errorすることは自明です。
なぜなら計算量がO(QN^2)である。
そのため、なにか高速化できるかどうかを検討します。

ここで、頂点Aと頂点Bの属性が違った時、その頂点間のパス(最短でなくてもよい)のうち最小の重みが最大であるパスのみを考えればいいことが分かります。
これは最初

元記事を表示

設計原則に基づくリファクタリング:データ収集スクレイパーを例に

## はじめに

ソフトウェア開発において、コードの品質向上は常に重要な課題です。本記事では、データ収集スクレイパーを例に、段階的なリファクタリングを通じて設計原則やベストプラクティスの適用方法を具体的に解説します。

## 改善前のコード
最初に、すべての機能が1つのクラスに統合された非常にシンプルなWebスクレイパーから始めます。

“`
project_root/
├── web_scraper.py
├── main.py
└── requirements.txt
“`
`web_scraper.py`
“`python
import requests
import json
import sqlite3

class WebScraper:
def __init__(self, url):
self.url = url

def fetch_data(self):
response = requests.get(self.url)
data = response.text
parsed_da

元記事を表示

【Python】モジュールインストール

コマンドプロンプトで、下記のコマンドを実行

py -m pip install インストールしたいパッケージ名

元記事を表示

初心者がstreamlitを使って採点アプリを作ってみた#4


# 目次
1. [はじめに](#anchor1)
1. [そもそもデプロイとはなんなのか](#anchor2)
1. [どのサービスでデプロイするのか](#anchor3)
1. [Google Cloud run](#anchor4)
1. [今後のアプリ開発体制を考える](#anchor5)
1. [CI/CDとは](#anchor6)
1. [Git Hub Actions](#anchor7)
1. [Google Cloudでデプロイするための事前準備](#anchor8)
1. [Git Hub Actionsで継続的デプロイを可能にする](#anchor9)
1. [終わりに](#anchor10)


# はじめに
streamlitを使って、採点アプリを作ってみた記録の第3回目の投稿になります。
前回までの記事が気になった方は

第一回:
第2回:

元記事を表示

VercelでPythonアプリケーションFastAPIをデプロイ!メリット・デメリットを徹底解説

この記事ではVercelを使ってPythonアプリケーションをデプロイする方法と、そのメリット・デメリットについて解説します。

## Vercelって何?
[Vercel](https://vercel.com/)(バーセル)は、ウェブアプリケーションを簡単にインターネットに公開できるサービスです。GitHubのリポジトリを使って、数分でデプロイ(公開)することができます。もともと、VercelはNext.js等JavaScriptアプリケーションをホストするサービスでしたが、最近ベータ版としてPythonやGo, Rubyにも対応しました。無料版Herokuの代わりとして使えます。

## Pythonアプリケーションをデプロイする方法
Vercelの公式サイトにPythonアプリケーションの[テンプレート](https://vercel.com/templates?framework=python)がいくつか用意されているので、数クリックで始めることができます。

FastAPIのテンプレートを作成したので、以下のボタンから始めることもできます。
[![Deploy with V

元記事を表示

界隈でnumpyのエラー発生してるみたいです

“` python
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

“`

こんなnumpyのエラーが界隈で多数発生しています。

理由は、最近リリースされた NumPy 2.0によりエラーが発生している様です。
特にローカルでは上手くいくけど、本番ではエラーになったりとバージョン違いによるエラーも起きている様です。

## 解決方法:

1.NumPy のバージョンを確認する:

使用している Python 環境で import numpy; print(numpy.__version__) を実行し、現在インストールされている NumPy のバージョンを確認してください。

2.パッケージの互換性を確認する:

NumPy と一緒に使用している他のライブラリ (pandas, scikit-learn など) のバージョンを確認し、それらのライブラリが現在使用している NumPy

元記事を表示

動的Webページのスクレイピング(Selenium+Firefox編)

# 概要
いくつかスクレイピングに関する記事を紹介したのですが,いずれもrequestsとBeautifulSoupで完結するものでした.今回は,JavaScriptなどでページの内容が変化していくような動的なWebページのスクレイピングをSeleniumを利用して行ってみたいと思います.Chrome+Seleniumを使うパターンが多いと思います.紹介が少ないので,この記事では,Firefoxをブラウザーとして利用します.

暑い時期にはカレーということで,無印良品のレトルトカレーのページを題材にして動的なページからの情報の抽出を行います.

最終的に,商品名,辛さ,価格をデータフレームにまとめていきます[^1].

![curry_table.jpg](https://qiita-image-store.s3.ap

元記事を表示

Djangoで処理を定期的に実行する

# はじめに

こんにちは、Python初心者のkeitaMaxです。

今回はDjangoで処理を定期的に実行するようにしたいと思います。

前回の記事はこちら

https://qiita.com/keitaMax/items/c898d0364cd153f90e9d

# APSchedulerのインストール

最後にバッチを作成するために、コマンドを定期的に叩けるようにしようと思います。

`APScheduler`を以下コマンドでインストールします。

“`
pip install apscheduler
“`

また、`docker/app/requirements.txt`に`apscheduler`を追加しておきます。

“`txt:docker/app/requirements.txt
Django==5.0

mysqlclient
apscheduler

“`
# 設定

インストールできたら、`app/settings.py`に以下を追加します。

“`py:app/settings.py
INSTALLED_APPS = [
‘djang

元記事を表示

知財のあれこれをPythonで何とかする

1.ファミリを何とかする(その3)

今回は外国特許のファミリの取得を容易にするための処理方法を紹介したいと思います。

2.今回やろうとしていること

今回やろうとしていることは「J-platpatで表示させたワン・ポータル・ドシエのページの、登録番号の情報だけを抜き出す」ことになります。
手作業としては「J-platpatをアクセスして出願番号、公開番号、登録番号のいずれかを入力、ワン・ポータル・ドシエのページを表示させ、登録番号を含むテキストデータをコピペする」ここまでは手作業です。
プログラムでは、コピペしたテキストデータから登録番号を抽出する処理をします。
J-platpatをアクセスして番号入力すると、ワン・ポータル・ドシエのページを表示させる以下のようなボタンが表示されるはずです。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3831931/260f9d2b-86f4-3ff8-4f1d-d063a870d40a.jpeg)
「OPD」ボタンをクリックすると外国特許を含んだファミ

元記事を表示

GTDBで提供されている系統樹をiTOLで開く

# 背景
微生物の種の系統樹をアノテーションする時に、GTDBから取得した系統樹をiTOLでアノテーションしたいという人は私以外にもいるかもしれません。現状では、GTDBから取得した系統樹そのままでは、iTOLで正常に開くことができません。その解決方法をまとめました。

# 用語説明
#### GTDBとは
[GTDB(Genome Taxonomy Database)](https://gtdb.ecogenomic.org/)は、ゲノム系統発生に基づく標準的な微生物分類を確立するために作成されたデータベースです。このデータベースでは、バクテリアの120個の単一コピーマーカー遺伝子の連結セットを使用して推定(FastTreeを使用)されたゲノムツリーと、アーキアの53個(R07-RS207以降)のマーカー遺伝子の連結セットによるゲノムツリーが収録されています。加えて、これら微生物のゲノム配列も収録されています。

![スクリーンショット 2024-07-19 021109.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

辞書型①のvalue値が辞書型②のkey名と一致する時に辞書型②のvalueで書き換える方法

簡単にやる方法で詰まったのでメモ

### やりたいこと
dict1の{}内の項目名とdict2のkeyが一致するときにdict2のvalueで置き換えたい

“`python
dict1 = {“name”: “{answer1}”, “age”: “{answer2}”}
dict2 = {“answer1”: “tarou”, “answer2”: 20}
“`

### 最終的な値
“`python
dict3 = {‘name’: ‘tarou’, ‘age’: ’20’}
“`
### 実現ソース
“`python
dict3 = {k: v.format(**dict2) for k, v in dict1.items()}
“`
関数化するとこんな感じ?
“`python
def format_dict_values(target_dict, format_dict):
“””
辞書の値を別の辞書の値でフォーマットします。

Args:
target_dict (dict): フォーマットする対象の辞書

元記事を表示

【Paiza Sランク問題】mod7占い 解説【Python】

# 問題文

> [Paizaラーニング「mod7占い」](https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7/edit?language_uid=python3)

あなたは今、「mod7占い」というサービスを始めようと考えています。

mod7占いとは、整数が書かれた複数のカードの中から3枚を選び、そこに書かれた整数の和が7で割り切れるかどうかで運勢を決めようというものです。 カードは必ず異なる3枚を選ぶ必要があり、全てのカードには全て異なる数字が書かれています。

占いというからには、7で割り切れる組み合わせはそれなりに少なくする必要があります。 そこで、適当な複数のカードに対して、カードに書かれた3つの整数を足した和が7で割り切れるような組合せがいくつあるかを計算するプログラムを作成してください。

### 入力される値
入力は以下のフォーマットで与えられます。
“`text
N
a_1
a_2

a_N
“`
* N は与えられるカードの枚数を表します。
* a_i (1 ≦ i ≦ N) はi 枚

元記事を表示

BLE advertise と tkinter

何回か前の nt 富山で ble advertise を使った環境情報(e.g. 温度湿度照度など)観測の試作を出したんだけど当時は nRF51 に欠陥があることを知らなかったので会場では使いものにならなかった。 今回の nt 金沢では nRF52 で汚名を雪ぐ。

あと、前回は通信 soft の画面そのものを見せていたけれどもう少し実用というか体裁を整えよう、と画策した結果 tkinter に落ち着いた。

その画面がこれ。

![DSC_0179.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3729329/f88a54a1-17f9-d3ef-fc2c-22899c60d731.jpeg)

こんな感じで電流(など)が表示される。

通信 soft の window が 2 つ出てるのは どちらの code も別 thread を使っており これをひとつにまとめて書く術が時間内に分からなかったため。

逃げ策として ble scan 側で udp socket に書き出し、udp 受け側で

元記事を表示

[Python]if-elif-else文の判定

# 学び
共通の条件を含む条件分岐において、条件が先に満たされる場合には当たり前に初めの文でプログラムが処理される。

# コード
### 間違ったコード
“`python
input = 15
if input % 3 == 0:
print(“3の倍数です”)
elif input % 5 == 0:
print(“5の倍数です”)
elif (input % 3 == 0) and (input % 5 == 0):
print(“15の倍数です”)
else:pass
“`
この場合、始めの条件が満たされるので3番目の条件であるelif文に辿り着く前にプログラムが終了します。
### 正しいコード
“`python
input = 15
if (input % 3 == 0) and (input % 5 == 0):
print(“15の倍数です”)
elif input % 3 == 0:
print(“3の倍数です”)
elif input % 5 == 0:
print(“5の倍数です”)
else:pass
“`

元記事を表示

fletで縦横スクロール付きのDataTableを表示する

“`py:main.py
import flet as ft

def main(page: ft.Page):
“””縦横スクロール付きDataTable
縦スクロール(コンテナのheight必須):
ft.Container(
content=ft.ListView(
ft.DataTable()
)
height=CONTAINER_HEIGHT
width=CONTAINER_WIDTH
)
横スクロール(scroll=”auto” or “always”必須):
ft.Row(scroll=”auto”)
ウィンドウ幅 < コンテンツ幅 """ CONTAINER_HEIGHT = 500 CONTAINER_WIDTH = 450 page.window_width = 400 dt_cols = [] for co

元記事を表示

バカラを遊ぶプログラム(Python)

# 1. 動機

クラスについて学びたいと思い,トランプカードを用いるゲームならばよい練習になるのではないかと考えたこと.

# 2. バカラのルール

プレイヤーとバンカーが2枚ずつカードを引き,数の和下一桁を得点とする.ただし,Aは1,絵札は0として扱う.以下のルールによりお互い3枚目のカードを引くか決定し,最終的な点数が大きい方の勝利とする.

(ルール)
2枚ずつカードを引いた時点におけるプレイヤーとバンカーの得点を,それぞれ $ S_p, \ S_b $ とする.

1. $ \min (S_p, \ S_b) \leq 5 $ かつ $ \max (S_p, \ S_b) \leq 7 $ のとき,前者の式を満たす方一人(プレイヤー優先)が引く

2. 1. でプレイヤーの引いたカード $ X $ が $ \left \lfloor \dfrac {X – 9 \cdot \left \lfloor \dfrac {X}{8} \right \rfloor}{2} \right \rfloor + 3 \geq S_b $ を満たすとき,バンカーも引く

# 3. 実装

元記事を表示

OTHERカテゴリの最新記事