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

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

2,3体問題と数値解析

# はじめに
複数の惑星が存在した場合、その惑星が万有引力によりどのような軌跡を描くのかを調査する問題を多体問題という。一般的に3体問題以上の系は厳密に数式を用いて運動方程式を解くことができない。そこで、今回は2体問題や3体問題についてpythonを用いた差分法で運動方程式を解くことにより、適切な計算量以内の範囲でシミュレーションをすることを目的とする。

# アルゴリズム
加速度と変位の関係式である運動方程式から変位を求めるために、以下のようなアルゴリズムを用いる。

## 速度と変位
微小区間($t=t$から$t=t+\Delta t$)に粒子の加速度$\textbf{a}$が与えられたとき
速度と変位は以下のように表すことができる。これは、微分の定義から来ている。

“`math
\textbf{v}(t+\Delta t)=\textbf{v}(t)+\textbf{a}(t)\Delta t
“`

“`math
\textbf{x}(t+\Delta t)=\textbf{x}(t)+\textbf{v}(t)\Delta t
“`
これを$t=0$から$t=t$ま

元記事を表示

文字の一致 print内にif文を埋め込む

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

今回、print内にif文を書くことで、短い行数で同じ動作をするプログラムをPython 3で書いてみた。
もし、正しいif文で書くとこのようになる。
## プログラム本文
“`py:patern1.py
a = input()
b = input()
if a == b:
print(“OK”)
else:
print(“NG”)
“`
print文の中で処理をするように書き直すと以下のようになる。
“`py:patern2.py
a = input()
b = input()
print(“OK” if a == b else “NG”)
“`
## 結果と分析
### patern1の場合の結果
![スクリーンショット 2024-08-20 214201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828295/fb709aad-76b1-1

元記事を表示

AtCoder Python チートシート

## 入力
### 一行だけ取る
|Input |script |結果 |
|—|—|—|
|abcde|s=input() |s=’abcde’ |
|abcde |s=list(input()) |s=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’] |
|5(1つだけ) |a=int(input()) |a=5 |
|1 2 |x,y = map(int,input().split()) |x=1,y=2 |
|1 2 3 4 5 … n |li = input().split() |li=[‘1′,’2′,’3′,…,’n’] |
|1 2 3 4 5 … n |li = list(map(int,input().split())) |li=[1,2,3,4,5,…,n] |
|FFFTFTTFF |li = input().split(‘T’) |li=[‘FFF’, ‘F’, ”, ‘FF’] |
### 複数行取る
#### patern 1
“`py:input.txt
3
a
b
c

元記事を表示

Python3: List A から List B の要素を除く

リスト内包表記 を使います。

## プログラム

“`py:remove_list.py
#! /usr/bin/python

list_aa = [1, 2, 3, 3, 4, 5, 4, 5, 6]
list_bb = [4,5]
print(list_aa)
print(list_bb)
bb_set = set(list_bb)
new_list = [item for item in list_aa if item not in bb_set]
print(new_list)
“`

## 実行結果

“`text
$ ./remove_list.py
[1, 2, 3, 3, 4, 5, 4, 5, 6]
[4, 5]
[1, 2, 3, 3, 6]
“`

元記事を表示

Pythonで自然言語処理 (NLP) を使って感情分析をしてみた

こんにちは!今回は、Pythonを使って簡単な感情分析を行う方法を紹介します。感情分析は、テキストデータがポジティブ(肯定的)かネガティブ(否定的)かを判断する技術です。これを通じて、NLP(自然言語処理)の基本を学びましょう。

# 1. 必要なライブラリのインストール
まず、必要なライブラリをインストールします。以下のコマンドを実行してください。

“`
pip install numpy pandas scikit-learn nltk
“`
これで、データの前処理や機械学習モデルの構築に必要なツールが揃います。

# 2. データの読み込み
次に、ユーザーレビューが格納されたCSVファイルを読み込みます。レビューには、テキストの内容とそれがポジティブかネガティブかを示すラベルが含まれています。
“`
import pandas as pd

# CSVファイルからデータを読み込む
data = pd.read_csv(‘sentiment_reviews.csv’)
print(data.head())
“`
この段階で、データが正しく読み込まれているかを確認しましょう

元記事を表示

djangoのlogin_requiredデコレーター実装について調べた

## デコレーターとは

関数の前後に他の特定の処理を入れ込む機能です。オープンソースでも使われているとの情報を確認し、実際の実装を見ていましたが、djangoで使われていると記事を見たので、コードを調べて複雑な点をメモ書きとして残しておきます。

## djangoの login_required の例

https://github.com/django/django/blob/main/django/contrib/auth/decorators.py

“`python

