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

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

Djangoでsend_mailを使ってみた!!

## はじめに
 こんにちは。@toamoku-20220418と申します。現在Djangoを使用したアプリケーションの作成を目標に、勉強を進めております。
 今回はsend_mailを使用し、ユーザー認証にsend_mailを使用できるように、まずsend_mail単体で簡単なアプリケーションを作成したいと思います。
 ぜひ最後までご覧いただき、皆さんの参考になれば幸いです。
## 前提条件
 開発環境はmacを使用しております。またpythonやDjangoについての詳細の解説は省いております。今回の開発ではメールの内容をコンソールに表示する設定にしております。またディレクトリやファイルの作成に必要なLinux関係のコマンドも省いております。ご了承ください。
## 実現したいこと
1. send_mailを使用して、メールを送れるようになる
2. メール送信画面を作成し、そこで入力を行う。送信ボタンを押すとコンソールにメールが送られる
3. メール送信に関してメッセージが表示されるようにする
## Djangoでプロジェクトを作成
ホームディレクトリでprojectディレクトリを作

元記事を表示

NumPyで光線と線分の交点を求めたい!

# はじめに

いろんなところでたくさん壁にぶつかっちゃう、どじっ子れいちゃんが、どこでぶつかっちゃったのかを知りたいんです!

…そんなわけでnumpyを使って光線(ray)と線分との交点を求めます。

## 条件

– れいちゃんは任意の位置 (x, y) から、任意の方向に向かってまっすぐ歩きます
– れいちゃんは壁をぶち破りません。そんな怪力ではないです
– つまり光線が最初にぶつかった線分の交点を求めます
– れいちゃんは頻繁にぶつかっちゃうので、一度に計算したいです

![れいちゃん.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703301/a3b3accd-fd8c-3968-2521-111488504bfa.png)

# できたよー!

これで、れいちゃんがどこでドジしているのかすぐに分かるね!?

“`py
def find_ray_segment_intersections(points, angles, segments):
“””光線と線分の交差判

元記事を表示

日本語TTSクラウドサービス生成速度比較

高速な音声対話を実現したいときに、各種TTSサービスがどの程度の時間がかかるのか調査したので共有します。

# プログラム
基本的に発話テキストを受け取ってwavファイルが保存されるまでを計測します。
一部 stream 再生機能を持つクラウドサービスがある場合は、その機能を作成してくださったことに敬意を評して一番最初の音声チャンクを受信したタイミングを採用します。

## amazon polly

アクセスキーとシークレットキーはAIMから生成できるので探してみてください。

“`python
import boto3
import time

# text = “こんにちは”
text = “猫ミームは、インターネット上で広く愛されている猫をテーマにしたユーモラスな画像や動画のことです。これらのミームは、可愛らしい猫の写真や面白いシチュエーションを捉えたGIF、またはテキスト付きのコラージュなどが一般的です。猫ミームは社会的な共感やユーモアを共有する手段として非常に人気があります。”

