Python3関連のことを調べてみた2022年11月25日

Python3関連のことを調べてみた2022年11月25日

Python 3 Typing 早見

書きかけ。
知りたい typing の書き方があったらコメントしていただければ調べます。

# 入門

### 変数に使う
“`Python
hoge: int = 1
“`

変数を宣言せずに type hint だけ書くこともできる。

“`Python
hoge: int
“`

宣言したように見えるが呼び出すと not defined となる。

### 関数の返り値に使う
“`Python
def fuga(hoge: str) -> bool:
return True
“`

# 基本

### リスト
“`Python
__list: list[str]
“`

### 辞書
“`Python
__dict: dict[str, str]
“`

### 全てを受け入れる型 Any
“`Python
from typing import Any

anyyyyy: Any
“`

### 複数の型
“`Python
from typing import Union

hoge: Union[int, str] = 1
hoge: int

元記事を表示

apple siliconでseleniumコンテナを立ち上げてスクレイピングを行う

### 経緯

スクレイピング対象のwebページが動的(javascript)に生成するページたった。
それを解決するためSeleniumの知識が必要そうだった。
実際に動かすまでに時間がかかったので備忘録として残す。

### 目的

M1 macでdocker for macで立ち上げたseleniumコンテナを立ち上げる
seleniumコンテナを使って、動的に生成されるNHKニュースサイトの一覧を取得する

### 前提

– PC: M1 Macbook pro 14インチ 2021
– OS: macOS 12.6
– 言語: python3.9.6

### Seleniumとは

Webアプリケーションをテストするためのフレームワーク
Webブラウザを自動操作することができ、動作検証することができる。

### 必要なもの

– Webブラウザ
– Chrome,Edge,Sarariなど
– WebDriver
– ブラウザを操作するためのAPIを公開するモジュール。ブラウザとバージョンをあわせる必要がある
– Selenium

元記事を表示

Django新しいアプリケーションの作成方法

Djangoには新しいアプリケーションを作成するときの雛形が用意されている。
それを用いて、アプリケーションのディレクトリーを作成し、URLディスパッチを出来るようにするところまでをまとめる。

まず、Djangoのある仮想環境へ移動する。ターミナルやコマンドプロンプト(cmp)で実行する。
Anacondaを使用している場合は、以下の方法を用いる。

“`
#仮想環境の構築
conda create -n djangoenv python=3.10 #djangoenvは仮想環境名、pythonのバージョン指定がなければ記入は不要。
#仮想環境の有効化
conda activate djangoenv#仮想環境名
#仮想環境の無効化
conda deactivate
#作成した仮想環境の一覧
conda env list
#作成した仮想環境の削除
conda remove -n djangoenv –all #djangoenvは仮想環境名
“`

そして、Djangoの実行できる環境を有効化したら、以下のコマンドでアプリケーションの雛形を作成する。
“`
django-a

元記事を表示

【Django】静的コード分析ツール flake8 の導入

# 概要
## コーディング規約って?
システム開発は通常数人のチームで開発を行うけど、人が違えばコードの書き方なんて違って当然ですよね?

しかし、書き方が大きく違ってしまうと、他の人が見てわからなくなったり、なんなら作った自分がわからなくなったり・・。
これは、バグの修正や拡張のしにくさにつながって、メンテナンスしにくくなってしまう原因となるわけです。

そこで開発者によってコードの書き方のキマリとして、**コーディング規約**というものが存在します。

## それっておいしいの?
コーディング規約を守ることで、コードの保守性や品質を高めることができると言われています。
ちなみにコードの保守性とは、主に以下のようなことかなと思います。
– 誰でも理解しやすい
– バグを発見

元記事を表示

Pythonでエラー:error: (-5:Bad argument) in function ‘inRange’

# 前提
Pythonで画像編集処理を行っていた際にぶつかったエラーになります。非常に初歩的なものですが少し悩んでしまったので自分用に投稿。

エラー内容は下記。

“`:python
OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function ‘inRange’
> Overload resolution failed:
> – src is not a numpy array, neither a scalar
> – Expected Ptr for argument ‘src’
“`

# 実現したいこと

`cv2`モジュールの`inRange`メソッドを用いて、読み込んだ画像を色で閾値を設けて処理したい。コードがこれ。

“`python:
# 抽出関数を定義
def ext(img_bw_func, bgrt_obj_func) :
# 0以下、255以上の値が出ないように処理
minbgr = []
maxbgr = []
for i in range(0

元記事を表示

paizaラーニング「任意の数で何回割れる? Python3編」

https://paiza.jp/works/mondai/loop_problems2/loop_problems2__div_m
私の回答
“`Python
N,M = map(int,input().split())

div_count = 0
while True:
if N % M == 0:
N //= M
div_count += 1
else:
break

