- 1. 40代おっさんPythonを勉強する(データ構造と組み込み関数)
- 2. 40代おっさんPythonを勉強する(制御フロー編②)
- 3. 40代おっさんPythonを勉強する(制御フロー編)
- 4. 40代おっさんPythonを勉強する(入力、出力編)
- 5. 40代おっさんPythonを勉強する②
- 6. 【スマートスピーカー】家電操作命令の構文解析【Python】
- 7. protobufのbuilder.pyが見つからなかった
- 8. pythonライブラリのversion管理(not best practice)
- 9. 40代おっさんPythonを勉強する。
- 10. 神エクセルをHTMLに!Python編 その2
- 11. pythonのモジュールを実行するときのコマンド
- 12. [OCR]情景文字認識(Scene Text Detection) pythonライブラリー
- 13. 【Python】マイグレーションツールAlembicを触ってみる
- 14. コマンドプロンプトで実行するPythonスクリプトにおけるANSIカラーの出力
- 15. Gradioとは? Pythonで機械学習Webアプリケーションをサクッと作ろう!
- 16. TelloConsole ビギナーガイド:Python の環境構築
- 17. TelloConsole ビギナーガイド:サンプルコードの実行
- 18. 【解決法】ModuleNotFoundError: No module named ‘chromedriver_binary’
- 19. ブロックチェーンを実装してみた & 改ざんを試みた
- 20. AtCoderでよく使いそうな関数メモ
40代おっさんPythonを勉強する(データ構造と組み込み関数)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## データ構造と組み込み関数
### strの関数format
– format関数の基本的な構造:’文字列{}’.format(引数)
– 引数の場所を指定しないとき順番で代入するが、場所指定があれば、指定した順番で代入する
– 文字列に変数の値を埋め込む
– 変数がリストやタプル、シーケンス型の場合は、{0[0]}を使って何番目かの要素を指定できる
– {0[0]}であれば、0番目の引数の0番目の要素を表す“`python
fruit1 = (‘みかん’, 80)
fruit2 = (‘バナナ’, 50)
fruit3 = (‘リンゴ’, 100)
str3 = ‘{0[0]}一つ{0[1]}円と{1[0]}一つ{1[1]}円、合わせて{2}円。’total1 = str3.format(fruit2, fruit1, fruit2[1]+ fruit1[1])
prin
40代おっさんPythonを勉強する(制御フロー編②)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 制御フロー
前回の記事
### 繰り返し(反復処理)
#### while
– 一定の条件がTrueになっている間にコードのブロックを実行する
– 条件がTrueのままだと無限ループする“`python
i = 0
while i < 10: print(i) i += 1 ``` #### for - forループの場合はenumerableのオブジェクトの要素を反復的に処理する - ループの変数に要素を代入し、繰り返しブロックを実行する ```python collection = [1, 2, 3, 4, 5] for i in collection: print(i) address = [('としき','札幌市'
40代おっさんPythonを勉強する(制御フロー編)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 制御フロー
### 条件分岐
– 条件によって分岐のコードを実行する(if-elif-else)
– ブロックは必ずインデントする
– 条件はTrue(真)かFalse(偽)を返す表現を使う
– 条件の後ろにコロン(;)をつける“`python
a = 10
print(a > 0) # True
a = -10
print(a > 0) # Falseif a > 0:
print(‘positive’)
else:
print(‘negative’) # negative
“`*Pythonではインデントで実行ブロックを決定するから、バラバラなインデントは不可
“`python
a = 1
if a > 0:
print(‘成功’)
print(‘失敗’) # インデントがばらばらの為エラーがでる
else:
pr
40代おっさんPythonを勉強する(入力、出力編)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 出力と入力
### print()関数
– 変数や出力などを確認するのによく使う
– Pythonの特徴:複数の変数を一行で値を代入できる
– formatを使って、変数の値を文字列に代入する。引数の順序を指定して変数の代入場所を決める。“`python
a, b = 3, 5
print(‘{1} + {0} = {2}’.format(a, b, a + b)) # {}の中がformatの順番を表す
“`## input()関数
– ユーザーから入力を求めたい時はinpnt()をいう関数を使う
– 変数 = input(‘文字列’)のところで、入力ができるようになる
– 入力文を入れてEnterを押すと、入力文が変数に代入される
– Python3から全ての入力は文字列として返される“`python
name = input(“あなたは誰が好きですか?”)
40代おっさんPythonを勉強する②
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 基本の演算
### 数値演算
– 演算子(加算 +,減算 -,乗算 *,除算 /,余剰 %,指数 **)
– Python3から // で整数を返す– 演算子(+=, -=, *=, /=)
“`python
# 下記は等しい
a = a + 1
a += 1b = b * 5
b *= 5
“`### 文字列演算
– 文字列の連結、繰り返す
“`python
a = ‘利樹’
b = ‘大好き’
c = a + b
print(c)
d = c * 3
print(d)
“`– シングルクォートがダブルクォートで文字列を囲んで作っても良い
– シングルクォートで文字列を作る時に、ダブルクォートを入れても、逆でもできる
– 3つのクォートで改行ができる“`python
texts = ”’
利樹は大好きなんだよな~
だって利樹なんだもん
”
【スマートスピーカー】家電操作命令の構文解析【Python】
# 概要
スマートスピーカーへの実装を想定した家電操作命令の構文解析器をつくりました。
特に「リビングのエアコンと電気を消して」などのような複数の家電をまとめて操作する命令を解釈することを目指しました。
# 背景
スマートスピーカを使っていると複数の家電をまとめて操作したくなることがあります。複数の家電をまとめて操作するための機能として定形アクションがありますが、事前登録が必要なため、急な需要には対応できません。定形アクションが登録されていない場合には「リビングのエアコン消して」「リビングの電気を消して」などと家電ごとに順に操作を実行させる必要があり、時間がかかります。もし「リビングのエアコンと電気を消して」などのように一文でスマートスピーカに認識させることができれば、時間の節約になります。そこで、本記事では構文解析によって**複数家電を同時に操作するための命令を解釈**するプログラムを作ることを目指します。
# テストケースの作成
家電操作命令が「部屋」「機器」「操作」および「助詞」からなる系列であるという前提で、スマートスピーカに言いそうな命令を列挙しました。“`Python
protobufのbuilder.pyが見つからなかった
# 動作確認環境
macOS Monterey (12.2)
MacBook Air(M1、2020)
チップ: Apple M1
Python: 3.9.13
conda version: 4.14.0
protobuf: 3.19.4
mediapipe-silicon: 0.8.11# はじめに
M1macbookでmediapipeを入れて動かそうとしたところ、以下のエラー。“`
import mediapipe as mp
File “~/miniforge3/envs/grad/lib/python3.9/site-packages/mediapipe/__init__.py”, line 17, in
import mediapipe.python.solutions as solutions
File “~/miniforge3/envs/grad/lib/python3.9/site-packages/mediapipe/python/solutions/__init__.py”, line 17, in
pythonライブラリのversion管理(not best practice)
pythonのライブラリを個人で作成していて、バージョン管理方法に悩みました。
解決したい課題は
・setup.py中のversionと__version__.pyのversionが二重管理になること
・出来れば、ビルドするごとに自動でバージョンが挙がってほしい
の2点です。## 検討した方法
ベストプラクティクスとは思いませんが、以下の様な形式にしました。
黒魔術感はありますが、出来るだけ自然な形にしたつもり①setup.cfgファイルで__version__.pyを参照する
②__version__.pyのヴァージョンをビルドごとに+1する__version__.py
“`
__version__ = “0.1.5”
“`setup.cfg
“`
[metadata]
version = attr: library.__version__.__version__
“`setup.py
“`
from setuptools import setup
setup()
“`update_build.py
“`
import li
40代おっさんPythonを勉強する。
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## Pythonの基礎
– Pythonのすべて(基本のデータ型、大きなデータ構造、関数、プログラムなど)がオブジェクトとして実装されている。
– 一貫性かつ便利な機能
– 変数に値やデータを代入できる(変数とはコンピューターのメモリの中にある値を指す名前)
– 変数名(識別子という)
変数名は
– 数字は変数名の先頭で使えない
– アンダースコアが先頭になっている変数名は特別扱いする
– クラス内の変数やメソッド:慣例的な意味合い
– 関数:システム的な制約を受ける場合がある
– 予約語は関数名として使えない予約語の確認
“`python
import keyword
keyword.kwlist
“`## 基本的なデータ型
– 整数型(int)
– 不動小数点数型(float)
– 文字列型(Str)Python
神エクセルをHTMLに!Python編 その2
# はじめに
神エクセルとか、ネ申エクセルとか、方眼紙エクセルとか呼ばれる評判の悪い奴がありますよね。本記事は、そいつをHTML形式のフォームにするシリーズ2回目です。pythonのopenpyxlを使用します。
[前回の記事](https://qiita.com/yoho/items/571902c129cce9d12e62)はこちらです。
## 今回
前回は、エクセルの行と列の幅を取り出すのに、結構ハマったので記事にしたのですが、その後はまりどころはほとんどなく、完成してしまいました。pythonはそんなに得意というわけでもないので解説記事にするのは躊躇します。どうしようかと考えていましたが、面倒になったので解説なし!でコードを貼り付けておきます。
もし、これはもっと短く書ける!などご指摘がありましたらよろしくお願いいたします。
### 対応したもの
何もかもにも対応という訳にはいかず、対応したのは以下のみです。| エクセル中の表現 | 対応状況 |
|:-:|:-:|
|セルの結合状態| 対応 |
|セルの枠線|hair、thin、medium、thickの
pythonのモジュールを実行するときのコマンド
# バージョン
Python 3.10.5# 結論
import ファイル名# 具体例
例)test.py
import test# 補足
モジュール:○○○.pyという、1つのファイルにまとまった機能の集まりのこと。
[OCR]情景文字認識(Scene Text Detection) pythonライブラリー
## 概要
今回はあるSTD(scene text detection)ライブラリーを使う感想を記録したいんです。
[github](https://github.com/breezedeus/cnstd)
>CnSTD 是 Python 3 下的场景文字检测(Scene Text Detection,简称STD)工具包,支持中文、英文等语言的文字检测,自带了多个训练好的检测模型
`CnSTD`ライブラリーの実行環境は`Python 3`で、中国語、英語など言語も文字認識もできます。中身は学習済の`machine learning`モデルも含まれています。
## インストール
docker環境以下実行し、CnSTDは`openCV`を使い、まずは`libgl1-mesa-dev`をインストールする必要があります。
“`
apt-get install -y libgl1-mesa-dev
“`cnstdをインストール(デフォルトのmachine learningモデルも含まれているので、ちょっと重いかもしれません。)
“`
pip install cnst
【Python】マイグレーションツールAlembicを触ってみる
SQLAlchemyで使えるマイグレーションツールAlembicの使い方を調べました。
自分の中でベストな構成(今のところ)が完成したので残しておきます。https://alembic.sqlalchemy.org/en/latest/
# 準備
“`bash
$ python3.8 –version
Python 3.8.13# venv
$ python3.8 -m venv .venv
$ source .venv/bin/activate# パッケージインストール
$ pip install alembic pymysql SQLAlchemy# ディレクトリ作成
$ mkdir -p db models
$ touch db/__init__.py models/__init__.py# データベース作成
$ MYSQL_PWD=”XXXXXXXXX” mysql -u user -h somedb.example.com -e “create database alembic_tutorial”
“`# ディレクトリ構成
“`
a
コマンドプロンプトで実行するPythonスクリプトにおけるANSIカラーの出力
WindowsのコマンドプロンプトでPythonのスクリプトを実行し,コンソールへの出力に色を付けたり太字にしたりする方法です.
# 短いサンプルコード
“`py
import os
os.system(”)
print(‘\033[31mRed\033[0m’)
“`コンソールへの出力は次のとおりです(サンプルコードをmain.pyとして実行):
![foo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425475/46333304-4d9e-344b-c139-9a825bb0ff36.png)# 解説
サンプルコード2行目の`os.system(”)`は引数のコマンドをサブシェルにて実行します[1].Windowsの場合通常はコマンドプロンプトです.引数が`”`のため単にサンプルコードのプロセス上で機能し始めるだけです.
PythonインタプリタはANSIエスケープシーケンスの処理を有効にしないので`os.system(”)`を使用してください[2][3].# 補足
Gradioとは? Pythonで機械学習Webアプリケーションをサクッと作ろう!
## Gradioとは
![スクリーンショット-2022-10-03-13.37.09-2048×996.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171715/3dd81571-d2d4-3fad-984e-98aeeaa173af.png)
[Gradio](https://gradio.app/)とは、機械学習モデルのデモを行うWebアプリケーションを簡単に作ることができるPythonのライブラリーです。
この記事では解説致しませんが、Gradioで作成したWebアプリケーションは、[HuggingFace](https://huggingface.co/)の[Spaces](https://huggingface.co/spaces)でアプリを公開することができます。(現時点では、Gradio以外にも、[Streamlit](https://streamlit.io/)をサポートしています。Gradioの公式ページより、デモアプリケーションを確認できます。
![スクリーンショット-
TelloConsole ビギナーガイド:Python の環境構築
# Tello Console を始めるための環境を構築する
このサイトは、Tello Console の環境を構築する方法を記述します。python、tello プログラミング初心者向けとなります。
ここでは、python を使って tello ドローンをプログラミングするまでに必要な環境を構築します。tello、TelloConsoleについて詳しく知りたい方は、[こちらの**Tello SDK を自分なりに最適化してみた(Tello-Console)**](https://qiita.com/GAI-313/items/7ff5bece03e9173678fb)を参照してください。
気をつけてほしいのが、使用しているPC の応じて環境構築の方法が異なります。そのため Widows、macOS、Ubuntu での環境構築方法をセクションを分けて記述します。
**注意:ここでいう Python は、Python 3 のことを指します。**
– [Tello Console を始めるための環境を構築する](#tello-console-を始めるための環境を構
TelloConsole ビギナーガイド:サンプルコードの実行
# Tello Console をのサンプルコードを実行する
この記事は、**TelloConsole チュートリアル第2項**となります。初めてこの記事を見られた方、もしくは Python の環境をお持ちでない方は **[Tello Console を始めるための環境を構築する](https://qiita.com/GAI-313/items/ead355cb552d13405cc9)** を参照してください。この記事では、TelloConsole をダウンロードして実際に Tello をサンプルコードで飛ばしてみます。この記事は初心者向けに作成されています。
前提として、Tello EDU を用意してください。Tello EDU は[こちら](https://store.dji.com/jp/product/tello-edu?set_region=JP&vid=47091)で購入できます。## TelloConsole をダウンロードする
TelloConsole は、[GitHub](https://github.com/GAI-313/Tello-Conso
【解決法】ModuleNotFoundError: No module named ‘chromedriver_binary’
– ファイル実行
“`terminal
$ python3 ファイル名
“`– 失敗
“`terminal:例
sample@SampleMBP Selenium % python3 sample.py
Traceback (most recent call last):
File “/Users/username/Desktop/Selenium/sample.py”, line 1, in
import chromedriver_binary
ModuleNotFoundError: No module named ‘chromedriver_binary’
“``chromedriver_binaryが見つからんぞ。`と。
# 解決までの手順
## 1. ブラウザ上でChromeのバージョンを確認
ツールバーから「GoogleChromeについて」をクリック
![スクリーンショット 2022-10-02 19.15.07.png](https://qiita-image-store.s3.ap-northeast-1.am
ブロックチェーンを実装してみた & 改ざんを試みた
# はじめに
最近、Web3に関するツイートやニュースの中でも、Non-Fungible Token (NFT)を目にすることが多い。
NFTはブロックチェーンに基づいた技術で、その改ざん不可能性が肝となっているらしい。
以前からブロックチェーンの改ざん不可能性については知っていたものの、
– なぜ改ざんが不可能なのか
– 改ざんを試みると、どうなるのかといった疑問が残っていた。
今回は、これらの疑問を解決すべく、自分でブロックチェーンを実装し、送金データの投入を行う。更に、送金データの改ざんを試みることで、さらなる理解を目指す。# ブロックチェーン
ブロックチェーンは、hash値、data、nonceで構成される「ブロック」がつながったものである。
データを読み取る時は、各ブロックが持っているdataを読み取るのみでよい。
競合する複数のブロックチェーンが存在した時、つながっているブロック数が最大のもののみを信用する。### hash値
なんらかのデータをhash化することによって得られた値。
“`math
h = H(d)
“`
ここで$h$,$H$,$d$はそ
AtCoderでよく使いそうな関数メモ
# この記事は何?
AtCoderでよく使いそうな関数たちをまとめた記事です。# 記事を作成した背景
AtCoder挑戦時に毎回検索して時間を使っているなぁ。。。
-> 関数をまとめて記事にしておいたら自分に必要な関数だけ参照できるのでは?
-> 関数まとめた記事を書いて、辞書みたいに使おう!# 入力を受け取りたい
AtCoderの入力パターンは下記かな、という認識です。
1. 入力値が1つだけある
– `10`など
1. 入力値がスペース区切りで複数ある
– `1 2 3`など## 1. 入力値が1つだけある
### 例:文字列として入力を取得
“`python: 入力に「test」が与えられる
x = input()
print(x)
# -> test
“`
### 例:数値として入力を取得
“`python: 入力に「10」が与えられる
# intで型変換をする
x = int(input())
print(x)
# -> 10
“`## 2. 入力値がスペース区切りで複数ある
### 例:文字列として入力を取得
“`python: 入