Python3関連のことを調べてみた2023年02月15日

Python3関連のことを調べてみた2023年02月15日

Flet触ってみた

# Fletとは
https://flet.dev/

GoogleのFlutterをベースにしたPython のフレームワークで、
公式のイントロダクションに書かれていますが、フロントエンドの開発経験が無くてもイケてるUIを作ることが簡単にでき、作成したアプリがクールかつプロフェッショナルに見えることを助けてくれるそうです。

# 公式Docsは英語
TutorialsのToDoApp をなぞる形で実施していきます。
尚、公式のDocsは全て英語のため、私はChromeの拡張機能である「ほんやくコンニャク([DeepL翻訳](https://chrome.google.com/webstore/detail/deepl-translate-reading-w/cofdbpoegempjloogbagkncekinflcnj?hl=ja))」を使用しています。

#### 環境
MacOS Big Sur 11.3.1
Python 3.10.2
flet 0.4.0

まずはFletのインポート
“`
pip install flet
“`
ハローワールド
“`main.py

元記事を表示

Pycharmのターミナル起動時出力される「このシステムではスクリプトの実行が無効になっている~」ログの解決法

# 環境条件
Windows 11 Home
pycharm

# 状況
学習を進めていく途中でpycharmを知り、毎回Terminalを開くと出てくる
怪しげなログが気になったので調査してみた。
そこまで深く追及する気はなし。
治ったのなら、ひとまずOKの精神。
ちなみに出力されているのはこんなログ。
~~~
Import-Module : このシステムではスクリプトの実行が無効になっているため、ファイル~
~~~

# 原因
PowerShellの “Excution Policy” の値が “Restricted”となっているためらしい。

# 解決策
その “Excution Policy”の値を” RemoteSigned” に変更すればよいらしい。

# 過程
①確認コマンド`Get-ExecutionPolicy`を実行。
~~~
PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted
~~~

②設定コマンド`set-executionpolicy remotesigned`を実行
~~~
PS

元記事を表示

Discord のリアクションに反応し通知する Bot

## はじめに
Discord の返信や応答などに使われるリアクションに気づかないことがあり不便なため、リアクションに反応して通知してくれる Bot を作りました。ユーザがリアクションすると Bot がメッセージ主にメンションする流れになっています。なお、NITRO に入ることで使えるようになる他サーバのカスタム絵文字には対応していません。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1115291/fe8a42d0-05d7-07c4-02af-b917d8a3a328.png)

## 環境
* Raspberry Pi 4 Model B
* CentOS Stream 8
* Python 3.11.0
* discord.py 2.1.0
* Repl.it
* Ubuntu 20.04.2 LTS
* Python 3.8.12

元記事を表示

Flaskのlogに付加情報を出力する

## まえがき

趣味の小物アプリでflaskを使った際に調べたこと。
nginxのログと照らし合わせるため、flaskのログにIPアドレスを出したいと思った。
(本当はrequest_id的なもので透過的に見れるといいんですが…)

pythonのloggerではフォーマット指定の際、extraフィールドに任意の識別子を含めることが出来る。
extraパラメータは実際のログ出力時に毎回指定する事も出来るが、filtersを使ってミドルウェア的に挟むことが出来る。

## 環境
> Python 3.10.10
> Flask==2.2.2

## ソース抜粋
“`python: common/logger.py
from logging import Filter
from logging.config import dictConfig
from flask import request

class ExtraFilter(Filter):
def filter(self, record):
# flaskからremote_addrを取得しclienti

元記事を表示

ModuleNotFoundError: No module named ‘_ctypes’

### pyenvのインストールで、ModuleNotFoundError: No module named ‘_ctypes’が出た時。

“`
pyenv install 3.7.4
Downloading Python-3.7.4.tar.xz…
-> https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
Installing Python-3.7.4…

BUILD FAILED (Ubuntu 18.04 using python-build 2.3.12-16-gc8daaa39)

Inspect or clean up the working tree at /tmp/python-build.20230214083324.13541
Results logged to /tmp/python-build.20230214083324.13541.log

Last 10 log lines:
File “/tmp/tmplfm0akzd/pip-19.0.3-py2.py3-none-an

元記事を表示

PySimpleGUIでのイベント設定方法

# はじめに
今回はPySimpleGUIでイベントを設定する方法についての記事になります。

イベントのイメージとしては
「GUI上でボタンが押されたときにXXXXする。」みたいな動作があるとすると、
「ボタンが押される」っていうところがイベントです。

PySimpleGUIでは、デフォルトでイベント設定されているものと、されていないものがあるので
その点はリファレンスなど参照の上、注意して実装していく必要があります。
(PySimpleGUIのドキュメント:https://www.pysimplegui.org/en/latest/)

# デフォルトでイベント設定されているwidgetを使ったイベント設定
ここでは、文章を入力しボタンを押すと、文章の前後に***が装飾された文章がポップアップされるコードを紹介します。
*2つのウィジェットにkeyという引数で、識別子を与える
*ボタンはデフォルトでイベント設定されているので、ボタンが押されたときにeventに識別子が格納される
*入力系のwidgetに与えた値は values[設定した識別子] で確認できる
*ボタンは入力系のw

元記事を表示

【AtCoder】ABC194E Mex Min Python解説

# はじめに

ABC 194 E 問題 Mex Min を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

# E.Mex Min

[問題ページ](https://atcoder.jp/contests/abc194/tasks/abc194_e)
難易度 : 緑色 1088

# 考察

## データ構造の選択

$mex$ : 区間に含まれない & 最小値

⇔ **$1 , 2 , …. , N$ の集合から区間に含まれる要素を削除して残った最小の値** と解釈できます。

区間はスライドするため、この区間に含まれない要素の集合を管理するためには**任意の要素の削除 および 追加** を高速で行えるデータ構造が必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3012066/f2370664-bdeb-3c4e-1303-8969f5bed2a0.png)
また、*

元記事を表示

Pythonチートシート – 正規表現の使い方一覧

これまで、独習Pythonの内容を参考にチートシートを作成してきました。
今回の正規表現に関するチートシートで一区切りとし、次回からは「Pythonではじめるアルゴリズム入門」、”ML for beginners”の内容の学習記録を再利用性・汎用性の高い情報として纏めてみたいと思います。学習予定・記事を執筆予定の書籍・学習コースは以下の通りです。

https://www.amazon.com/Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E5%85%A5%E9%96%80-%E4%BC%9D%E7%B5%B1%E7%9A%84%E3%81%AA%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E

元記事を表示

Python 初学者が楽天APIを使って買い物リスト作成アプリを作る(材料の計算編)

**このページは以下の続きです**

https://qiita.com/yuuauuy1/items/6d399f6903d9cf068169

今回は、
選択したレシピの材料を自分が作りたい人数分の量に変換

同じ材料があれば足し算

お買い物リストとして表示

という部分を作っていきます。

**イメージはこちら**
選択したレシピの詳細を表示され、ユーザーが何人分の材料にするか入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/dde0dd6e-4201-6387-6177-dddec12ddb23.png)

材料がユーザーが入力した人数分に変換されて、表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/da3514b2-7fc0-62dc-191f-056ec7447614.png)

**買い物リスト作成アプリの概要はこちら*

元記事を表示

アルファベットからなる連続IDを生成するPythonコード

### 概要
SpreadSheetのカラム名のように、A, B, C, …., Z, AA, AB, AC, ADと連続するIDを生成するコードを作成した

### コード
なお今回は、Aを自然数における0と同じ様に扱うように設定した。つまり以下となる。
– 正) Y → Z → BA → BB
– 誤) Y → Z → AA → AB

これは、8 → 9 → 00ではなく、8 → 9 → 10であることに等しい

“`python
import string

ZERO_CHAR = ‘A’
ONE_CHAR = ‘B’
LAST_CHAR = ‘Z’
CHAR_SERIES = string.ascii_uppercase

def reverse(_list):
return list(reversed(_list))

def succ(char):
alphabet_to_num = dict(zip(CHAR_SERIES, [i for i in range(1, len(CHAR_SERIES) + 1)]))
num_to_alp

元記事を表示

Python 初学者が楽天APIを使って買い物リスト作成アプリを作る(レシピ検索システム編)

**この記事は以下の続きです**

https://qiita.com/yuuauuy1/items/3448c41c0b684db76edb

今回は、楽天レシピカテゴリ一覧API と 楽天レシピカテゴリ別ランキングAPIを使って
集めたレシピから検索 ➡ 買い物リストに入れたいレシピを選択する
という機能を作っていきます!

**イメージは以下の通り**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/3a576d55-d8ac-d00b-65ff-53c031feda60.png)

このように、検索ワードを入力したら、以下の検索結果が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983287/0b5369d7-c86f-0732-9556-853cb5b1d4d7.png)
この中から、以下の様に indexを選択します。
![image.png](

元記事を表示

Webスクレイパーを作ろう #1

# Pythonを使ってWebスクレイパーを作る

この記事では,Pythonを使ってWebスクレイパーを作ることを目的としています.
今回は,ココオルのつぶやきを集めるというスクレイパーを作成していきます.
2回に分けて解説していきます.

# 環境準備

インストールするもの
– requests : Webページの情報を取得するのに使用
– BeautifulSoup : WebページのHTMLから必要な情報を抽出するのに使用

“`
pip install beautiflsoup4
pip install requests
pip install html5lib
“`

ライブラリのインポート

“`.py
from bs4 import BeautifulSoup
import requests
import html5lib
import time #収集の際に時間間隔をあけるために使用
“`

# Webページの構造の確認
https://cocooru.com/mutters?page=1
を開き,アクセス後F12キーを押し,左上の矢印をクリック後,カーソル

元記事を表示

class-based viewとfunction-based viewの違い

# class-based viewとfunction-based viewの違い
 本稿ではDjangoの実装でよく用いられるけど、似ているからごっちゃになる2つについて説明します。

## イメージでとらえる
 具体的な説明に入る前に、まずはイメージで捉えていきたいと思います。
– class-based view:お惣菜
– function-based view:料理
です。

 お惣菜は、便利です。料理をしたくないときに買ってきたら、すぐ食べることができるし、一定のおいしさは担保されています。しかし、「もうちょっと味濃かったらな」とか「具材の組み合わせがなんか違う」といったような融通の利かなさが出てくるかもしれません。
 一方で料理はめんどくさいです。献立を決めて、食材を選び、調理をしなくては食べれません。おいしさだって「砂糖と塩を間違える」といったべたなミスや、「焼きすぎ、煮込みすぎ」などの調理ミスで左右されます。しかし、自分の思うように作ることができます。味も食材も自分の自由です。

 class-based viewとfunction-based viewも同じ関係です

元記事を表示

SKJvillageのスクリーンショット内の顔認識

# 1.あらすじ
 今回は導入として、pythonとOpenCVを用いて、ゲーム実況系Youtubeグループ[SKJvillage](https://www.youtube.com/@SKJVillage)のスクリーンショットからメンバー3人(その他の人物も含む)の顔認識を試みました!

# 2.顔認識とは
 顔認識とは、データの中で顔を検出することです。方式は人によって様々ですが、今回は下の画像のように顔認識を行うと顔の部分に赤枠が生成されます。
![arigatou-detect2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/68b27fd9-749f-0f32-3d18-fdfe3bcb608b.png)

# 3.実験方法
 今回は、OpenCVに存在する分類器を用いてpythonで実行し、スクリーンショットに対する顔認識を行います。実行にはGoogle Colaboratoryを用います。プログラムを以下に示し、プログラムの後に詳細を説明します。
※Googleアカウントを持

元記事を表示

Python学習、ボール取り出しゲームの作成

こんちわ、kmdです。

学習3週間目です。
今回はこのような問題を解いていきました。
↓ 参考サイト
https://joytas.net/programming/python/python%E6%BC%94%E7%BF%92%E5%95%8F%E9%A1%8C%E5%88%9D%E7%B4%9A

“`
1~99の番号のついたボールが計99個入っている袋
その中から2人が交互にボールを取り出し大きい数を引いた方が勝ちとなる。
ゲームは5回戦で競う。
なお、取り出したボールは袋に戻さないものとする(同じボールを二度ひくことはない)
“`

“`ballgame.py
import random

def game():
balls=list(range(1,100))
random.shuffle(balls)
playerwin = 0
comwin = 0
for i in range(5):
player = 0
com = 0
player = balls[i] #プレイヤーにリ

元記事を表示

【AtCoder】ABC289 のA,B,C,D における Python解説

ABC 289のA,B,C,D 問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 886](https://atcoder.jp/users/tsuru1471)
230211 現在

# 目次
[はじめに](#はじめに)
[A.flip](#aflip)
[B.レ/V](#bレv)
[C.Coverage](#ccoverage)
[D.Step Up Robot](#dstep-up-robot)

元記事を表示

C言語でpythonのモジュールを作る

C言語でpythonのモジュールを作ってみる。

# 環境

Ubuntu22.04LTS
python3.10
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0

今回は、/dev/randomから真性乱数を取得するCのソースを使って、それでモジュールを作ってみます。
モジュール名、frandom

# ソース

“`frandommodule.c
#include
#include
#include

static FILE *fp=NULL;
static int count=0;
#define RANDOMMAX (0x0000ffffffffffff)

// サブ関数
// 48bit符号なし整数の乱数を乱数デバイスから得る
//
static int64_t get_48bit_random() {
int c;
char buff[sizeof (int64_t)]={0,0,0,0,0,0,0,0};
for (int idx=

元記事を表示

selenium4 で スクレイピング

とりあえず、動くコード

ヤフーのソースを表示するだけ。

“`
yum -y install libX11 GConf2 fontconfig
yum -y install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
fc-cache -fv
yum -y install google-chrome-stable libOSMesa
python3 -m pip install selenium
python3 -m pip install webdriver-manager
“`

今回はwebdriver-managerを使用するので、わざわざドライバをダウンロードする必要がない。

# chrome

“`hoge.py
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.support.ui import WebDriverWai

元記事を表示

Pythonでの音声信号処理 (10) ノコギリ波の周波数を解析

## 今回のテーマ
以前、ノコギリ波を秒間440回繰り返して音を出したときの波のデータについて、どのような周波数が含まれているのかを調べてみる。

(前回挙げた疑問点の残るひとつは、とりあえず保留して次回以降へ)

## やってみた

“`p10_1.py
# -*- coding: utf-8 -*-
import sys
sys.dont_write_bytecode = True

from Grp import Line, Bar
import Dummy as dmy
import numpy as np
import Analyze as ana
from multiprocessing import Process
import time
import math

def main():
orgsmpl = 44100 # サンプリングレートは44.1KHz
sec = 1 # 1秒分

# ノコギリ波
# -> 440回繰り返したいので、サンプル数を440分の1にして、あとで440回繰り返す
smpl = int(

元記事を表示

Python: 剰余演算子を使わないでFizzBuzzしてみた

[剰余演算子を使わずにFizzBuzzを解く](https://qiita.com/nkfrom_asu/items/783c6be996abe6cc2a67) の題名を見て「そうだよな剰余演算子って別になくてもできるよな」って妙に納得してしまったので、自分だったらどうやるかな?と思って考えてみました。

「3の倍数かどうか」 と考えれば剰余演算子の出番ですが、「みっつめごとに”Fizz”になる」と考えれば別のやりかたがありそうです。

“`py:
def print_fizzbuzz(n):
for _, fizzbuzz in zip(range(0, n)
, fizzbuzz_gen()
):
print(fizzbuzz)

def fizzbuzz_gen():
for fizz, buzz in zip(mod_gen(3, “Fizz”)
, mod_gen(

元記事を表示

OTHERカテゴリの最新記事