- 1. [Python3 入門 4日目] 2章 数値、文字列、変数 (2.3.7〜2.3.14)
- 2. f8: python 2.x -> 3.x 移行メモ (pythonista)
- 3. 関数内関数
- 4. Docstrings
- 5. Google colab OANDA APIで取得した時刻(ISO8601)を日本時間に変換する(JST)
- 6. Python3入門学習 0回目
- 7. 位置引数とタプル化と辞書化の混在
- 8. pycparserでCプログラムのASTを出力してみた
- 9. 引数がいくつ入るか分からない場合2 **kwargs 可変長引数
- 10. Python3スクリプトでFreeCADモデリング(Ubuntu18.04)
- 11. 【python】import文
- 12. Windows10上のPythonでAccessのDBを参照する
- 13. 引数がいくつ入るか分からない場合 *args 可変長引数
- 14. 【Jupyter Notebookメモ】matplotlibで漢字表示を行う
- 15. OpenCVとPythonを使ったさまざまな画像処理まとめ
- 16. [Python3 入門 3日目] 2章 数値、文字列、変数 (2.2〜2.3.6)
- 17. Python備忘録~個人的に興味を持った点~
- 18. django.db.utils.ProgrammingError: permission denied for table django_migrationsの対処法
- 19. 関数のデフォルト引数でリストを与えてしまうと・・・
- 20. 【python再入門】親ディレクトリを経由したimportを行う方法
[Python3 入門 4日目] 2章 数値、文字列、変数 (2.3.7〜2.3.14)
#続き
##2.3.7 [start: end:step]によるスライス
スライスを使えば、文字列から**部分文字列**(文字列の一部)を取り出すことができる。– [:]は先頭から末尾までのシーケンス全体を抽出する。
– [start:]はstartオフセットから末尾までのシーケンスを抽出する。
– [:end]は先頭から**end-1**オフセットまでのシーケンスを抽出する。
– [start:end]はstartオフセットから**end-1**オフセットまでのシーケンスを抽出する。
– [start: end:step]はstep文字ごとにstartオフセットから**end-1**オフセットまでのシーケンスを抽出する。※オフセットはインデックス参照の時と同様。
“`py
>>> letters = ‘abcdefghijklmnopqrstuvwxyz’
>>> letters[:]#文字全体を指定
‘abcdefghijklmnopqrstuvwxyz’
>>> letters[20:]#オフセット20から末尾までの切り取る。
‘uvwxyz’
>>> letter
f8: python 2.x -> 3.x 移行メモ (pythonista)
.
以前の以下記事
f5: Pythonista でメール送信
https://qiita.com/cxfgp/items/4849a856be57646bcf34
f6: Pythonista で LINE メッセージ送信
https://qiita.com/cxfgp/items/bb82b4ce7b7af000bd6fで、
#####※ Pythonista v3 未確認(多分いけると思います)#####
と書き、3.x 的機能は使用していない意味でしたが、
実際に移行をしてみての 「つまずき箇所」 メモですほぼ皆さまが「移行」で体感している部分と思います
—
### **[ 1. キッチン ]**Pythonista v2.1.1
Pythonista v3.2iphone SE / ios 13:2.3
iphone 8 / ios 12.3.1
iphone 11 / ios 13.3—
### **[ 2. 調理 ]****1) SyntaxError: Missing parentheses in call to ‘print’
関数内関数
“`py
def test(a, b, c):def plus(d, e):
return d + er1 = plus(a, b)
r2 = plus(b, c)print(r1 * r2)
test(3, 4, 5)
“`“`:実行結果
63
“`r1はplus関数に3,4を入れた値が入る。
よって、r1=7
r2はplus関数に4, 5を入れた値が入る。
よって、r2=9test関数はr1とr2をかけた値を出力するので、
実行結果で63が出力される。
Docstrings
“`py
def players(**kwargs):
“””名前と職種を出力する関数です。
“””
for name, job in kwargs.items():
print(name + ‘は’ + job + ‘です。’)d = {
‘太郎’:’勇者’,
‘次郎’:’戦士’,
‘三郎’:’魔法使い’,
‘四郎’:’僧侶’
}players(**d)
print(players.__doc__)
help(players)
“`“`:実行結果
太郎は勇者です。
次郎は戦士です。
三郎は魔法使いです。
四郎は僧侶です。
名前と職種を出力する関数です。Help on function players in module __main__:
players(**kwargs)
名前と職種を出力する関数です。
“`関数のファンクションなどを
“”” “””に書く。
docメソッドで参照できる。
help関数でも参照できる。
Google colab OANDA APIで取得した時刻(ISO8601)を日本時間に変換する(JST)
少しだけ手こずったのでメモ
#1.動作環境
・GoogleColaboratory
・OANDA API V20
#2.やり方
どうやらOANDA APIで拾ってきた時刻はISO8601という規格だそうで。
売買した時刻を表示させたいと思って
日本時間で知りたいな~なんておもって少々はまった。
まず、OANDAからどんなデータが帰ってくるかというと、“`python
trading_data=api.request(trades.OpenTrades(accountID=accountID))
trading_data[“trades”][0][“openTime”]
“`
上記のように売買した時刻がopenTimeに記載があります。
その中身は“`
‘2020-01-09T10:28:23.567698657Z’
“`
すごい細かくナノ秒くらいまでもってこれます。
しかしそこまで詳細な秒数は知らなくてもよいので
以下のようなコードで変換できました。“`python
time=trading_data[“trades”][0][“openTime”]
def i
Python3入門学習 0回目
本稿はPython初心者がWin10 64bit環境でPython3を勉強していく過程を記している。
特に前提知識を想定していないが、逆に筆者にも前提知識がないため、必ずしも正確な情報を適切に提供できるわけではないことを予めお断りしておく。
また、本稿はオライリー・ジャパンより出版されている『入門 Python3』を参照して書かれている。# Pythonのインストールと簡単な動作確認
## Python3のインストール
なにはともあれPython3が手元になければプログラミングをすることができないので、簡単に環境を整えていく。
まずは以下のアドレスにアクセスする。自分の実行する環境にあったPython3の実行環境を作るのだ。
https://www.python.org/downloads/
「Download Python3.8.1」のボタンを押してダウンロードする(3.8.1は本稿記載時点でのバージョン情報)。ダウンロードしたexeファイルを実行すればよいはずだ。
インストール先を適切に指定して(もちろん、特別な事由がない限りはデフォルトの指定先でよいだろう)、インストールする
位置引数とタプル化と辞書化の混在
“`py
def players(job, *args, **kwargs):
print(job)
print(args)
print(kwargs)players(‘勇者’, ‘戦士’, ‘魔法使い’, job1=’僧侶’, job2=’魔法剣士’)
“`“`:実行結果
勇者
(‘戦士’, ‘魔法使い’)
{‘job1’: ‘僧侶’, ‘job2’: ‘魔法剣士’}
“`jobに’勇者’が
argsに(‘戦士’, ‘魔法使い’)がタプル型で
kwargsに{‘job1’: ‘僧侶’, ‘job2’: ‘魔法剣士’}と辞書型で
格納されている。ただし、
*1つが*2つよりも先でないと、
syntax errorとなるので注意。
pycparserでCプログラムのASTを出力してみた
研究でCプログラムのASTを取得する必要ができたので、勉強した内容のメモ代わりとして残す。
pycparserをpipでインストール
実際にサンプルプログラムを動かしてみた。
“`ruby:sample.py
from __future__ import print_function
import sys
import json
from pycparser import c_parser, c_asttext=r”’
int mian(void){
int i,j;
printf(“test”);
return 0;
}
”’sys.path.extend([‘.’, ‘..’])
parser = c_parser.CParser()
ast = parser.parse(text, filename=’‘)
ast.show(attrnames=True,nodenames=True)
“`“`ruby:実行結果
FileAST:
FuncDef:
Decl: name=mian, quals=[
引数がいくつ入るか分からない場合2 **kwargs 可変長引数
引数がいくつ入るか分からない場合 *args 可変長引数は、
タプルでしたが、
キーワード引数を辞書化して同じ様な処理をする。“`py:辞書
def players(**kwargs):
for k, v in kwargs.items():
print(k + ‘は’ + v + ‘です。’)d = {
‘太郎’:’勇者’,
‘次郎’:’戦士’,
‘三郎’:’魔法使い’,
‘四郎’:’僧侶’
}players(**d)
“`先程と同様、辞書dを
**dで展開し、
players関数に渡す。
**kwargsで辞書化。
そして、
その辞書kwargsを
for k, v in kwargs.items():
print(k + ‘は’ + v + ‘です。’)で
利用。“`:辞書の実行結果
太郎は勇者です。
次郎は戦士です。
三郎は魔法使いです。
四郎は僧侶です。
“`
Python3スクリプトでFreeCADモデリング(Ubuntu18.04)
##はじめに
Python3のスクリプトを使って、FreeCAD上でモデルの寸法パラメータを変更する方法のメモです。
基本的な形状はGUIで作っておいて、寸法だけをPythonスクリプトで変更します。
ゼロからPythonでモデル作成するわけではありませんので注意。##対象
Python3スクリプトでFreeCAD(0.18)を操作したい人。
まだPython2を使っている人はこちらも参考にして下さい。
>Qiita
> [-FreeCAD 0.18をPython2スクリプトで実行するときのメモ(Ubuntu18.04)][link-1]
[link-1]:https://qiita.com/hiro_kuramoto/items/217503240ceacf86dbec##インストール方法とか操作方法とか
以下のサイトが参考になります。
>FreeCAD 使い方メモ
>[-FreeCAD Linux でのインストール方法][link-2]
[link-2]:https://www.xsim.info/articles/FreeCAD/HowTo/Install-on-Linu
【python】import文
#import文
pythonのライブライはオープンソースとなっており、世界各地でライブラリの開発が行われている。
ライブラリを使用することで様々なことがプログラミングで容易に実現することが出来る。#宣言方法
**import ライブラリ名**
でライブラリをインポートすることが出来る。多くの場合、あるプログラムを動かすのに必要なライブラリはコードの**先頭でまとめて**宣言される。
今回は例として、numpyとpandasをインポートしてみる。“`python:import.py
import pandas
import numpy
“`上の宣言をすることで、numpyおよびpandasで定義されている関数やオブジェクトを使用できるようになる。
このように複数のライブラリをインポートしたい場合は、複数のimport文が必要になる。#pandasを使って内積計算
次にimportしたpandasのオブジェクトやメソッドを使うことを考える。
内積はnumpyのdot関数で定義されている。このdot関数はarray型変数を引数にとる。“`python:imp
Windows10上のPythonでAccessのDBを参照する
## mdb形式のファイルをPythonから参照したい
ふだんは、MacOSを使っているのでWindows環境でAccessのDBを単にselectするだけのツールならpythonであっという間にできるのではないかと考えたのですが、自分の知識と能力のレベルを感じた記録です
現在はまだ**接続ができたところ**までです### 経緯
*Visual Studio*を使用しVisualBasicでAccessDBを参照するツールを作成してあった。
キーを入力して値を表示するだけの10行程度のツールなのですが、
そのためにVisual Studioの環境を整えないとなりませんでした。
『Visual Studioをインストールする方法』という記事もあるくらいで手間がかかります。もう少しこの部分の手間を省けないかと考えた経緯を記録しときます。
※ とはいえ、結果として**手間**という部分に関しては改善できたのかは疑問です:sweat:
振り返ってみると[YottaGinさんのページ](https://yottagin.com/?p=2909)で書かれていらっしゃることそのままに、私が躓いた
引数がいくつ入るか分からない場合 *args 可変長引数
“`py:1
def greeting(word1, word2, word3):
print(word1)
print(word2)
print(word3)greeting(‘こんにちは’, ‘おはよう’, ‘こんばんは’)
“`“`:1の実行結果
こんにちは
おはよう
こんばんは
“`“`py:可変長引数*argsを使って
def greeting(*args):
for arg in args:
print(arg)greeting(‘こんにちは’, ‘おはよう’, ‘こんばんは’)
“`“`:可変長引数*argsを使っての実行結果
こんにちは
おはよう
こんばんは
“`引数に入れたいものをタプルに格納してから使う場合は
“`py:可変長引数*argsを使って2
def greeting(*args):
for arg in args:
print(arg)t = (‘おはよう’, ‘こんばんは’)# タプルに格納
greeting(‘こんにちは’, *t)#
【Jupyter Notebookメモ】matplotlibで漢字表示を行う
# はじめに
Jypyter Notenook上のmatplotlibで漢字表示をするための方法メモ。
以前は、もっとややこしい方法を使っていたが、こちらの方がシンプル。
Google Colaboratory とWatson Studioで動作確認済みです。# コード
## ライブラリのロード
“`py3
# 必要ライブラリの導入
!pip install japanize-matplotlib | tail -n 1# 必要ライブラリのimport
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 日本語化対応
import japanize_matplotlib #日本語化matplotlib
import seaborn as sns
sns.set(font=”IPAexGothic”) #日本語フォント設定# データフレーム表示用関数
from IPython.display import display
“`## サンプル表示のためボストンデータセッ
OpenCVとPythonを使ったさまざまな画像処理まとめ
#背景
OpenCVとPythonを使ってさまざまな画像処理を行ってみました。流用しやすい形として残しておきたいので、よく使うグレースケール化、画像のリサイズや回転、エッジ処理、特徴量検出などをOpenCVで実装したコードと結果を残しておきます。>OpenCV(オープンシーヴィ、英語: Open Source Computer Vision Library)とはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリ。画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ。プラットフォームとしてmacOSやFreeBSD等全てのPOSIXに準拠したUnix系OS、Linux、Windows、Android、iOS等をサポートしている。(参考:https://ja.wikipedia.org/wiki/OpenCV)
#目次
[1. グレースケール化:cv2.COLOR_BGR2GRAY](#1-グレースケール化)
[2. 画像サイズの変更:cv2.resize](#2-画像サイズの変更)
[3. 画像の回転:c
[Python3 入門 3日目] 2章 数値、文字列、変数 (2.2〜2.3.6)
#2.2 数値
Pythonには整数(5や10000000などの小数点以下がない数値)と不動小数点数(3.12121,14.99,1.32e3など)、虚数のサポートが組み込まれている。##2.2.1 整数
四則演算。“`py
>>> 5
5
>>> 0
0
>>> 09
File ““, line 1
09
^
SyntaxError: invalid token #数字の前にゼロを置いてはならない。
>>> 123
123
>>> +123
123
>>> -123
-123
>>> 5+9
14
>>> 100-7
93
>>> 4-10
-6
>>> 5+9+3
17
>>> 4+3-2-1+6
10
>>> 6*7
42
>>> 7*7
49
>>> 6*7*2*3
252
>>> 9/5 #浮動小数点数(10進)徐算を行う
1.8
>>> 9//5 #整数(切り捨て)徐算を行う
1
>>> 9/0
Traceback (most recent call last):
File ““, line 1, in
Python備忘録~個人的に興味を持った点~
# はじめに
なんちゃってなPythonの使いっぷり[^なんちゃって]に危機を感じて、現在、「Python 3 エンジニア認定基礎試験[^Python 3 エンジニア認定基礎試験]」の合格を目標として学習中の @daikikatsuragawa です。本記事では、Pythonの学習を通して、個人的に興味を持った点を備忘録として紹介します。気まぐれで随時更新、編集します。ご了承ください。
[^なんちゃって]: データ分析に取り組んでいた学生時代、Pythonを用いて12時間かかる計算を実施した。そのことを先輩に伝えたら「Pythonにはこんな書き方があって…」とアドバイスをいただき、その計算が10分くらいで完了するようになった。それくらい「Python」自体に疎い。
[^Python 3 エンジニア認定基礎試験]: [Python 3 エンジニア認定基礎試験](https://www.pythonic-exam.com/exam)# 個人的に興味を持った点
### インタプリタを終了するコマンド
“`console
quit()
“`### アクティベート状態から抜け
django.db.utils.ProgrammingError: permission denied for table django_migrationsの対処法
`django.db.utils.ProgrammingError: permission denied for table django_migrations`のエラーの対処に苦戦したので書いておこうと思います。
このエラーが出たときpostgresqlのdjango移行を実行中に、接続ファイルで使用されているpostgresqlのユーザーに対して権限設定がなされてないことが原因みたいです。なのでpostgresqlのユーザーに権限を持たせようと思います。
コマンドから`psql -U postgres`でpostgresにログインします。
“`
>psql -U postgresユーザ postgres のパスワード:
psql (12.1)
“help”でヘルプを表示します。postgres=#
“`次に使用したいデーターベースにログインします。(database nameは使用したいデータベースを入れてください。)
“`
postgres=# ¥c database name
データベース”database name”にユーザ”postgres”とし
関数のデフォルト引数でリストを与えてしまうと・・・
“`py:1
def test(x, l=[]):
l.append(x)
return ly = [1, 2, 3, 4]
r = test(7, y)
print(r)
“`“`:1の実行結果
[1, 2, 3, 4, 7]
“`“`py:2
def test(x, l=[]):
l.append(x)
return lr = test(100)
print(r)
r = test(100)
print(r)
“`“`:2の実行結果
[100]
[100, 100]
“`同じ処理を二回したつもりが、
二回目は100が二個になる。これは、リストが参照渡しであるが為に起こる。
バグに繋がる事が多いため、
リストやデイクショナリーの様に参照渡しのものをデフォルト引数におかない。そこで以下の様に書く。
“`py:3
def test(x, l=None):
if l is None:
l = []
l.append(x)
return ly = [1, 2,
【python再入門】親ディレクトリを経由したimportを行う方法
pythonで自作モジュールをimportする際の対処方法がよくわからなくなってしまったのでメモ
# 背景
pythonに限らずプラグラミングをしていると、最初1ファイルで記載していた処理を複数ファイルに分割したくなってきます。
そしてそのうち分割したファイルをディレクトリに分けて管理したくなります。
これらのディレクトリに分けて管理を始めたファイルをimportする際に少し工夫が必要で手間取ったので対応方法を残しておきます。なお、細かいですが、パターンが以下の2つに別れます。この記事では1の方について記載します。
1. 実行ファイル内で親ディレクトリ経由のパスにあるモジュールをimportしたい場合“`bash
.
├package1
│ ├__init__.py
│ └module1.py
└package2
├__init__.py
└module2.py
“`
↑実行ファイルがmodule1.pyで、module1.pyからmodule2.pyを呼び出したい場合2. 実行ファイルがimportしているモジュールの中で、親ディレクトリ経由のパス