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

Python3関連のことを調べてみた2022年03月18日
目次

銀河麻雀の待ちを調べるプログラムを作った

麻雀YouTuberの麻雀カッコイイシリーズが投稿していた「銀河麻雀」。

(ルール説明は13:40くらいから)
簡単に言えば、各種類の牌に1枚ずつ「ギャラクシー牌(銀河牌)」と呼ばれる牌種が自由になる牌が入った状態での麻雀だ。
例えば、銀河1mは1p,1sとしても扱える。
銀河東は東南西北、銀河白は發中としても扱える。

銀河牌がたくさん入ると、受け入れや待ちの数が通常よりも多くなる。
銀河牌が沢山入った順子が並べば、とても人間の頭では処理しきれない、まさに銀河が広がるよう

元記事を表示

ABC 064 A – RGB CardsをPython3で解く

# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードが未熟です。

# [ABC 064 A – RGB Cards](https://atcoder.jp/contests/abc064/tasks/abc064_a)

**【問題文】**
AtCoDeer君は、赤、緑、青色のカードを持っています。
それぞれのカードには 1 以上 9 以下の整数が書かれており、赤色のカードには r、緑色のカードには g、青色のカードには b が書かれています。
3 つのカードを左から順に赤、緑、青色の順に並べ、左から整数を読んだときにこれが 4 の倍数であるか判定しなさい。

**【制約】**
1≤r,g,b≤9

**【入力】**
入力

元記事を表示

Homebrewは手で直せる ファイラーRangerの濁点問題の修正

この記事の環境はMacOS Montereyです。

