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

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

趣味で書いていっているPythonフロントエンドライブラリの1年の活動をまとめて振り返ってみる

プライベートの時間に趣味と勉強目的で書いていっているapyscというPythonのライトなフロントエンドライブラリの今年1年の活動を振り返りつつ記事にまとめてみます。
今年なにやったんだっけ・・・と個人的に振り返るためなので他の方には有益ではない面も多分に含みます。

# ライブラリの概要

先に軽くどんなライブラリなのかについて触れておきます。

GitHub:

https://github.com/simon-ritchie/apysc

今の所はSVGを中心としたフロントの記述がPythonのみで行える・・・というライブラリになります(D3.jsみたいな感じでグラフ関係などで色々自分で実装がいけるものを作ってみたいと思って作り始めています)。インターフェイスはPythonを参考にしたり古の時代に滅んだActionScript3という言語などを参考にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228778/d6b012a9-c7f2-1e8a-aece-b2ce7

元記事を表示

Python初学者が体感したPython 2系と3系の違い

## はじめに
本記事はProgaku Advent Calendar 2022 9日目担当です。
今まで個人開発でPython3系を触ってきましたが、
とってもレガシーなPython2系のシステムも触る機会ができてしまったので、
Python2系と3系の違いを備忘録としてまとめていきます。
(3系のコードの説明は省略しています。)

検証したpythonバージョンは以下です。
2系=2.7.18
3系=3.11.0

## 対象読者
python 3系の勉強して現場に入ったら、2系のシステムも触ることになった方(筆者を含む)

## Unicodeの文字列の扱い
Unicode(日本語などのマルチバイト文字)は、u’文字列’と記載しないと文字化けする。

## (3系)print関数→(2系)print文
python 2系ではprint関数はなく、print文として扱う。
また、複数のprintを実行して、結果を改行しない場合は、末尾にカンマを入れる。

“`python2:test.py
print u’2系です。’,
print u’2系です。’
“`
“`python2

元記事を表示

自動テストで品質を確保するために

## 自動テストと品質の確保と

自動テストをマメに書くようにしていますが、自動テストを全てpassしてもエラーが起こる時は起こりますよね
出典は忘れましたが、自動テストツールで行うテストは、テストではなくチェックリストの自動実行だと

この意見は一理あって、チェックリストに抜け漏れがあると、その分の品質は確保出来ない訳でして:sweat_drops:
ですが、有償でサービスを提供している側からすると気持ちよくそのサービスを使って欲しい訳でして、
どうすれば自動テストでより良い品質の確保が出きるのか考えてみました

## 自動テストでカバーできない点

これまで自動テストでは問題なかったけど、stagingやproduction環境に上げるとダメだったケースを考えてみると、
* 自動テストに抜け漏れがある
* 環境に依存する
この2つのケースが多かったように思われます

自動テストの抜け漏れがあるケースについては、何故抜け漏れが生じたかを考えてみると
* 時間がかかってテストサイクルに支障が出たのでコメントアウト等を行いそのままだった
* 自動テスト単体で完結しないため出来ない
* 純

元記事を表示

paizaラーニング「i番目の出力 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
K,L = map(int,input().split())
A = [[0] * 3 for _ in range(3)]
for i in range(3):
A[i] = list(map(int, input().split()))
print(A[K-1][L-1])
“`
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])

A = [[0] * 3 for _ in range(3)]
for i in range(3):
values = input().split()
for j in range(3):
A[i][j] = int(values[j])

print(A[K – 1][L – 1])
“`

元記事を表示

paizaラーニング「i番目の出力 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_i-thoutput_step1
#### 私の解答
“`Python3
K,L = map(int,input().split())
li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]
print(li[K-1][L-1])
“`
解答例とほぼ同じでした!!
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])

li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]

print(li[K – 1][L – 1])
“`

元記事を表示

paizaラーニング「二次元配列の入力 4 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
N,M = map(int,input().split())
A = [[0] * M for _ in range(N)]
for i in range(N):
A[i] = list(map(int, input().split()))
for i in range(N):
print(*A[i])
“`
@WolfMoon先生の解答例を参考にしました。
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [[0] * M for _ in range(N)]
for i in range(N):
values = input().split()
for j in range(M):
A[i][j] = int(va

元記事を表示

fortranを使わないマークリーダ開発の練習

“`haire.py

import numpy as np

#問題追加練習
#aa=1
#bb=2
#cc=3
#dd=4
#
#mon = []
#mon.append([aa,bb,cc,dd])
#print(mon)
#mon.append([aa,bb,cc,dd])
#print(mon)