def login_required(
function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None
):
“””
Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary.
“””
actual_decorator = user_

元記事を表示

Pythonのasync/await

Pythonの`async`と`await`キーワードは非同期タスクを管理するために使用されます。

非同期プログラミングは、他のタスクをブロックすることなく複数のタスクを同時に処理できるようにします。Pythonでは、コルーチンを使用してこれを実現します。

`async`キーワードは、関数を非同期コルーチンとして定義するために使用され、`await`キーワードはコルーチン関数内で別のコルーチンの実行を待つために使用されます。

### コルーチンとは何か?
コルーチンは、特定のポイントで実行を一時停止し、再開する機能を持つ通常の関数とほぼ同じです。これにより、非ブロッキング動作が可能になり、コルーチンの実行が遅延した場合や、他のコードを実行するために意図的に実行を一時停止することができます。

コルーチンはジェネレータ関数と非常に密接に関連しています。実際、Python 3.5で`async`と`await`が導入される以前は、ジェネレータ関数を特別な方法で使用してコルーチンを実装していました。

Python 3.5以降のバージョンでは、`async`と`await`という2つの

元記事を表示

名刺バインダー管理 (paizaランク B 相当):Python3解答例

### 背景
![スクリーンショット 2024-08-17 20.24.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527611/015c47bf-1587-6236-3af8-9e1eaf57f0b3.png)

1枚のファイルには、n個のポケットが横に並んでおり、表と裏の両面から名刺を眺めることができます。
このため、1つのポケットには、2枚の名刺が背中合わせに入っています。

– 1番からn番の名刺は、1枚目のファイルの表面から見たときに左詰めに並んでおり、
– n+1番から2n番の名刺は、1枚目のファイルの裏面から見たときに左詰めに並んでいます。
– 2枚目以降のファイルにも同様に名刺が並んでいます

このプログラムは、名刺を収納したバインダーにおいて、与えられた名刺番号 `m` に対応する裏側の名刺番号を求めるものです。各ポケットには2枚の名刺が背中合わせに入っており、1枚のファイルには `n` 個のポケットが並んでいます。

### 全体のコード

以上のステップをまとめると、最終

元記事を表示

【合格体験記】Python 3 エンジニア認定実践試験

## はじめに
前回に続き、Python 3 エンジニア認定実践試験の受験所感を記事にしようと思います。
Python 3 エンジニア認定データ分析試験は以下記事にしているので、よろしければ併せてご覧ください。

https://qiita.com/mmm_qiita/items/77f6050acb9254d4d04a

## Python 3 エンジニア認定実践試験とは
概要は以下となります。

:::note warn
記事投稿時の情報となり、内容が変更される可能性がありますので、受験される際はご自身でもお調べいただくことをおすすめいたします。
:::

| 内容 | 詳細 |
| —- | —- |
| 主催 | 一般社団法人Pythonエンジニア育成推進協会 |
| 試験内容 | ・より実践的なPython文法を出題
 ※Python 3 エンジニア認定基礎試験の上位資格 |
