- 1. pygameで簡単なFlappyBird(フラッピーバード)というゲームを作る方法
- 2. 野澤理論 爆誕
- 3. 続:オブジェクト指向プログラミングの基本的な概念の話【コンポジション】
- 4. class名をインスタンスを作らずに取得する
- 5. Windows の Atom で Pylint
- 6. 【Discord.py】Cogをついて理解する
- 7. 【インストール不要⁉︎】インストールする前に知っておきたいPythonの話
- 8. macOS Catalinaでコマンドラインツールで導入したPython3を使う
- 9. MacOS CatalinaでPython3をインストールする(Homebrewのみで)
- 10. Azurefunctionって何? 業務で初めて使って見たのでまとめてみました。
- 11. Python 3.9のdictのマージ(`|`)が便利っぽい
- 12. Pythonのリストのビルトインメソッドなどのまとめ
- 13. オブジェクト指向プログラミングの基本的な概念の話【カプセル化・抽象化・ポリモーフィズム・継承】
- 14. Pythonでlist型をlen()しようとしたら “TypeError: ‘int’ object is not callable”が出た話
- 15. DeepLearningを用いた株価予測(データ加工編)
- 16. pythonでプリンタのインク残量を調査
- 17. FITSファイルのプロット
- 18. python3 学習メモ
- 19. Jetson nanoの初期設定からOpenCVで画像認識するまで
- 20. odooモジュールの継承について
pygameで簡単なFlappyBird(フラッピーバード)というゲームを作る方法
#0.最初に
今回作るものがどういう感じで動くのか見てみたい方は、[こちら](https://youtu.be/NrM8jigWwZk)(youtubeの動画)でどうぞ。
#1.実装
“`flappy_bird.py
import pygame
import randomwin = pygame.display.set_mode((400,600))
clock = pygame.time.Clock()class Bird:
def __init__(self,win):
self.win = win
self.y = 300
self.x = 25
self.gravity = 1
self.velocity = 0
self.lift = -2
self.air = 0def show(self):
pygame.draw.circle(self.win,(255,255,255),(self.x,self.y),16)
野澤理論 爆誕
この記事は[「マイスター・ギルド:暑中見舞!夏のアドベントカレンダー2020」](https://note.com/meisterguild/n/n09826f484617) 5日目の記事です。
はじめまして。
マイスター・ギルド(以下、MGまたは弊社) 開発部のエンジニア 野澤です。MGには去年の9月ごろからインターンとしてお世話になり、今年4月から正式に入社しました。
MGに入ってそこまで長くないのですが、楽しいイベント(事件)がいくつも起こっており、これは紹介しなくてはいけないと思い筆をとっております。
本記事では、中でも印象深かったものを技術の話をまじえてご紹介したいと思います。
(前半が物語、後半がちょっとした技術の話という構成です)※注意
この記事は、
マイスター・ギルドって会社は愉快な社員が集まってるよ!楽しいよ!
ってことを伝えるためのものです。間違っても、
「そこの企業さん、こんなアプリ一緒に作りませんか?」
「数字に強い私を引き抜きしませんか?ヘッドハント待ってるよ〜!」
とか、打算なんてこれっぽっちもありません。これっぽっちもないんだ。い
続:オブジェクト指向プログラミングの基本的な概念の話【コンポジション】
前回:[オブジェクト指向プログラミングの基本的な概念の話【カプセル化・抽象化・ポリモーフィズム・継承】](https://qiita.com/alumite/items/7bba694517701b032225)
今回は前回の続きで、扱っていなかった概念である「コンポジション」をまとめます。
参考書:[独学プログラマー Python言語の基本から仕事のやり方まで]
(https://www.amazon.co.jp/dp/B07BKVP9QY/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)(第13章)
参考記事:[オブジェクト指向によるクラス設計](https://thinkit.co.jp/article/13112)# コンポジション
### やること・出来ること
– 「is-a関係」(継承)に対応する「has-a関係」を実現する。(例えば飼い主と飼い犬の関係など)これにより、オブジェクトで表現できる幅が広がる。具体的にはクラス間の関係を表現することができる。(=人間の思考に合わせたデータの持ち方・処理を実現できる)### お気持
class名をインスタンスを作らずに取得する
#概要
クラスオブジェクト自身からclass名を取得する方法が書いてある日本語の記事がなかったので、備忘録として書いておきます。#class名を取得する方法
##インスタンスから取得する
ググってもほとんどがこの方法を使って取得していました。“`Python
class A:
passa = A()
print(a.__class__.__name__)
>>> A
“`##クラスオブジェクト自身から取得する
Python3.3から実装された`__qualname__`で取得できます。
追記:`B.__name__`でも取得できるようです。@shiracamusさん、ありがとうございます。
また、`__qualname__`はクラスオブジェクト内では`B.__qualname__`ではなく単純に`__qualname__`とだけでも書けます。“`Python
class B:
passprint(B.__qualname__)
>>> B# 追記
class C:
qualname = __qualname__print(C.__na
Windows の Atom で Pylint
# 本題
**C:\Users\\<ユーザー名>\AppData\Roaming\Python\Python38\Scripts\pylint.exe**
設定(`ctrl` + `,`)> パッケージ > コミュニティパッケージ > linter-pylint > 設定 > Settings > Executable Pathに上記のパスを設定する。Pythonのバージョンとかは適宜変更してください。
# おまけ
## 概要
Atomのセットアップするたびに躓くので設定手順を書き残しておこうと思いました。
## インストール
Atomのパッケージ(linter-pylint)は、Atom内でインストールすればいいと思う。
“`setup_pylint_atom.sh
pip install pylint
apm install linter-pylint
“`## 環境
– Windows Home 10 2004
– Atom 1.49.0
– linter-pylint 2.1.1
– Python 3.8.5
– python.org
【Discord.py】Cogをついて理解する
___
僕がDiscord.pyのCogについて勉強したのでそのメモと、「リファレンス読んでもわからな~い!!」という人がいるのでその人たちのために書きました。
___
**:warning: 注意:これはCogの解説です。Discord.pyをまだマスターしていない人は、先にそちらをマスターしてから見ください。**
___# Cog(コグ)とは??
そもそもCogって何??>Bot開発においてコマンドやリスナー、いくつかの状態を一つのクラスにまとめてしまいたい場合があるでしょう。コグはそれを実現したものです。
[Discord.pyのドキュメント](https://discordpy.readthedocs.io/ja/rewrite/ext/commands/cogs.html)に書いてありますが、これを見ても「意味不状態」になる人がいるのではないでしょうか?(僕もそうでしたw)
Cogを応用することでDiscord.pyのファイルを2ファイル以上に分けることができたり、Botを起動中にもファイルを簡単に再読み込みすることができたりします!!
# Cogの書き方
##
【インストール不要⁉︎】インストールする前に知っておきたいPythonの話
#はじめに
ご覧いただきありがとうございます。
Pythonをインストールするにあたり調べながらやったところ、失敗しました。
Pythonはインストール方がたくさんあり、どれをどうすればいいのー?と調べれば調べるほど分からなくなります。
これからPythonを始める方にどの方法でインストールするのがおすすめか私なりにまとめてみました。特にプログラミング経験がないがPythonをこれから始めたいと思っている方に有用な記事になるのではないかと思います。
#Pythonをインストールする理由
macには標準でPythonがインストールされています。なぜあえてインストールするでしょう。
調べたり、知人に聞いたりして得られた理由が以下の2点です。– **インストールされているPythonのバージョンが古いから**
– **バージョンの管理ができないから**それぞれについて以下で詳しく解説します。
###インストールされているPythonのバージョンが古いから
「macにはPython2が標準で入っているのでPython3をインストールします」といったPython3が標準で入って
macOS Catalinaでコマンドラインツールで導入したPython3を使う
## はじめに
macOS Catalinaにコマンドラインツールをインストールすると、Python 2.7とPython 3.7を簡単に利用できます。
コマンドラインツールのインストールは `xcode-select –install` で可能です。以下を参考にしてください。
* https://qiita.com/capybara1229/items/cf1a26b0ff7b6100a865
これまでだと、Python3をmacOSで使うには公式のパッケージを使ってインストールしたり、HomebrewでPython3をインストールして使う人も多かったと思います。
## 問題が発生
最近HomebrewでインストールしたPython 3でPythonパッケージマネージャー(pip3)でインストールしたはずのコマンドが実行できなくてはてなマークが浮かんだのですが、原因がわかりました。
おそらく、Python 3.8が必要なFormulaをHomebrewでインストールしたときに一緒にPython 3.8がインストールされたのですが、Python3.8のパスを通さなかった
MacOS CatalinaでPython3をインストールする(Homebrewのみで)
# はじめに
[この記事](https://qiita.com/linus_sh/items/f46d3abc7a854706f72e)でpyenvを利用してPython3をインストールする方法をまとめましたが、
pyenvを利用しないでHomebrewのみでインストールする方法もあったので勉強を兼ねてやってみました。# 実行環境
– MacBookPro Mid 2014
– macOS Catalina ver.10.15.16# 使用するパッケージ
– [Homebrew](https://brew.sh)
– 言わずと知れたMacとLinux向けのパッケージ管理ツール。今回はこれだけで完結します。
※ 詳しい説明は公式ドキュメントを参照して下さい。
# インストールの流れ
1. [Homebrewをインストール](#1homebrewをインストール)
2. [Pythonをインストール](#2pythonをインストール)## 1.Homebrewをインストール
公式ドキュメントに従ってターミナルで以下のコマンドを実行します。インストール済
Azurefunctionって何? 業務で初めて使って見たのでまとめてみました。
##Azurefunctionとは
簡単に説明するとサーバーレスのことで、サーバの管理が不要でプログラミングに集中することができるサービスのこと。##参考記事
-[Azurefunction-fundamental](https://docs.microsoft.com/ja-jp/azure/azure-functions/)
-[Azurefunction-関数を作成する](https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-azure-function)
Python 3.9のdictのマージ(`|`)が便利っぽい
# 概要
Python3.9からdictがマージできるようになったようす。
`|` でできるようす。# 使ったPython
“`
Python 3.9.0b5 (default, Aug 6 2020, 10:04:28)
[Clang 12.0.0 (clang-1200.0.26.2)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
“`# 試してみます
## 基本的な使い方
“`python
>>> a = {‘a1’: 1}
>>> b = {‘b1’: 1}
>>> a | b
{‘a1’: 1, ‘b1’: 1}
“`## マージと代入
“`python
>>> a = {‘a1’: 1}
>>> b = {‘b1’: 1}
>>> a |= b
>>> a
{‘a1’: 1, ‘b1’: 1}
“`## 同じキーがあったとき
“`python
>>> a1 = {‘a’: 1, ‘b’: 1}
>>> a2 = {
Pythonのリストのビルトインメソッドなどのまとめ
# まえおき
– この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
– 入門本なので初心者の方向けです。
– ビルトインのリストの操作やメソッド関係の章の内容が主になります。
– Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。気になる方は↑のリンクの電子書籍版をご利用ください(Githubでダウンロードできます)。
– コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。# リストや辞書に含まれているかを調べる : in
`任意の値 in 対象のリスト`というフォーマットでコードを書くと、その値がリスト内に含まれているかどうかの真偽値を取得することができます。
例えば以下のようなコードでは200という値がリスト内に含まれるかどうかの真偽値を取得しています
オブジェクト指向プログラミングの基本的な概念の話【カプセル化・抽象化・ポリモーフィズム・継承】
オブジェクト指向プログラミングにおける基本的な概念「カプセル化」「抽象化」「ポリモーフィズム」「継承」のまとめです。
参考書:[独学プログラマー Python言語の基本から仕事のやり方まで]
(https://www.amazon.co.jp/dp/B07BKVP9QY/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)(第13章)
# カプセル化
### やること・出来ること
– 複数の変数とメソッド、つまり複数のデータと操作をまとめて扱えること。
– 外から直に参照したり操作をする必要のないデータなど内部の状態を、クラス内に隠蔽してアクセスできないようにすること。### 具体例
“`python:Encapsulation.py
class Encapsulation:
## 初期化
def __init__(self, w, h):
self.width = w
self._height = h
self.option = []
## 面積を返す関数
Pythonでlist型をlen()しようとしたら “TypeError: ‘int’ object is not callable”が出た話
Google Colabolatoryでデータを色々いじってグラフ書いたりしてたら、表題の様な事が起こりました。少しハマりましたが、原因は簡単でした。
もともとリスト型に入っている文字列の数を数えてその数を棒グラフにしたかったんですが、棒グラフのラベルを作るために以下のようなソースを実行しました。“`python:
datalabels=[]
for data in datalist:
if data not in datalabels:
datalabels.append(data)
print(len(datalabels))
“`
すると、“`python
TypeError Traceback (most recent call last)
in ()
5 if data not in datalabels:
6 datalabels.append(data)
—-> 7
DeepLearningを用いた株価予測(データ加工編)
#DeepLearningを用いた株価予測(データ加工編)
[前回の続き](https://qiita.com/hiro0219/items/533ad4c7d1830384c4e6)
前回の回で株価のデータを取得したので,そのデータを分析用に加工していく.
どのように分析していくかによって加工の仕方が変わっていくため,ここらで分析方法について考えていく.私自身株をやっているが,基本的に日中仕事をしているため,株は中期・長期目線でやっている.
その為,翌日の予測をしたいとかそんなレベルの分析よりかは1か月後に上昇しているかなどの分析を行いたい.
とりあえず,過去2か月分のデータを元にその1月先の株価が上昇しているかの2値分類が出来たらいいかなと思い,それを軸にデータを加工していくことにする.###データ確認
落としてきたCSVデータを早速確認4004 東証1部 昭和電工(株)(化学),,,,,
日付,始値,高値,安値,終値,出来高,終値調整値
“2015-01-05″,”148″,”151″,”147″,”149″,”8516000”,”1490
pythonでプリンタのインク残量を調査
#はじめに
aloha !
さて、今回は普段使っているプリンタのインクの残量を確認する方法を調べてみました。
エプソンの場合は、ブラウザからHTTPでアクセスするグラフで表示してくれます。“`
http://[PRINTER_IP_ADDR]/PRESENTATION/HTML/TOP/PRTINFO.HTML
“`
ただ、今回はデータとして取得したいのでpythonで取得してみます。#環境
・EPSONプリンタ(EP-881ANを使いました)
・docker image(ubuntu)
・python3
・pip3
・vim※私の場合は、Jetson Nanoにdockerを入れて使ってます。
#方針
プリンタの値を取得する方法として、SNMP(Simple Network Management Protocol)を使ってみたのですが、インク残量がよくわからず、IPP(Internet Printing Protocol)を使うことにしました。
SNMPを使うとどのカートリッジの型番(KAM-〜とか)を使うべきかの情報は取れます。#手順
##pyippの導入
`
FITSファイルのプロット
#FITSとは
FITSはFlexible Image Transport Systemの略で,天文データを扱う際に良く用いられるかなり自由度の高いファイル形式である(拡張子は“`.fits“`).#FITSのプロットについて
FITSを開いてみる主な方法としては,1. NRAOが提供するCASA( https://casa.nrao.edu )や,Harvard大学のSAOImage DS9( https://sites.google.com/cfa.harvard.edu/saoimageds9 )などのソフトを用いる方法
2. FITSを開くためのPythonのモジュールを用いる方法の2種類がある.このうち2の方が見た目を整える方法が豊富で自由度が高いので,この方法を取り上げる.
以下にソースコードを示す.
“`python
import matplotlib.pyplot as plt
import astropy.io.fits as ap
import aplpy#=====================FITSファイルの読み込み========
python3 学習メモ
# はじめに
python練習用にプログラミングの練習問題を解くときに使用した文法のメモです。
後で自分で見返せるように、自己学習のアウトプットをまとめてます。
使用したものは今後も追記予定。# 標準入力・出力
“`python
# 基本
input_line = input()# スペースで区切られて入力が与えられた場合
input_line = input().rstrip().split(” “)# リストで格納されているため、下記のようにインデックスを指定して値を取り出せる
a = input_line[0]
b = input_line[1]# 出力の基本
print(‘abc’)# 改行させたくない場合
print(‘abc’, end = “”)
“`
# for文
“`python
# range関数で範囲指定
for i in range(1, 10): # 1~9までrange(10) # 0~9まで。0から開始の場合はこれでもいい
# リストから値を取り出す
word = [‘a’, ‘b’, ‘c’]
for i in word
Jetson nanoの初期設定からOpenCVで画像認識するまで
# Jetson nano
Jetsonは、GPUで有名なNvidiaから発売されている、GPUを搭載しているシングルボードコンピュータです。
2020/02/14に発売された最新のB01 Jetson nanoを今回は利用します。
Amazonで本体だけで13,000円程度でした。Jetson nanoはRaspberry Piとよく比較されますが、
Jetson nanoと電源アダプタ(5V)とSDカードを購入しました。
SDカードは大容量で安いものもありますが、速度に影響が出るので、少し高くてもある程度有名どころをかっておくのがおすすめです。
あと、大きすぎるとまるっとバックアップする際に大変で、小さすぎるとOSだけでいっぱいいっぱいになってしまうのでJetson nanoの場合64GBくらいが丁度いいかなと思います。# 初めに
本記事はすでにodooのインストール方法など、環境構築ができている前提で話を進めるとします。# odoo moduleの継承について
odooの一つの強力な機能はその他のモジュールを継承して実現するプロセスが可能だということです。既存のモジュールに則って修正をかけて、異なるレイヤーにて修正をかけられます。ビュー、業務ロジック、モデルなどのレイヤーにてできます。# `__manifest__.py`のdependsについて
`__manifest__.py`ファイルにあるdependsは依頼関係を示したものです。dependsに入れたモジュールの意味合いは大体以下の2パターンがあります。– 既存モジュールの元で新たな外観および機能を拡張したい。
– 既存モジュールの外観および機能を変更したい。> ワンポイント:
– 例1:odooモジュールがあるとします。何か修正・拡張をしたいときに、todoモジュールでファイルを修正するのではなく、新たなモジュールを作成して、odooが提供しているモジュールに対して二次開発をするということになります。(ソースコードに修正をか