print(div_count)
“`
模範解答
“`Python
N, M = map(int, input().split())

div_count = 0
while True:
if N % M == 0:
N //= M
div_count += 1
else:
break

print(div_count)
“`
2で何回割れるの模範解答を基に、今回の回答を作ったので、ほぼ同じ回答になりました。

元記事を表示

paizaラーニング「2 で何回割れる? Python3編」

https://paiza.jp/works/mondai/loop_problems2/loop_problems2__div_two
私の回答
“`Python
n = int(input())
ans = 0
while n % 2 == 0:
n = n / 2
ans += 1
print(ans)
“`
模範解答
“`Python
N = int(input())

div_count = 0
while True:
if N % 2 == 0:
N //= 2
div_count += 1
else:
break

print(div_count)
“`
模範解答はwhileの中でTrueとかbreakを使っていました。

元記事を表示

paizaラーニング「カウント変数を使った計算 Python3編」

https://paiza.jp/works/mondai/loop_problems2/loop_problems2__index_multi
私の回答
“`Python
n = int(input())
number = [int(x) for x in input().split()]
for i in range(n):
print(number[i] * (i + 1))
“`
模範解答
“`
N = int(input())
M = list(map(int, input().split()))

for i in range(N):
print(M[i] * (i + 1))
“`
割と近い回答でした。

元記事を表示

paizaラーニング「各桁の和 Python3編」

https://paiza.jp/works/mondai/loop_problems2/loop_problems2__digit_sum
私の回答
“`Python
n = input()
ans = 0
for i in range(len(n)):
ans += int(n[i])
print(ans)
“`
模範解答
“`Python
N = int(input())

digit_sum = 0
while N > 0:
digit_sum += N % 10
N //= 10

print(digit_sum)
“`
全く違う書き方でした。

元記事を表示

[Django]データ作成・保存時に処理させるSignalを使う[django.dispatch.receiver]

# django.dispatch.receiver()の使い方
特定のテーブルのデータが変更されたらログ出したい時とかありますね。
簡単な例としては、商品情報を変更した場合のみログを出したいとか。
そんな時に使えるのがsignal!

https://docs.djangoproject.com/en/4.1/_modules/django/dispatch/dispatcher/

>Django includes a “signal dispatcher” which helps decoupled applications get notified when actions occur elsewhere in the framework. In a nutshell, signals allow certain senders to notify a set of receivers that some action has taken place. They’re especially useful when many pieces of code may be inter

元記事を表示

VSCodeからPythonソースを対話的に実行

Jupyter Notebookでも利用しているiPythonを用いて、生のPythonソース上でも対話的に実行する機能が提供されています。

# 準備
– VScodeに拡張機能「Python」をインストール

# 実行
Pythonのサンプルソース
“`python
#%%
# セル1
print(“output 1”)

#%%
# セル2
print(“output 2”)
“`

上記ソースでは、2つのprint文それぞれの直上で、「#%%」を記述しています。
Python Interactiveでは、「#%%」の間が、Jupyter notebookでのセルにあたります。
このソースをVSCode上に入力しているとき、次のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586693/97239999-edd6-dd84-5875-5a113d31796e.png)

「#%%」の上に「セルの実行」「以下を実行」「[デバッグ]セルに移動」「[1]に移動

元記事を表示

PythonでC言語の解析

# 概要
C言語をコンパイルするとき、人が記述したCソースは抽象構文木と呼ばれる中間的な表現に変換され、バイナリ形式になります。
今回は、そのC言語ソースを抽象構文木として解析できるPythonプログラムを使って遊んでみました。

# 準備
## LLVMのインストール
https://github.com/llvm/llvm-project/releases

この中の最新のバージョンを選択しましょう。
Windows版はAssetsの中に一見ないかもしれないですが、「LLVM 15.0.5」(執筆時点)でをクリックすれば、windows版のインストーラもダウンロードできます。
インストールするときに環境変数の設定をインストーラの方でやってくれるオプションを選択すれば楽です。

## Python用のパッケージをインストール
パッケージをインストールしたい環境を開き、以下コマンドを実行します。
“`
pip install libclang
“`
libclangの詳しい情報は[こちら](https://pypi.org/project/libclang/)

# Python

元記事を表示

M5stackでランダムに画像を表示させてみた。

M5stack core2のディスプレイに複数の画像をランダムに表示させてみました。

## 環境
OS: windows 10.0
M5stack core2

## 方法
M5stack core2のSDカードに保存している画像の枚数を取得します。そこからランダム関数を使って出てきた値から画像を選択し、一定時間間隔で読み出します。画像の切り替えは、RTCの秒数を使い、一定時間経過後、画像の変更を行うようにします。

## 画像のリサイズ
M5stackのディスプレイは、320✖️240なのでそこに収まるように画像をリサイズします。画像のリサイズには、pythonを用いました。pythonを実行するファイルのディレクトリに加工したい画像データをinputファイル内に入れ、リサイズした結果は、outputに入れるようにしました。

“`test.py
from PIL import Image
import os