| 試験時間 | 75分 |
| 試験形式 | 選択式 |
| 問題数 | 40問 |
| 合格ライン | 70%(28問以上の正解で合格) |
| 受験料金 | 一般: 13,200円(

元記事を表示

Python3: Fizz Buzz (paizaランク C 相当)やってみた

分岐の問題なんですが、単純な繰り返しでもある。

https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz

“`py:
def fizzbuzz_gen():
F = “Fizz”
B = “Buzz”
FB = “Fizz Buzz”
i = 0
while True:
yield from (
i+1, i+2, F, i+4, B
, F, i+7, i+8, F, B
, i+11, F, i+13, i+14, FB
)
i += 15

fb = fizzbuzz_gen()

N = int(input())

for _ in range(N):
print(next(fb))
“`
分岐なしでやってみました。無駄な演算をなるべく減らしてみます。

“`py:
unbox = lambda *xs: xs[-1]

元記事を表示

【python】単語のカウント問題を解きました

# はじめに
paiza様のpython問題集から、単語のカウント問題を解きました

## 問題
>スペースで区切られた英単語列が与えられます。
>英単語列に含まれる英単語の出現回数を出現した順番に出力してください。

## 実装したソースコード
“`python
array1 = input().split(‘ ‘)
array2 = []
for x in array1:
if x not in array2:
array2.append(x)

for y in array2:
count = 0
for z in array1:
if z == y:
count += 1
print(y + ” ” + str(count))
“`

## 実行した結果
![test1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055346/50a9fe59-5c4c-ed95-ce1a-fcc591340e4b

元記事を表示

素人が大会を盛り上げるSlackボットをDifyで作ってみた

# はじめに
[技術チャレンジ部](https://challenge-club.connpass.com/)のとも(Tomo)です。チームTPACで[自動運転AIチャレンジ2024](https://www.jsae.or.jp/jaaic/2024ver/summary/)に[参加中](https://www.jsae.or.jp/jaaic/2024ver/contest/)です。
[こちらの記事](https://qiita.com/tomo-v/items/6aeec8c27cc5586d4fa8)で作ってみたDiscordのボットを、Slackに移植してみました。

https://qiita.com/tomo-v/items/6aeec8c27cc5586d4fa8

素人なので、変なことを言っていたらすいません!

# 設計方針
Discordで作ったボットのアーキテクチャをなるべく流用するために、以下の方針としました。
– PythonのライブラリからSlack APIを使用する
– Pythonスクリプトがクライアントになる

# Slackのボット
## フレーム

元記事を表示

pythonのwebdriverを使っていたところOSErrorが出た件

# エラー内容
毎日のようにbatファイルからpythonをタスクスケジューラ実行しているのですが、先日いきなりこのようなログが返ってきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480692/f368ee41-e555-5b28-7520-bc6df85853ed.png)

OSError:[WinError 193] %1 は有効なWin32アプリケーションではありません。

# 対処方法
Webdriverで困ったときはだいたいツイッターで検索して対処法を探すのですが、
今回もツイッターで既に対応方法を書いている方がいらっしゃいました。

https://x.com/alt_ego_project/status/1817923781748535785

最新版のアップデート
pip install webdriver_manager –upgrade

よく分かりませんが、こちらを実行すると問題なくpythonがまた実行できるようになりました。

私ももっとwe

元記事を表示

「mapitool.exe」(ruby-msg)を代替するPython版mapitool(暫定)の作成

# 1. きっかけ
こちらの[『IIJ セキュアMX』Windows環境で動作する「SMX迷惑メール誤判定報告ツール」を作成しておきました](https://qiita.com/hiro-matsumoto/items/d62f09cf46ded2621a44)にて、
OutlookのMSG形式メールをeml形式に変換するツールとして、
rubyで作成された「mapitool-1.5.0-mswin32-stand_alone.zip」(ruby-msg)を使っていました。

(cles::blog 平常心是道 様)[.msg を .eml に変換する (ruby-msg編)](https://blog.cles.jp/item/6664)

(Githubリポジトリ) https://github.com/aquasync/ruby-msg
(Google Code Archive)https://code.google.com/archive/p/ruby-msg

(Qiita)[Outlook のメールデータ:インポート・エクスポート](https://qiita.com/ke

元記事を表示

MinecraftのDataPackのテンプレートをPythonで構築してみる

## はじめに
Minecraftのデータパック製作で関数を作ってささっと試したいとき、それにいちいち手間をかけないで爆速でデータパックの準備を済ませたいと思ったことありますね?
今回はPyhtonでMinecraftのデータパックの土台を自動構築していこうと思います。

## 環境
Python: 3.12.5

Minecraft: 1.21

OS: Windows 11

## やること
Pythonをインストールしてない人はインストールしちゃってください。
https://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
Pythonをインストールしている人だったら、下のコードをデータパックを生成したいフォルダーに下のPythonをとりあえず貼ってください。
“`python:data_pack_gen.py
import os
import json

pack_name = input(“pass the pack name:”)
os.makedirs(f”./{pack_name}/data/minecraft/”)

元記事を表示

動体検知監視カメラ

# はじめに

今回、自作で動体検知のできる監視カメラを作成しました。本記事では、開発にあたって設定した要件をまとめてご紹介します。

# 1.テーマ
「自身で開発から運用までを行い監視カメラを作る」という目標のもと開発した、動体検知で人間のみを検知し、discord(メッセージアプリ)に検知時の画像を送信するアプリケーションです。

# 2.課題の定義
## 解決すべき課題
実家に空き巣が入り、急遽、市販の監視カメラを設置しました。しかし、運用するにあたって、いくつかの課題を発見するに至りました。
#### 2.1 可用性の問題
– 上手く動体検知しないことがある
– デバイスに送信される画像がコマ送りになっており、前後の映像が取得できない
– 画質が悪く、正確な情報を得られない
#### 2.2 ユーザビリティの問題
– 専用アプリが使いにくく、独自の設定をユーザ側が手動で行う必要がある
– アプリの通知が届かない時があり、検知した場合に即座の対応が難しい

## 3.解決方法
フルHDのwebカメラを使用し、Discordを介して画像を送受信することで、画質の問題・通知の不安定

元記事を表示

CNNで画像分類をやってみました

# AIってなんだろう?
ふと思い立ち、調べながらつくってみました。

# AIの分類
だいたいこんな感じの分類。
これはGoogleの画像検索でも出てくると思います。

機械学習:教師あり学習、教師無し学習、強化学習
深層学習:多層のニューラルネットワークを使用してデータから特徴を自動的に学習します。

# 謝意
今回は作成にあたり、フリーなデータを使わせていただきました。
https://www.kaggle.com/datasets/vishalsubbiah/pokemon-images-and-types

ポケモン809種の画像が120×120の形で保存されています。
VGG16を使用するにあたり、224×2224に加工し、データ拡張をしています。

pokemon-apiを使おうか検討しましたが、
最後に公開できないことを知り、諦めました。

# 今回試してみた内容
今回はWEBアプリで画像を投稿したら、その画像がどの様な分類になるか?
というものを作成したいと思います。

教師あり学習の中にある「分類(カテゴリ分け)」と「回帰(予測)」のうちの
「分類(カテゴリ分け)」

元記事を表示

【Python】watchdogでファイルの変更を検知して非同期で処理する方法

ファイルの変更を検知して、サーバーにアップロードするような処理を書きたかったので調べました。
ファイルの変更検知は [gorakhargosh/watchdog | Github](https://github.com/gorakhargosh/watchdog) で簡単にできたのですが、アップロード処理を非同期で行う実装に手間取ったので残しておきます。

“`python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler, FileSystemEvent
from concurrent.futures import ThreadPoolExecutor

def upload_file(file_path):
print(f” [upload_file] start. (file={file_path})”)
time.sleep(5)
print(f” [upload_file] end. (fi

元記事を表示

matplotlibを用いたグラフ描写にてTimes New Romanのフォントを利用する方法

# はじめに
OS、実行環境は以下の通りです。
“`
Ubuntu 22.04
virtualenv + python 3.9
“`
タイトルにあるように、matplotlibにてグラフを描写する際、グラフ内で用いる凡例や軸名にTimes New Romanを用いる方法を説明します。以下、自身の環境におけるデフォルトのフォントです。
“`
>>>import matplotlib as plt
>>>plt.rcParams[“font.family”]
[‘sans-serif’]
“`

# Times New Romanフォントのインストール
まず、システムにTimes New Romanフォントがインストールされていることを確認します。以下のコマンドを使用して、Microsoftのコアフォントをインストールします。
“`
sudo apt update
sudo apt install ttf-mscorefonts-installer
“`

# フォントファイルを仮想環境に設定
Times New Romanフォントファイル(Times_New_Roman.tt

元記事を表示

paiza×Qiitaコラボキャンペーンなので、恥を忍んで投稿します!

# はじめに
 paiza×Qiitaコラボキャンペーン ということ、過去に一度練習したことがあるランクB問題ですが、理解度の確認を兼ねて再度実施しました。
 不適切な部分について、ご指摘いただけるとありがたいです。

https://paiza.jp/works/mondai/b_rank_skillcheck_sample/long-table

# 私の回答例

“`python
# coding: utf-8

N, M =map(int,input().split())
value =[[int(x) for x in input().split()] for _ in range(M)]

seat_availability = [True] * N #各シートが着席できるかどうか
guests_num = 0 #着席したお客の総数

for m in range(M):
entering_num = value[m][0] #入店したお客の人数
seat_num = value[m][1] – 1 #着席する最初のシート番号

#入店

元記事を表示

OTHERカテゴリの最新記事