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

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

二重ループ:活用編 三角形の探索

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__triang
今までの例からしてこれでいけると思ったんですけどね。。。
だめでしたね。おそらくループが多すぎるのだと思います。

“`py
N = int(input())
Ans = “NO”
for a in range(1,N):
for b in range(1,N-a + 1):
for c in range(1,N-a-b + 1):
if a ** 2 == b ** 2 + c ** 2:
Ans = “YES”

print(Ans)
“`
でもよく考えたら、ですね。
2辺が決まったら、あともう1つって自動で決まるんですよね。
だからforを一つ減らせます。
ただ、aが0にならないようにしないとですが、
結局Falseになるので関係ないか。

“`py
N = int(input())
flag = Fal

元記事を表示

Pythonを使って二人用しりとりゲームを作る

## 初めに
今回は、判定に二分探索を使ってしりとりゲームを作りました。

## コード
“`py
import re

wordList = []
#しりとりの初めの文字を初期値で入れる
LastTimeWord = “り”
#ひらがな判定用
p = re.compile(‘^[ぁ-ゖ]+$’)

#しりとりとして成り立っているか判定
def siritoriCheck(inputWord):
global LastTimeWord
if inputWord[0] == LastTimeWord[-1]:
#成り立っていたら言葉を格納
LastTimeWord = inputWord
return False
return True

#言葉が重複していないかをチェック
def wordCheck(inputWord):
global wordList

#最後の文字が「ん」だったらTrue
if inputWord[-1] == “ん”:
return True

元記事を表示

動的型付け言語の限界と静的型付け言語の真価

# はじめに

動的型付け言語はその柔軟性で知られていますが、この柔軟性が時には代償を伴います。一方で、静的型付け言語はその厳格さにより多くのメリットを提供します。FastAPI と Pydantic を使用することで、Python のような動的型付け言語でも型の安全性を部分的に享受できるようになりました。しかし、この体験はまた、静的型付け言語におけるエディタの補助や型システムの堅牢さがいかに価値あるものかを痛感させられました。型ヒントとデータバリデーションを通じて得られた疑似的な型安全性は、静的型付け言語の持つ本質的な型安全性とエディタのサポートには及びません。この経験から、静的型付け言語の厳格さがもたらすクリアな利点に気づき、その優秀さを再認識するに至りました。

# 動的型付け言語における疑似型の問題点

FastAPI と Pydantic の使用は Python のような動的型付け言語でも型の安全性を向上させることができますが、この疑似的な型安全性には限界があります。特に、実行時まで型の不一致が検出されないことが多く、これは開発者にとって予期しないバグやエラーの原因となります

元記事を表示

APIキー不要のPythonのTwitter APIラッパー”twikit”の紹介

# この記事の概要
APIキーなしで利用できるPythonのTwitterAPIラッパーを作ったので紹介します。この記事を読んで使っていただけたら幸いです。
詳しい使用方法などは以下のリポジトリやドキュメントでご確認ください。

https://github.com/d60/twikit

ドキュメント: https://twikit.readthedocs.io/en/latest/twikit.html

# インストール
pipを使用してインストールしてください
“`bash
pip install twikit
“`

# はじめに
まずは、TwitterのAPIにアクセスするためのクライアントを定義し、アカウントにログインします。

以下は、コードの例です。

“`python
from twikit import Client

# 第一引数に言語を指定
client = Client(‘ja’)

# アカウントにログイン
client.login(
auth_info_1=’email@example.com’,
auth_info_2=’exam

元記事を表示

POSCARが存在するディレクトリorファイルパス一覧の取得

## プログラム使用法の確認
“`terminal
python3 get_poscar_existed_path_list_argparse.py -h
“`
usage: get_poscar_existed_path_list_argparse.py
example: python3 get_poscar_existed_path_list_argparse.py /mnt/ssd_elecom_c2c_960gb/cif/

This script takes five arguments: arg1.

positional arguments:
arg1 directory path that name is cif/: /mnt/ssd_elecom_c2c_960gb/cif/

options:
-h, –help show this help message and exit

## 実行ログ
“`terminal
time python3 get_poscar_existed_path_list_argparse