def resize(img_file):
img = Image.open(img_file)
img_x = img.width
img_y

元記事を表示

定義メソッドのヒントを記述

#
VSCodeでPythonコードを書くとき、使ったことのなく機能がわからないクラスやメソッドにカーソルを当てると、ざっくりとして説明が出てウェブ上のドキュメントを見に行く必要がないですよね。
自作クラスのメソッドでも、そういったヒント的な表示を出すように記述することができます。
記法は基本的にMarkdownと同じです。

## サンプルコード
“`python
class Class1:
“””
# 見出し1
## 見出し2
### 見出し3

# 箇条書き
– リスト1
– 子リスト1
– 孫リスト1
+ リスト2
* リスト3

# 水平線

# code記法
`コード記法はこんな感じ`

# リンク
[python documentation](https://docs.pyth

元記事を表示

40代おっさん面会予約アプリを作ってみる⑤

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 前回の記事




## 面会室予約画面の予約一覧表示

“`python
import streamlit as st
import datetime # 時刻を扱うため
import requests
import json
import pandas as pd

# サイドバーを作って各ページを用意
page = st.sidebar.selec

元記事を表示

アルファベット+数字+記号をsha3-512でハッシュ化してみた

## はじめに
CTFでsha3のハッシュ値を求める問題がありハッシュ値を探していましたが、Webツールで1文字ずつハッシュ化していくのも面倒だったので、リファレンスとして自分で作成することにしました。

## ハッシュ値
| 値 |    ハッシュ値                                                                                   

元記事を表示

複数 List 作成時 for 一回 append より、内包表記で複数 for のほうが速いんだ

# はじめに

ちわ

久々に Python を触って、ほえ~そっちが早いんだ、となったので久々に記事に

# 環境

[Paiza.io](https://paiza.io/ja/projects/new) の Python3 で確認

# やりたいこと

以下のクラスのリストがあったとして、インスタンス変数ごと(a, b) ごとのリストを作成したい
クラスの数はとりあえず 1 万で

“`python
from random import random

class Klass:
def __init__(self):
self.a = random()
self.b = random()

klasses = [Klass() for _ in range(10_000)]

# a_list => [klasses[0].a, klasses[1].a, klasses[2].a, …]
# b_list => [klasses[0].b, klasses[1].b, klasses[2].b, …]

元記事を表示

paizaラーニング 例外処理のタブーサーチ 【備忘録】

自分用メモです。
問題:例外処理のタブーサーチ (paizaランク B 相当)
https://paiza.jp/works/mondai/steinsgate/restore_command_boss

最初に書いたコード
“`python:firsttry.py
n, m, l = map(int, input().split())
d = [[int(x) for x in input().split()] for y in range(n)]
p = [[int(x) for x in input().split()] for y in range(l)]

dif = []
for i in range(l-1):
difl = []
for j in range(m):
difl.append(p[i+1][j]-p[i][j])
dif.append(difl)

for difi in dif:
for i, di in enumerate(d):
if difi == di:

元記事を表示

【Python】Pythonの主な組み込み関数31個について、全て例を交えて解説する

# 始めに

[こちら](https://www.amazon.co.jp/Python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80-%EF%BD%9E%E3%83%8E%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%AE%9F%E5%8B%99%E5%8A%B9%E7%8E%87%E5%8C%96%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-%E9%AB%98%E6%A9%8B-%E5%AE%A3%E6%88%90-ebook/dp/B09B6YFVZ4)の参考書でPythonを勉強しています。
Chapter6第2部に組み込み関数が大量に紹介されていたので、触ってみるついでに紹介していきます!

# 紹介!

ではどうぞ!
マイルールで見出しレベル

元記事を表示

MetPyの単位変換 その2

# はじめに
[前回](https://qiita.com/kasugab3621/items/69c66fae3623d7f081ba),MetPyでは計算中の単位変換を”よろしく”やってくれる,と説明したが,正しくは,
「足し算」はよろしくやってくれるみたいだが
「掛け算」は注意が必要
なようなので,簡単にまとめる

# metpy.constants
気体定数をデモ的に利用する.ありがたいことに,MetPyには気象にまつわる定数が用意されている.

“`python3
from metpy.units import units
import metpy.constants as mC # mCは個人的なネーミングです

Rd = mC.dry_air_gas_constant # 乾燥空気の気体定数
Rv = mC.water_gas_constant # 水蒸気の気体定数
“`

Rd,Rvどちらも同じ単位と思いきや,
“`python3
Rd
287.04749097718457

Rv
0

元記事を表示

OTHERカテゴリの最新記事