Homebrewにある[Ranger](https://formulae.brew.sh/formula/ranger#default “Ranger”)というファイラーのソフトを使っていた時、
濁点が正しく表示されない、修正できないという問題がありました。

![ranger_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/939698/9a527d3e-ddd9-ccec-21f2-58dc1a42c928.png)
名称未設定フォル「タ」になってる…

調べた所、MacではUTF-8にはNFD(Normalization Form Canonical Decompression)
というのが一部で使われていて、それを使用するプログラム(この場合だとpython3)を留意無く使用すると
このように濁点、半濁点が抜けたり、別で(コンヒ゜ュータみいたいに)表示されたりするそうです。

https://rcmdnk.com/blog/2019/11

元記事を表示

Docker備忘録 「Python実行環境の作成」

# はじめに
* 何となくで使っていたDockerについて技術の再現性を高めるためにもまとめておく

# Dockerあれこれ
## 概要
* コンテナ型仮想環境を作成・実行・管理するためのプラットフォーム
* Dockerのソフトウェア自体はGo言語で書かれている

:::note info
メモ「Go言語とは」
Go言語はGoogleが開発しているオープンソースのプログラミング言語
標準パッケージが豊富・省略ができないものがありプログラマーの記述差異を減らせる
:::

## コンテナ型仮想環境の構成イメージ
* 以下であった資料を参考に作成
 https://www.udemy.com/course/docker-k/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2479387/d05ea649-91b8-32f3-4359-1d0e4bc9ae77.png)

## Dockerの実行イメージ
![image.png](https://qiita-image-store.s3

元記事を表示

Python 単一スレッド内で複数のスレッドを立ち上げてイベント制御したいときに読む (15秒で読めます)

“`python
from threading import Thread, Event
import time
import random

class MyEvent():
th1 = Event()
th2 = Event()

def task1(event: MyEvent):
while True:
event.th1.wait()
print(‘th1 run.’)
event.th1.clear()

def task2(event: MyEvent):
while True:
event.th2.wait()
print(‘th2 run.’)
event.th2.clear()

# manage_thがth1とth2を立ち上げる
def manage_th(event: MyEvent):
task_list = [task1, task2]
for task in task_list:
th

元記事を表示

【Python3】ドラッグ&ドロップしたファイルにタイムスタンプをつけてリネームする

# 概要

https://qiita.com/MakotoIshikawa/items/a9e31bc6f13ac203f98d

PowerShell の .ps1 ファイルには、直接ファイルをドラッグ&ドロップできないので、ソースファイルとは別にショートカットを作成しなければなりませんでした。
ファイルだけで出来るように Python を使ってやってみました。

## 準備

まず、Python をインストールしておきます。

https://www.python.org/downloads/

## 手順

以下のファイルを作成します。

“`python:Add-TimeStamp.py
import sys
import datetime
import pathlib
import os

daystr = datetime.date.today().strftime(‘%Y-%m-%d’)
paths = sys.argv[1:]

for path in paths:
file = pathlib.PurePath(path)
new_file_pat

元記事を表示

Python3 List型の内容をsort uniqしたい

List型の内容をsort uniqしたい場合は、listをsetしてsortedすると実現できる。

list = sorted(set(list))

サンプルコード
“`py
# サンプルListを作成
company_list = [‘”テスト3株式会社”‘, ‘”テスト3株式会社”‘, ‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]

# 中身確認
print(company_list)
[‘”テスト3株式会社”‘, ‘”テスト3株式会社”‘, ‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]

# Listのsort uniqをする
company_list = sorted(set(company_list))

# 重複が削除されsortされた
print(company_list)
[‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]
“`

元記事を表示

超初心者がAtcoder ProblemsのC問題を181回から190回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

181 Collinearity

https://atcoder.jp/contests/abc181/tasks/abc181_c

“`python:practice.py
n = int(input())
points = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
for j in range(i+1,n):
for k in range(j+1,n):
x1,y1 = points[i]
x2,y2 = points[j]
x3,y3 = points[k]
if (y3-y1)*(x2-x1) == (y2-y1)*(x3-x1):
print(“Yes”)

元記事を表示

Python: Windows10 WSL Ubuntu20.04に、apt-getで入ってくれないPython3.10.xをインストール

なにはともあれ↓をしましょう

“`bash
$ sudo apt-get upgrade
$ sudo apt-get update
“`

ではPython3の最新バージョン3.10.3をインストールしましょう。
わたしの場合はすでにPython3.Xは入っていたので、upgrade で実行してみます。

“`bash
$ sudo apt-get upgrade python3

Reading package lists… Done
Building dependency tree
Reading state information… Done
python3 is already the newest version (3.8.2-0ubuntu2).
Calculating upgrade… Done
The following packages have been kept back:
fwupd libfwupd2 libfwupdplugin1 libgl1-mesa-dri libglapi-mesa libglx-mesa0 mesa-v

元記事を表示

きれいなPythonプログラミング(パイソニックなコードを書こう)を読んでみた

# はじめに

日頃、Pythonを使う機会があるのですが、「もう一歩詳しくなり、中級者を目指したい!」という思いから、2022/2/15に発売された書籍「[きれいなPythonプログラミング ~クリーンなコードを書くための最適な方法](https://www.amazon.co.jp/%E3%81%8D%E3%82%8C%E3%81%84%E3%81%AAPython%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E9%81%A9%E3%81%AA%E6%96%B9%E6%B3%95-Al-Sweigart/dp/4839977402)」を読みました。

特に、第6章にある「**パイソニックなコードを書こう**」が非常に勉強になったので自

元記事を表示

[Python]機械学習を用いてはんだクラック判別するアプリを作成する!

はじめに

はじめまして。エンジニア転職を目指して日々プログラミング学習をしています回路設計エンジニアです。
初めて作成したアプリを学習のアウトプットとして投稿します。Qita初投稿、初学者なので至らぬ点があると思いますが、暖かくコメントやご指摘をいただけると幸いです。

目的

はじめてアプリを作成するにあたり何をしたいのか考えたときに現職の業務に機械学習を活かせないかと思いました。
そこで「人(評価者)によって判断に差がある業務」、「学習用のデータが多数保存されている」2点を軸に考え、その結果、基板のはんだクラックの有無を判別するアプリを作成し、人(評価者)に判断に左右されず平等な判別を実現する。

はんだクラックとは?

普段使用しているあらゆる電気製品の内部にある基板は、はんだという金属で基板と電子部品が接合されています。
その基板と部品を接合しているはんだにクラック(ひび)が発生することをはんだクラックと呼んでいます。
製造時にはんだにクラック(ひび)が発生している状

元記事を表示

そのsupervisord.serviceファイルちゃんと動きますか?

## supervisord.serviceファイルとは

supervisorをsystemctlコマンド動くように登録するための設定ファイルです。
以下のディレクトリに**supervisord.service**ファイルを用意します。

“`bash
/etc/systemd/system/
“`

## 先人の知恵

これまで多くの方が、このファイルの作成方法を指南してくださっています。

Amazon Linux 2にSupervisorを設定する

https://nyan.blog/2021/05/21/laravel7-xsupervisor%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%EF%BC%81/

https://blog.shinki.net/posts/amazon-ilnux-2-supervisor

設定ファイルの中身は大体以下のような感じです。

“`shell:supervisord.servi

元記事を表示

Python 入門1 (算術演算子, ブーリアン, 関数, etc.)

# はじめに

このシリーズは、プログラミング経験やアルゴリズムとデータ構造などの一定の知識がある方に向けて、Pythonの基礎について解説することを目的としています。

一つの記事あたり大体15分程度で読み終われるように文章量を調整しています。

また、この記事で取り扱う内容はPython 3を前提としています。

# 目次

– Pythonとは
– 算術型と算術演算子
– ブーリアン型と論理演算子
– リスト
– リスト内包表記
– 関数の宣言
– 参考文献

# Pythonとは
Pythonは、動的型付けを特徴とするマルチパラダイム言語です。

Pythonを用いるメリットの一つとして、疑似コードと見間違えられるような洗練されたシンプルな文法が挙げられます。

他のプログラミング言語では冗長で複雑になってしまうような場合でも、可読性を失わず簡潔なコードを記述できることは、多くのプログラマーにとって魅力的に映ることでしょう。

# 算術型と算術演算子

#### 整数型の宣言

“`int.py
x = 3
x += 2 # 複合代入演算子
print(x, type(x

元記事を表示

超初心者がAtcoder ProblemsのC問題を171回から180回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

171 One Quadrillion and One Dalmatians

https://atcoder.jp/contests/abc171/tasks/abc171_c

“`python:practice.py
n = int(input())
ans = “”
while (n > 0):
n-=1
temp = 97 + (n % 26)
ans += chr(temp)
n //= 26
print(ans[::-1])
“`

桁数はwhile文で決めていきます。26で割れる回数が桁数になる感じです。while文の中で1を引いているのはunicodeの97番が”a”になるので引かないと入力が1の時にbを出力してしまうからです。じゃあ、tempで足す値を96にしても動くんじゃねってなると思い試してみましたがzを出力するときに26%26=0によりユニコード番号96番の

元記事を表示

【python】wiktionaryの`{{}}`マークアップの整形

# 概要
wiktionaryの記事テキストのうち`{{}}`で囲まれたマークアップ(テンプレート)を整形(実際の記事で書かれた文字列へ変換)しました。

[【python】wiktionaryの見出しのうち日本語、名詞に関するものを抽出する](https://qiita.com/shimajiroxyz/items/0461de8be1ee0ca7dbab)の続きです。このページで作ったファイルから「日本語」の「名詞」に関する情報を抽出するため、該当するテンプレートの調査をしました。

なおテンプレートはユーザが自由に作ることが可能で非常に多くの種類があるため、対象をしぼっています。今回は、前述のページで抽出した日本語の名詞の語義に関する部分のテンプレートを対象としました。

# 背景
[【python】wiktionaryから語義情報を抽出する](https://qiita.com/shimajiroxyz/items/f75b4f7717643d3fbcf0)にて、wiktionaryの語義情報のうち、日本語の名詞に関するものを抽出しました。次のステップとして、マークアップを除去

元記事を表示

[FastAPI]複数ファイルをrequests.post()で渡す

FastAPIに外部のスクリプトファイルからFastAPIにrequests.post()で複数ファイルを渡す際につまづいたのでメモをここに残します。

“`python:uploadFile.py
from typing import List

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.post(“/uploadfiles/”)
async def create_upload_files(params:dict,fileList: List[UploadFile]):
return hogehoge(params, files)
“`

requests.post()で複数ファイルを渡したい場合は下記のようにすることで出来ました。
※dictのキーがエンドポイントのfileList(今回はこの名前にしました)という名前と一致していないとFastAPI側で受け取ることが出来ないので注意が

元記事を表示

pycord async on_command_error() で起きる主なエラー

# async on_command_error() とは

コマンド形式 (プレフィクス式コマンド) で起きたエラーをキャッチする関数です。
引数は `context`, `error` の2つです。

“`python
@bot.event
async def on_command_error(ctx: commands.Context, error):
:
:
“`

# 基本的な対処法
あくまで自分の考えですのでこの通りにしろ、というわけではありません。

1. この関数内で isinstance(error, `エラー名`)で指定して拾う
2. `@コマンド名.error` で拾う。

ただし、いちいち 2 を書くのがめんどくさい、2 では拾いきれないエラーが生じることもある。という点で この関数を使用することをお勧めします。

# 主なエラーと説明
用語:
ユーザー … 実行者 (人間側)
クライアント … Bot
エラー … クライアントがプログラムを実行した際、実行に失敗した時に起こる

## [commands.CommandNotFo

元記事を表示

numpyのexp, log等はtorchで高速化できる

numpyのexp, log等を使用していましたが,かなりの回数繰り返し呼び出しをする必要があり無視できないほど時間がかかったのでその際に発見した知見に関して書きます.

結論から言うとtorchから呼び出してnumpyに戻すという方法が比較的きれいなコードを保ちつつ高速に実行できます.

# 試した方法

## numexpr
1つ目の方法はnumexprを利用する方法です.
numexprではevaluate関数を用いてnumpyを実行することによって(なぜか)高速化できるものとなっています.
ただし,scipyには対応していません.
この方法はCPU上の動作としては最速ですが,evaluateを利用する必要があるため,flake8のignoreを利用する必要性やerror messageがわかりづらくなってしまうなどの問題点があります.

## torch
2つ目の方法はtorchを利用する方法です.
torch側からはnumpyを受け付けていないこと,torch.Tensorが少し特殊なことからinput, output時にそれぞれ変換が必要になります.
**後述の実験からもわ

元記事を表示

VSCodeでPython外部モジュールの予測入力させたかった。

##### あらすじ
ご無沙汰しております。じーくです。

PythonのWebスクレイピングの本を読んでいたら、
外部モジュール(tesseract)を使用して実行するコードがあったので、
いつも通り環境にインストールしてコーディング……しようとしたら何やら異変……

**importしたモジュールの関数候補がコーディング中に出てこない……**
![denele.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377966/1ffd8b4b-3134-5d5f-b1f3-573366af0a71.png)
確かにインストールして、Powershell側でもコマンド入ってること確認したんだけどなぁ……
再インスコか……?再起動ですまなかったか……?

これは一大事。まあ一応開発はできるし実行できれば動くんだけど、
コーディング中には、ちゃんと書けているのかがわからない。
そして、Warningのにょろにょろが気持ち悪い……(個人の感想)
ああでもねぇこうでもねぇと一日中ネットの海を泳ぎまわり、
ようやく解

元記事を表示

kerasを使用して虹ヶ咲学園のキャラクターを画像認識させてみた

どうも、学生エンジニアのirohasです。
本日は、本職であるAiをテーマにしたプログラムを記事にします。

今回やったことは、タイトルの通り「アニメのキャラクターを用いてキャラクターの画像認識をやってみた」です。

今回使用させてもらったアニメはあのアニメオタクなら知らぬ人はいない伝説のスクールアイドルアニメである「ラブライブ!」シリーズ最新作の「虹ヶ咲学園スクールアイドル同好会」になります。

ちなみに余談ですが、僕は虹ヶ咲ではMiaちゃんが最推しです。

それでは早速書いていきます。

# 目次
[1.環境](#1-環境)
[2.使用ライブラリ](#2-使用ライブラリ)
[3.データセット作成・修正](#3-データセット作成・修正)
[4.モデル作成](#4-モデル作成)
[5.学習結果](#5-学習結果)
[6.画像認識](#6-画像認識)
[7.おわりに](#7-おわりに)

# 1. 環境
Anaconda3 (64bit)
Jupyter Notebook
Python 3.9.0

# 2. 使用ライブラリ
##### ・標準ライブラリ
os : ローカルフォルダ用

元記事を表示

OTHERカテゴリの最新記事