results = []
student_1 = [[1,2,3,4],[1,2,3,4],[5,6,7,8],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_2 = [[1,2,3,4],[11,12,13,14],[15,16,17,18],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_3 = [[1,2,3,4],[21,22,23,24],[25,26,27,28],[0,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_4 = [[1,2,3,4],[31,32,33,

元記事を表示

【Python】標準出力の出力先をファイルにする。

# はじめに
僕はiOSのPythonista3というAppで、よく寝っ転がりながらPythonするのですが、モジュールのヘルプを見ても英語がわからないのでGoogle翻訳が欠かせません。
一度、調べたこともすぐに忘れてしまうので、原文と翻訳テキストを保存しておくことにしました。

モジュールをインポートして`help(モジュール)`と入力し、コンソールに出力されるテキストを「すべて選択」し、エディタに張り付けるという作業なのですが、文字数が大きいと選択に時間がかかり、時にはAppが落ちてしまいます。

僕は寝っ転がりながら「コンソールに出力されるテキストを直接ファイルに書き込めたらいいのになぁ。」と普通に思いました。

# 結論から

~~~python:Python3
import sys

STDOUT = sys.stdout

sys.stdout = open(‘./tmp.txt’, ‘w’)

help(sys)

sys.stdout = STDOUT
~~~
pythonの標準出力の出力先は`sys.stdout`になっていて、これを書き換えることで出力先を変更で

元記事を表示

Python で grep 機能を作ってみる

ディレクトリを再帰的に検索してテキストファイルを参照して文字列をサーチします。
### jupyterでやってみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/f6e32c31-930b-7dd6-3a06-1b2d46006179.png)

### ソース
“`search_txt.py
# -*- cording: cp932 -*-
from pathlib import Path
import re

def main():
search_pattern = r'[aA][bB][cC]’
target_path = “D:\\__work\\test\\”
out_file = “D:\\__work\\search_result.tsv”
ignore_suffix_list = [“gif”, “jpeg”]
search_txt(search_pattern, target_path, out_file, ign

元記事を表示

WSL上Pythonの環境構築&VSCodeの設定方法

## WSL上へのPythonの環境構築
Pythonのパッケージの状況を使い分けるためには、仮想環境としてPython環境を構築するのがおすすめ。

詳細は[こちら](https://learn.microsoft.com/ja-jp/windows/python/web-frameworks)

### Python3, pip, venvのインストール
– Python3。バージョン番号が表示されればOK。
“`
python3 –version
“`
– Pythonのパッケージ管理ツールpipのインストール
“`
sudo apt install python3-pip
“`
– Python仮想環境作成のためのツールvenvをインストール
“`
sudo apt install python3-venv
“`

### 仮想環境の作成とパッケージのインストール
– 仮想環境「test-env」を作成する
“`
python3 -m venv /home/ユーザ名/test-env/
“`

– 仮想環境「test-env」をActivateする
“`
s

元記事を表示

イテレータとイテラブルについて(備忘録)

## イテレータとは?
>イテレータとは、イテラブル(繰り返し可能)なオブジェクトから要素を取り出すオブジェクトのことです。
※イテラブル…for文を用いて、繰り返し処理ができるオブジェクトのこと。リストやタプルなどがあげられます。

## next関数とiter関数について
next関数は、next(イテレーター) のようにイテレータから要素を一つ取り出して消去することができる関数のこと。最後の要素を取り出し終わり、再度、関数を実行しようとするとstopIterationという例外が発生する。(繰り返し停止の意味)

iter関数とは、指定されたイテラブルに対するイテレーター(iterator)を返す関数のこと。
~~~python
>>> iterater = iter([3, 10, 7])
# インデックス0から順番に取り出していく
>>> next(iterater)
3
>>> next(iterater)
10
>>> next(iterater)
7
# エラーが発生する
>>> next(iterater)
Traceback (most recent call l

元記事を表示

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

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

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

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

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

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

# 目次
[はじめに](#はじめに)
[A.^{-1}](#a-1)
[B.Playing Cards Validation](#bplaying-cards-validation)
[C.Ladder Takaha

元記事を表示

paizaラーニング「二次元配列の入力 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step3
#### 私の解答
“`Python3
n = int(input())
for i in range(n):
values = input()
print(values)
“`
#### 解答例
“`Python3
N = int(input())

A = [[0] * 5 for _ in range(N)]
for i in range(N):
values = input().split()
for j in range(5):
A[i][j] = int(values[j])

for i in range(N):
for j in range(5):
print(A[i][j], end=””)

if j < 4: print(end=" ") else: pr

元記事を表示

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

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

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

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

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

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

# 目次
[はじめに](#はじめに)
[A.wwwvvvvvv](#awwwvvvvvv)
[B.LOOKUP](#blookup)
[C.RANDOM](#crandom)
[D.Freefall](#dfree

元記事を表示

「システム構築を納期までにまにあわせたいのですが、顧客幹部から仕様変更の依頼が来ています」をChatGPTにきいてみた

ChatGPTを試した結果を貼り付けます。参考まで。

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22985/b65659ff-b572-db5e-bed8-ade287e90b0f.png)

![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22985/abda6ea3-d327-5880-b754-3cd3e6fcc2dc.png)

![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22985/0ffee451-043e-6a26-c145-6f2567cf75b3.png)

![4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22985/40d8f311-028b-5d44-8c5d-ec344e04574b.png)

元記事を表示

paizaラーニング「二次元配列の入力 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step2
#### 私の解答
“`Python3
n = int(input())
for i in range(5):
values = input()
print(values)
“`
#### 解答例
“`Python3
M = int(input())

A = [[0] * M for _ in range(5)]
for i in range(5):
values = input().split()
for j in range(M):
A[i][j] = int(values[j])

for i in range(5):
for j in range(M):
print(A[i][j], end=””)

if j < M - 1: print(end=" ") else:

元記事を表示

WindowsのPythonとWSL2/UbuntuのPythonの速度差に驚いた

# はじめに
今回は、ごく些細な話です。
ちょっと意外だったので書いておきます。
# なんかUbuntuの方が速い気がした
僕のPython環境は。
・Windows11にAnaconda/Python3.8
・Windows11のWSL2にインストールしたUbuntu20.04のPython3.8
の2つあります。
どちらもVsCodeから参照して開発・実行できるようにしています。
僕の場合、Pythonはほぼ「自分用ツール作成」に使ってます。
なので、Windows用とUbuntu用をいったりきたりすることが多いですが、なんとなく、同じような処理やテストコードを書いているのに、Ubuntuのpythonの方がなんか速い気がしていました。
# 簡単なコードでベンチマークしてみた
感覚だけではモヤっとするので、以下のような簡単なコードで試してみることにしました。
“`
import time

def hoge(x, n):
for i in range(n):
x = 1 / (x * (x – 1)) + 4.6
return x

s

元記事を表示

python クロージャとスコープ(備忘録)

## コードを読んでみよう!

~~~python
def sort_exam(values, group):
def closure(x):
if x in group:
return (0, x)
return (1, x)
values.sort(key=closure)

numbers = [9, 3, 1, 5, 2, 10, 100, 0]
group = {3, 9, 2}
sort_exam(numbers, group)
print(numbers)

>>>
[2, 3, 9, 0, 1, 5, 10, 100]
~~~
このコードを見たとき、不思議に思った人もいるかもしれません(いないかもしれません)。
そもそも、なんで出力結果が、数字の大きさ順に並んでいないのでしょうか。インデクスが3以上の要素は、数字の大きさ順に並んでいます。group変数で定義されている集合の要素「3」「9」「2」がソート結果の左端(インデックスが3未満)に固まっています。このコードを読み解くために順番にポイントを見て

元記事を表示

InfluxDB v1.8: python3 でデータの挿入

次のページを参考にしました。
[データ投入処理](https://qiita.com/chroju/items/355f3c6da9f8c4867ba5#%E3%83%87%E3%83%BC%E3%82%BF%E6%8A%95%E5%85%A5%E5%87%A6%E7%90%86)

Ubuntu 22.10 でのライブラリーのインストール

“`bash
sudo apt install python3-influxdb
“`

## プログラム

“`py:influxdb_insert.py
#! /usr/bin/python
#
# influxdb_insert.py
#
# Dec/07/2022
# ——————————————————————
import sys
import time
from influxdb import InfluxDBClient

# —————————————————

元記事を表示

Python書けなくてもPokeConで自動化 pokecon-extensions.simplifier紹介

# はじめに

「PokeConはPythonを書けないとプログラムを作成できないので敷居が高い」みたいな話を見かけたので、私の虎の子[pokecon-extensions](https://github.com/mukai1011/pokecon-extensions)から、Pythonを書けなくてもPokeCon自動化プログラムを作成できるライブラリ`simplifier`を紹介します。

比較的導入の難易度が高いです。正しくインストールできるならPython書けるでしょってかんじ(???)

# 導入

**Poke-Controller MODIDIEDと同じPython環境**に、`pip install`します。ろっこくさんのバッチファイルで導入したなら、`git`コマンドを使えたはずです。たしか環境はグローバルのPython 3.7だったはず。

“`powershell
cd Poke-Controller-Modified\SerialController\Commands\PythonCommands\
git clone https://github.com/m

元記事を表示

OTHERカテゴリの最新記事