client = boto3.client(‘polly’,
aws_acc

元記事を表示

【Copilot入門】個別銘柄を特徴量で分類するためにPAC分析のコードを書く🎵

# 動機
ここでの動機は、エニアグラムのような簡単な説明変数で株などの個別銘柄を分類して、投資に役立てることです。そのために、PAC分析を応用したい(エニアグラムのアプリはこんな感じのものだと想定しています)と思います。
今回は、Copilotを利用して、PAC分析の基本的なコードまで出力します。
ちなみに、このコードは、説明変数(と目的変数の関係)があれば、応用が利くものだと思います。
それぞれは、以下の参考のようなものです。
# PAC分析とは
参考
[https://www.ei.tohoku.ac.jp/xkozima/lab/pacTutorial1.html](https://www.ei.tohoku.ac.jp/xkozima/lab/pacTutorial1.html)
# エニアグラムとは
参考
[簡易タイプ診断](https://www.enneagram.ne.jp/about/diagnosis)
# 本編
今回もCopilotへのプロンプトの詳細は余談に記載しました。
その結果、以下のように二番目のプロンプトからの結果は、以下のとおりのグラフが得られます。

元記事を表示

【競技プログラミング】ABC358 E – Alphabet Tiles を母関数&FFTで想定解より早く解く

## はじめに
[ABC358のE問題](https://atcoder.jp/contests/abc358/tasks/abc358_e)を解いているときに母関数を使って解く方法を思いついたので書きたいと思います。

:::note info
コンテスト中に通せませんでした(泣)
:::

## 本題

### 問題文(前半のストーリーを省略)

長さ $1$ 以上 $K$ 以下の英大文字からなる文字列であって、以下の条件を満たすものの個数を $998244353$ で割った余りを求めてください。
* $1\le i\le 26$ を満たす任意の整数 $i$ について以下が成立する。
* 辞書順で $i$ 番目の英大文字を $a_i$ とおく。例えば、$a_1=$`A`, $a_5=$`E`, $a_{26}=$`Z`である。
* 文字列の中に含まれている $a_i$ の個数は $0$ 個以上 $C_i$ 個以下である。

### 制約
* $1\le K\le 1000$
* $0\le C_i\le 1000$
* 入力される値はすべて整数

### 解

元記事を表示

Mercariの商品画像を使ってファッションカテゴリー分類モデルを作ってみる!_スクレイピング編

![スクリーンショット 2024-06-16 005122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664262/3c336b99-2493-8015-d151-93a6792cb2bc.png)

# 概要
Mercariの商品画像をスクレピングし、ファッションをカテゴリーごとに分類する深層学習モデルを作ります。
ただし、今回はメンズのトップスのみに限定させていただきます。

#### 調査の流れ
1. スクレイピング
2. データチェック
3. モデル作成

# 1. スクレイピング
スクレイピングの流れは、
商品ごとに写真のURLをスクレイピング→URLから商品の画像をダウンロードというものです。

以下は商品画像のサンプルです。

![m97553311374_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664262/c8537e0c-ae12-83af-d3d0-496fc164863b

元記事を表示

SentenceTransformersを用いた画像類似度検索

## 背景
画像の類似度を検索する方法を試してみようと思い、sentence_transformers を用いて6つの画像から、検索された文字列 “Alessandro Squarzi Jacket Style” に最も近い画像を検索することにしてみた。

## やったこと

### 画像の準備
![スクリーンショット 2024-06-16 9.49.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634885/3890bd03-10a2-27d1-df59-d7f06ebbb1ae.png)

### 必要なライブラリインポート
“`
import os
import pprint
from PIL import Image
from sentence_transformers import SentenceTransformer
“`

### 画像をベクトル化
“`
# モデルのロード
model = SentenceTransformer(‘clip-ViT-B-32’)

# 画像

元記事を表示

replitで数あてゲーム

数あてゲーム(数当てゲーム、数猜測遊戲)は、プレイヤーがある範囲内の数を推測し、正解を当てるゲームです。典型的な数あてゲームのルールと仕組みは次のようなものです:

### 基本ルール
1. **範囲の設定**: ゲームの開始時に、当てる数の範囲が設定されます。例えば、1から100までの数など。
2. **数の選択**: ゲームの管理者(コンピューターまたは他のプレイヤー)がその範囲内のある数をランダムに選びます。この数はプレイヤーには見えません。
3. **推測の開始**: プレイヤーはその範囲内の数を推測して入力します。
4. **ヒントの提供**: 各推測の後、管理者は推測が正解の数より「大きい」か「小さい」かをプレイヤーに伝えます。
5. **繰り返し**: プレイヤーは正解を当てるまで推測を繰り返します。
6. **正解**: プレイヤーが正解の数を当てたらゲーム終了です。

### 例
1. コンピューターが1から100までの数から50を選んだとします。
2. プレイヤーが30を推測します。
3. コンピューターは「正解の数はそれより大きい」と伝えます。
4. 次にプレイヤ

元記事を表示

python の datetime で zoneinfo を使って環境が変わっても特定のタイムゾーンの時間を取得する

`datetime.now()` をローカル環境で実行したときは日本時間だったのにクラウド環境で実行したら UTC になるの、あるあるだと思います。

バグにつながるのを防ぐために事前に指定しておいたほうがよいです。

## やりかた

環境が変わっても日本時間を取得するには zoneinfo を使います。(Python3.9以降)

参考:[Python 公式ドキュメント zoneinfo — IANA タイムゾーンのサポート](https://docs.python.org/ja/3/library/zoneinfo.html)

“`python
from zoneinfo import ZoneInfo
from datetime import datetime, timedelta

# ローカル環境から実行
dt = datetime(2020, 10, 31, 12)
print(dt) # 2020-10-31 12:00:00

dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo(“America/Los_Angel

元記事を表示

言語習得の為に始めたAtCoderで入茶するまでの話

# はじめに
2024/6/15に実施された [AtCoder Beginner Contest 358](https://atcoder.jp/contests/abc358) にて、
今回、いわゆる**入茶**と呼ばれるスコア400に到達する事が出来ました。

今年の3月の末から参加を始めたAtCoder Beginner Contestですが、
8回目の参加ですが、ようやく初心者脱出と言えるのかなと思います。
本記事ではAtCoderに参加する様になった動機と、活動内容について記載していきます。

# きっかけ
## 言語習得の必要性
私が業務において実務で使えるレベルであるプログラミング言語は、
AtCoderを始める前の段階で以下の通りでした。

– PHP
– IBM RPG3/RPG4
– COBOL

元記事を表示

ABC358(Atcoder Beginner Contest)のA~G(A,B,C,D,E,F,G)問題をPythonで解説(復習)

# ABC358(Atcoder Beginner Contest)のA~G(A,B,C,D,E,F,G)問題をPythonで解説(復習)

# A問題
– 文字列がそれぞれ`AtCoder`と`Land`となるかどうかを確認する.

“`A.py
“””
<方針>
– 文字列がそれぞれ`AtCoder`と`Land`となるかどうかを確認する.
“””
# 標準入力を受け取る.
S, T = input().split()

# 文字列が両方ともAtcoderとLandであるかどうか
if(S==”AtCoder” and T==”Land”):
# Yesを出力する.
print(“Yes”)
else:
# Noを出力する.
print(“No”)
“`

# B問題
– チケットに並ぶ人を順番に見ていく.
– 経過時間の時点で並んでない場合は,経過した時間`time`をチケットに並び始めた人が来たその時間`T[i]`まで早める.
– 並んだ人を時間`A`をかけて対応する.
– 経過した時間`time`を出力する.
“`B.py
“””
<方針>
– チケット

元記事を表示

Difyで作成したアプリをStreamlitに埋め込む方法

## はじめに
`ChatGPT`をはじめとする生成AIは最近のホットトピックであり、様々な活用方法が模索されています。生成AIを活用したアプリケーション開発を独自に行っている企業も多く見受けられます。

そんな中、最近リリースされた`Dify`はノーコードでチャットアプリの開発ができるプラットフォームとして注目を集めています。 これにより、自前で構築するのは面倒なRAGやエージェント機能などを組み込んだアプリを容易に構築、公開することが可能です。

今回は`Dify`で作ったチャットアプリを`Streamlit`で作成したアプリ上に埋め込む方法を解説します。

https://github.com/langgenius/dify/blob/main/README_JA.md

## 必要なもの
– git
– Docker

(`Dify`のシステム要件)
– CPU ≧ 2コア
– RAM ≧ 4GB

## 方法
### 1. `Dify`をローカル環境で起動
“`sh
$ git clone https://github.com/langgenius/dify.git
$

元記事を表示

PythonでPostgreSQLに接続し、SQL文を実行

## 概要
– sqlalchemyでポスグレに接続してSQLを実行
– ソースは[github](https://github.com/ShamNeko88/database_manager)に置きました
– 使いまわしたいのでクラスである程度の事は吸収してもらう(クラスのお勉強)
## 前提
– postgresのデータベース構築済み
– Pythonの基礎知識がある(クラス等)
## ソース
DB情報は下記を例とします。
– ユーザー名: postgres
– password: postgres
– ホスト: localhost:5432
– データベース名: hoge
– テーブル名: hogehoge
“`python
from sqlalchemy import create_engine, text

class ConnectPostgreSQL:
“””
PostgreSQLに接続するクラス

Args:
user_name (str): ユーザー名
password (str): パスワード

元記事を表示

ボストン住宅価格のデータセットをSHAPで可視化

解釈可能AIとして使われる「SHAP」というものがありますが、簡単に言えばshapley値という出力値(厳密には違いますが目的変数の値と思っていただければ)を使ってボストン住宅価格のデータセットを覗いてみようと思います。

※この記事はあくまでSHAPの使い方やグラフの見方でしかありません、過度な期待はしないでください。
# コード
“`Python3
from lightgbm import LGBMClassifier
import pandas as pd
import shap

shap.initjs()

df = pd.read_csv(“/content/drive/MyDrive/boston.csv”)
x = df.drop(“PRICE”, axis=1)
y = df[“PRICE”]

model = LGBMRegressor()
model.fit(x, y)

explainer = shap.TreeExplainer(model)
shap_values = explainer(x)
“`

## 重要度のプロット
>一般的な特徴重要度棒グラフ

元記事を表示

【Python】条件分岐文(if文)

条件分岐文(if文)は、プログラムの流れを条件によって分岐させる際に使用します。条件式の値が真であれば特定の処理を実行し、偽であれば別の処理を実行することができます。
# 単純なif文
“`python
x = 10

if x > 0:
print(“xは正の値です”)
“`
上記の例では、xが0より大きい場合に `”xは正の値です”` と出力されます。条件式が真の場合にのみ、インデントされたブロック内の文が実行されます。
# if … else文
“`python
x = -5

if x > 0:
print(“xは正の値です”)
else:
print(“xは負の値です”)
“`
この例では、xが0より大きい場合には `”xは正の値です”` が出力され、そうでない場合には `”xは負の値です”` が出力されます。
# if … elif … else文
“`python
score = 75

if score >= 90:
print(“Excellent!”)
elif score >= 80:
print(“G

元記事を表示

ABC358をPythonで(A~E)

CodeQUEEN 2024 予選 (AtCoder Beginner Contest 358)の解答等のまとめ

https://atcoder.jp/contests/abc358

# A問題
https://atcoder.jp/contests/abc358/tasks/abc358_a

問題文どおりにする
“`python:A
print(“Yes” if input() == “AtCoder Land” else “No”)
“`

# B問題
https://atcoder.jp/contests/abc358/tasks/abc358_b

直前の人がいつ終わるかが解ればいいので
直前に回答したものを記録すればいい
“`python:B
n, a = map(int, input().split())
t = list(map(int, input().split()))

last = 0
for t_i in t:
print(max(t_i, last) + a)
last = max(t_i, last) + a
“`

# C

元記事を表示

ABC358の感想

ABC358開催日だったので適当に参加した結果をまとめる

https://atcoder.jp/contests/abc358

結果はABCDの4完
いままで3完しかしなかった壁を越えることができて嬉しい

A,Bについてはただやるだけなので省略するとしてC以降の感想を書いていく

# C
bit全探索すれば行ける気はしたがやり方がわからないので
色々検索して出てきたのをコピペしてアレンジ
今度からこれをテンプレにしたいね

## ソースコード

“`python:main.py
import sys
from itertools import product
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline()

元記事を表示

Python(0)記事をまとめたい。

Qiitaに投稿した記事は、C, C++、Pythonが3大言語になっているはず。

少ないのが、JAVA、Cobol, Fortran アセンブラ

もっと少ないのがBasic、Coq, C#, SPIN, uppaal, SMV, Event-B…

python 記事が300はあるはず。順次追記予定。

https://qiita.com/official-campaigns/engineer-festa/2024

アプリケーション開発の工夫は、徹底的に言語の機能を確認し、コンパイルエラー、実行時エラーを収集し、ライブラリ、フレームワーク類を比較して設計するようにしている。
|No.|Title, Link|Views|Likes|Stocks|
|:—-|:—-|:—-|:—-|:—-|
|1|操作可能なプログラムまはたバッチ ファイルとして認識されていません。Microsoft WindowsにPython3(7), Anaconda3)を導入する(7つの罠)error(61) https://qiita.com/kaizen_nagoya/item

元記事を表示

python: requirements.in ってなに?って思ったら、requirements.txt の makefile 的な?

# 背景

以下デモを触っていたら、requirements.in ってのがあって、なに?と思ったら便利なことを知らされた。
pythonist にとっては当たり前のことのような気がするけど

https://github.com/Azure-Samples/azure-search-openai-demo

# 概要

– requirements.in に適当に記述して、compile すると、依存関係をよしなに解決して requirements.txt を生成してくれる。
– 実際に python で利用するのは txt 側なので、git で両方管理しておけば、library 調整が楽になる

ってことかな、と。常に最新版でいいやって思ったとしても、正確な環境を残せるってのは素敵ですね :yum:

で、compile は以下を利用

## [pip-tools](https://pypi.org/project/pip-tools/)

> pip-tools = pip-compile + pip-sync
A set of command line tools to he

元記事を表示

Azure Cosmos: 非同期化時の記録(Flask to Quart)

# 背景

以前やってた際は、Flask だったが、Quart 移行となった際に、躓いた記録

https://qiita.com/baku2san/items/52d004b6087877588a65

# import 変更

“`python: 同期
from azure.cosmos import CosmosClient
“`
“`python: 非同期用へ
from azure.cosmos.aio import CosmosClient
“`

# 取得方法の変更

“`python: 以前の一例
next_item = next(query_items)
“`

“`python: 非同期用へ
query_items_response = container.query_items(
query=”SELECT * FROM r WHERE r.id=@id”,
parameters=[
{“name”: “@id”, “value”: doc_id}
]
)

items = [item async for ite

元記事を表示

OTHERカテゴリの最新記事