元記事を表示

I tried creating a Web API with Python [Introduction to Fast API]

## Web APIとは?

– ネットワークを経由してデータをやり取りする方法の1つ

## Web API サーバーとは?

– Web ブラウザ以外のアプリケーションから、HTTP 経由でデータや機能を提供するためのサーバーのこと
– データベースやその他のシステムと連携して、データを取得したり、処理したり、新しいデータを作成したりすることができる

“`
pip install fastapi
pip install “uvicorn[standard]”
“`
“`main.py

“`
## Reference site
[【Fast API 入門】PythonでWeb APIを作ってみよう!簡単にAPIが作れるフレームワークの紹介 〜初心者向け〜](https://www.youtube.com/watch?v=kZHdC-_yPgI)

元記事を表示

お金の支払い

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__payment

最初全く考えつきませんでした。
たぶん、(1,X,Y)=Zの組み合わせを全部考えて
それらの中でそれぞれの数が最小になるのを選べばよいわけです。
だけど、これらをどうやって多重ループにすればいいのか?が考えつきませんでした。

ただし、
・ 2 ≦ X , Y ≦ 1000
・ X != Y
・ 1 ≦ Z ≦ 3000
うーんと。
まず1円というのがあるので、
ひとまず、テストケースを元に考えます。
500 1000 300なので、
X = 500
Y = 1000
Z = 300。
ZがXやYよりも少なければ、問答無用で1円をZ枚分使うのが最小になりますね。だから300が答えになります。

テストケース2だと
50 100 855
X = 50
Y = 100
Z = 855
XよりYが大きければそっちを限界まで使いますね。
この場合、Z//Y = 8をcntにいれて、余りをsumに入れればいいわけなので sum = Z

元記事を表示

リアルタイムで音響イベントをラズベリーパイ(Raspberry Pi4 B)で検出

# 使用したデバイス
1\.Raspberry Pi 4B(64-bit)
2\.USB接続マイク(logicool C270n HD WEBCAM)

# 前準備
マイクのデバイスが認識しているか
参考サイト https://hellobreak.net/raspberry-pi-usb-microphone/

# 手順
ターミナルで以下のコードからgit cloneし、ファイルに移動。そしてrequirements.txtに書かれているライブラリをインストール
使用させて頂いたgit hub
https://github.com/robertanto/Real-Time-Sound-Event-Detection
“`
git clone https://github.com/robertanto/Real-Time-Sound-Event-Detection.git
cd Real-Time-Sound-Event-Detection
pip3 install -r requirements.txt
“`
インストールが完了したらThonnyかターミナルで実行
ターミナルの

元記事を表示

人はマクドナルドだけで生きていけるのか?

# 概要
 「ファストフードは栄養が偏る」昔から様々な人たちに言われてきたことですが、果たして本当にそうなのでしょうか?昔はともかく、健康寿命が注目されている最近は栄養に気を使ったメニューなどが販売されており、ファストフードそのもののイメージも変わりつつあるように思えます。そこで、ファストフードでの飲食が本当に栄養バランスが偏るのかについて検証しようと思います。
 この検証にあたり、先行研究があったので、そちらを参考として進めていこうと思います。
# 参考

https://qiita.com/takobaya391076/items/49b15c1fa36734b3fa53

https://qiita.com/youwht/items/9098d560f28d16aa5567

https://qiita.com/Kashalpha/items/582d0ffab82192304ca5

# 目標
 先人たちが辿ってきた足跡をそのままなぞっても面白くないので、以下の要素を追加したものを完成系として目指そうと思います。
– 栄養摂取目安を年齢・性別・運動レベル別に設定する

元記事を表示

数値変換判定処理

数値に変換できるかチェックできるプログラムを2通りで実装しました。

1.例外処理を使う場合

“`python
str1 = input()
try:
num1 = int(str1)
print(“YES”)
except:
print(“NO”)
“`

2.isdigitメソッドを使う場合
“`python
s = input()

if s.isdigit():
print(“YES”)
else:
print(“NO”)

“`

追加
正負記号を入れた整数はisdigitメソッドでは判定できません
下のプログラムを実行しました。

![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055346/29706047-7973-53f3-255f-5389d305a26a.jpeg)

元記事を表示

スーパー鳩時計

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__cuckoo_clock

素直に書くと
“`py
for x in range(24):
for y in range(60):
if ((x + y) % 3 == 0 and (x + y) % 5 == 0) or (x + y) == 0:
print(‘FIZZBUZZ’)
elif (x + y) % 3 == 0:
print(‘FIZZ’)
elif (x + y) % 5 == 0:
print(‘BUZZ’)
else:
print()
“`

3で割り切れるかつ5で割り切れる数、かもしくは0もx+yでというやつ。
とりあえず倍数をあげてみます
3 6 9 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60

元記事を表示

Flask-APSchedulerでadd_jobしようとしたらunexpected argumentで躓いた話

Flaskを利用してマイクロサービスを作っていますが,ちょっと定期的な処理を実装しようとして躓いたので情報共有

## 環境
環境は以下の通り
Python: 3.9.18
APScheduler: 3.10.4
Flask: 3.0.1
Flask-APScheduler:1.13.1

docker container(python3.9ベース)内にpip経由でライブラリを入れて作った環境で動かしてます

## やろうとしたこと
“`Python:test.py
from flask import Flask
from flask_apscheduler import APScheduler

def func1():
pass # 関数の内容は関係ないので

scheduler = APScheduler()

app=Flask(省略)

scheduler.init_app(app)

scheduler.add_job(func1, ‘cron’, min=15)
“`
こちら[公式](https://apscheduler.readthedocs.io/en/l

元記事を表示

ソーラーパネルの稼働状況の出力

# データの取得
ダッシュボード製作にあたり、必要な情報を取得しました。
自宅では、ソーラーパネルを設置しており、ポータルサイトから動作状況を確認できます。

https://ctrl.kp-net.com/settingcontrol/login

で、ログインすると、下記のような画面が表示されます。
![スクリーンショット 2024-01-30 113530.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3675614/e5397df1-d75d-3072-36a8-b6182479ed60.png)

ここに、ログイン、スクレイピングして、必要な数値を出力することを目的としました。

# ログインに必要なペイロード
Chrome上ログイン画面で、F12でなにが送信されているのか調べました。
ID、PASSのほか、非表示のcsrfの入力が必要でした。
最終的には、HTMLを見たら、どんな形でブラウザから受け取っているのかわかりました。

# csrfの壁
認証には、アクセス毎に変わるワンタイムパスワ

元記事を表示

log2

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__log2

素直にこの通りに解きましたが
これだと、掛け算がオーバーフローしてエラーになる可能性があるそうです。
たしかにそれもそうか。
log2だと天文学的な数値になるとか学生の時に聞いたことがあるし。

“`py

N = int(input())
sum = 1
for i in range(1,N+1):
sum *= i

cnt = 0
while sum > 0:
if sum % 2 != 0:
break

sum //= 2
cnt += 1

print(cnt)

“`

で、再度見てみると。

たとえば4だとすると
1 * 2 * 3 * 4 は 24で、2で割り切れるのは3回。
要素ごとに2で割れるか調べてみると
1 * 2 * 3 * (2 * 2)
こうなります。2が3個あるので、3回割れることになる。
これを応用すれば良さそうです。

“`py

N =

元記事を表示

多原子イオンを点置換した新しい結晶構造作成ログ(三角錐形・平面三角形編)

### 複数の多原子イオンに対して,点置換するプログラムを実行
“`terminal
time ./do_mk_polyatomic_ion_replaced_point_poscar_for_trigonal_pyramidal_planar_shape.sh
“`

target_ion_name: CO3
central_atom_symbol: C
neighboring_atom_symbol: O
bond_length_lower_end: 0.99
bond_length_upper_end: 1.66
target_npy_p: ../get_some_ion_contained_pos_folder_p_list/CO3_contained_poscar_folder_path_list_ver2.npy
os.path.exists(target_npy_p): True
100%|█████████████████████████████████████████████████████████████████████████████████████████

元記事を表示

レガシーなWEBサイトの大量のファイルにGTMのタグを自動で追加したい

## 目的
大量のHTML、PHPファイルで構成されたWEBサイトにGoogleタグマネージャーを一括でインストールしたい。

## 経緯

htmlやPHPで構成されたレガシーなWEBサイトに大量のファイルが。
それらのファイルにはヘッダーやフッターなどの共通部分がモジュール化されておらず。
その為、googleタグマネージャーなどの全ページに設定したタグは一つずつ職人の手で手作業で更新する必要が。
地道に数十ファイルを更新した結果、気が滅入ってきたので、どうにか一括で更新するべく一念発起。

## 成果物

指定したフォルダ内の指定した拡張子のファイルの中から、指定した文字列を含むファイルに対して置き換え処理をするシンプルなものができました。
同じ文字を置き換えするファイルが大量にある場合に有効。

“`python3
import os

# ファイルの中に指定した文字列を含むか確認
def check_string(file_path):
with open(file_path, ‘r’, encoding=’utf-8′) as file:
data

元記事を表示

多原子イオンを点置換した新しい結晶構造作成ログ(四面体形編)

“`terminal
time ./do_mk_polyatomic_ion_replaced_point_poscar.sh
“`

target_ion_name: AlCl4
central_atom_symbol: Al
neighboring_atom_symbol: Cl
bond_length_lower_end: 1.80
bond_length_upper_end: 2.70
target_npy_p: ../get_some_ion_contained_pos_folder_p_list/AlCl4_contained_poscar_folder_path_list_ver2.npy
os.path.exists(target_npy_p): True
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 170/170 [00:05<00:00

元記事を表示

素数の個数

https://paiza.jp/works/mondai/double_roop_problems/double_roop_problems__prime_number_easy

全然分からなかったですね。。。
これで行けるかなと思ったんですが。

“`py
N = int(input())
cnt = 1 #2も素数のため
for i in range(3,N+1):
for j in range(2,10):
if i % j == 0:
continue
else:
cnt += 1

print(cnt)

“`
とりあえず素数って
1とその数以外割り切れない数ってやつですよね。

とりあえず2以上なのは間違いないでしょう。
条件にも入ってますし。

とりあえず10まで考えてみます。

2 = 1, 2 と2つしかないので素数。
3 = 1, 3 と2つしかないので素数。
4 = 2で割り切れちゃうので素数ではない。
5 = 1, 5 と2つしかないので素数。
6 = 1, 2, 3, 6と 2も3

元記事を表示

I created an app with Django [Diary app]

## 1. Create a project

“`
django-admin startproject [project]
cd [project]
python3 manage.py startapp [project]
“`
① Create urls.py in diary file
“`diary/urls.py
from django.urls import path
from .import views
app_name=’diary’
urlpatterns=[
path(”, views.index, name=’index’)
]
“`
② Edit views.py in diary file

“`diary/views.py
from django.shortcuts import render

def index(request):
return render(request, “diary/day_list.html”)
“`
③ Create templates/diary file in diary file a

元記事を表示

多原子イオンを点置換した新しい結晶構造作成例(四面体形・三角錐形・平面三角形)

### 現在地
“`terminal
pwd
“`
/mnt/ssd_elecom_c2c_960gb/scripts/mk_polyatomic_ion_replaced_point_poscar

### 使い方の確認(四面体形)
“`terminal
python3 do_mk_polyatomic_ion_replaced_point_poscar_for_tetrahedral_shape.py -h
“`
usage: do_mk_polyatomic_ion_replaced_point_poscar_for_tetrahedral_shape.py
example: python3 do_mk_polyatomic_ion_replaced_point_poscar_for_tetrahedral_shape.py NH4 N H 0.82 1.24 ../get_some_ion_contained_pos_folder_p_list/NH4_contained_poscar

元記事を表示

OTHERカテゴリの最新記事