- 1. pythonのrange関数がいくつまでかを覚える方法
- 2. GCEでFlaskを動かす!
- 3. Psycopg2 がインストールできないとき
- 4. 電子ペーパー “Inky pHAT” の開発環境を Raspbian(Buster) にセットアップする最小手順 (venv 環境下)
- 5. Pythonのbase64エンコードにおいてjson.dumpsでハマったこと
- 6. 初めての独学Python②
- 7. Python3でcsvから対応表を作る
- 8. 初心者のためのPython基礎文法
- 9. pythonの関数呼び出しをオブジェクトにぶち込んだら結構速くなった
- 10. python3自分用メモ2 乱数のリストを作る
- 11. 【Python】文まとめ【try, del, assert, yield, raise, pass】
- 12. API作成の run_server.py 苦戦….
- 13. AWS Lambdaで並列処理を行うことで処理を高速化する(Python編)
- 14. 中学数学の知識で作るDeepLearning3章まで
- 15. スライスで1つ飛ばし
- 16. 新人がpythonを1日だけ学んで作ったアプリ
- 17. PythonのGUIで遊んでみた
- 18. メモ「Automate the Boring stuff -chapter5 Dictionaries and Structuring Data」
- 19. PyHamcrestを使って柔軟なunittestを書こう!
- 20. pythonでブラックジャック作りました!
pythonのrange関数がいくつまでかを覚える方法
range(1, 5)の最初は1と分かるのだが
5までだったかな4までだったかな・・と
いつも不安になって無駄に調べていたので
覚える方法を開発した(大袈裟)未満(miman)
rangeは5文字なのでmimanの5文字と同じ
以下(ika)ではない。for i in range(1,5):
print(i)1
2
3
4以上です。
日本人限定かもしれませんが
もう間違えることは無いでしょう。では。
GCEでFlaskを動かす!
# はじめに
GCEで**とりあえずFlaskを使ってWebページを公開**する手順です。とりあえずなので、動けばいいといった感じです。# インスタンスの立ち上げ
とりあえず公開するので、最低スペックで行きます。下記の構成でインスタンスを作ります。
– 名前
– gce-flask
– リージョン
– asia-notheast1(東京)
– ゾーン
– asia-notheast1-b
– マシン構成
– N1, f1-micro
– ブートディスク
– 10GB, Ubuntu 18.07 LTS
– ファイアウォール
– HTTP トラフィックを許可する
– HTTPS トラフィックを許可する![スクリーンショット (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483911/d2b8f839-2908-25e6-46b0-9d7c655efe8d.png)
# IPアドレスの固定
とりあえず動けばいいからIPアドレ
Psycopg2 がインストールできないとき
“`pip install -U pip“`
“`pip install psycopg2-binary“`参考: https://stackoverflow.com/questions/16629081/cant-install-psycopg2
電子ペーパー “Inky pHAT” の開発環境を Raspbian(Buster) にセットアップする最小手順 (venv 環境下)
Raspberry Pi Zero とほとんど同じサイズの電子ペーパー「[Inky pHAT](https://www.switch-science.com/catalog/5983/)」の開発環境を Raspbian(Buster) にセットアップする最小手順です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22754/5c75c540-aa10-fd16-4a42-323c077f3b76.png)
#### 動作確認
* Raspberry Pi Zero
* Raspberry Pi 4※いづれも OS は Raspbian (Buster) 2019-09-26 です
## 手順
よくある Raspbian(Buster) 起動直後のセットアップです。タイムゾーン、ホスト名の設定、apt update && apt upgrade しています。不要ならスキップしてください。
`do_hostname YOUR_RPI_HOST_NAME` は `raspber
Pythonのbase64エンコードにおいてjson.dumpsでハマったこと
## はじめに
APIなどの作成でbase64でエンコードしたデータを返したいことありますよね?
今回はそこでハマったので書き残しです.
思考がだらだらと書かれているため端的に書くと“`python
data_bytes = bytes(‘アカネチャンカワイイヤッタ’, ‘utf-8’)
data_encode_bytes = base64.b64encode(data_bytes)
data_encode_str = data_encode_bytes.decode(‘utf-8’)
“`
この3行が成果です.## 準備したデータ
PythonではDict型とJsonは同じ形をしているため,加工しやすいDict型で処理したのち最後にJsonに変換します.“`python
akane_dict = {
‘kind’: ‘voiceroid’,
‘data’: ‘アカネチャンカワイイヤッタ’
}
“`
いろいろ詰まってますね.今回は“`’data’“`をbase64でエンコードして“`json.d
初めての独学Python②
Python学習の備忘録です。
初めての方でもこの記事で学習ができるよう
編集していきます。#関数
関数とは入力値を受け取り、関数内部に記述された命令を実行し、出力値を返すというものです。
プログラムを関数で記述すれば何度も同じプログラムを再利用することができます。記述のイメージはこんな感じです。
>def [関数名] \([引数]) :
[関数定義]数学の関数f(x) = x * 2をPythonを記述すると
“`python:
def f(x):
return x * 2
“`
のようになります。実際にこの関数を使うと
“`python:
def f(x):
return x * 2result = f(2)
print(result)
“`
\>>4
となります。関数に複数の引数を渡すことも可能です。
その場合は「,」で引数を区切ります。“`python:
def f(x, y, z):
return x + y + zresult = f(2, 3, 4)
print(result)
“`
\>>9
Python3でcsvから対応表を作る
#Python3でcsvから対応表を作る
###考え
データ移行などの作業で
コード変換 新旧の対応表を作って順次置換
って作業あるかと思う。その関数を作ってみた
結果的にリスト内包表記使えば、3行くらいで済むことなので
これは、わざわざ関数化しなくても良いかなと思ったが、一応のせときます。###ソースコード
“`csvtodict.py
#ほにゃららコード変換import csv
#指定したCSV(2列限定)を順次読み込み。新旧対応表を作る
def getcsvconv(fname:str)->dict:
with open(fname, encoding=”shift_jis”) as f:
reader = csv.reader(f)
conv_dic = {row[0]:row[1] for row in reader} #リスト内包表記 旧コードをkeyに、新コードをValue
return conv_dic#本体処理
conv_dic = getcsvconv(“ほにゃらら対応表.csv”)
初心者のためのPython基礎文法
#はじめに#
Pythonに触る機会があったので、自分の復習も兼ねてPythonの基礎文法を簡単にまとめてみました!#目次#
[1.出力](#1出力)
[2.変数](#2変数)
[3.文字列の結合](#3文字列の結合)
[4.if文](#4if文)
[5.for文](#5for文)
[6.while文](#6while文)
[7.forとwhileでbreak, continue](#7forとwhileでbreak-continue)
[8.list](#8list)
[9.辞書](#9辞書)#1.出力#
print( )で( )の中の値を出力することができます。
( ‘ )シングルコーテーションか( ” )ダブルコーテーションで囲うことで文字列が表示されます“`python
print(‘123’)
>>>123
print(“123”)
>>>123
“`
数値はシングルコーテーションなどで囲う必要はありません。“`python
print(123)
>>>123
“`
Pythonのプログラムでは123は数値、’123’は文字列として扱い
pythonの関数呼び出しをオブジェクトにぶち込んだら結構速くなった
上司「pythonは関数呼び出しのコストそこそこかかるから、ループ深いところは予めオブジェクトに用意しておいたあげたほうが早くなるよ」
僕「はーい(そんなに変わるわけないっしょww)」・・・と思って試してみました。
“`python:func_call_cost.py
import time
import datetimeTRIAL_NUM = 1000000
from_ts = datetime.datetime.fromtimestamp
def main():
# unixtimeからdatetime作成する処理を100万回
start = time.time()
for i in range(TRIAL_NUM):
datetime.datetime.fromtimestamp(i)
print(“time:{0}”.format(time.time() – start))# 呼び出す関数を予めオブジェクトに用意しておく場合
start = time.time()
for i in ra
python3自分用メモ2 乱数のリストを作る
##乱数のリストを作る
####random.sample(population,k)
population: 範囲の指定
ex) range(1,100) # 1~100までの整数k: 乱数の要素の数
ex) k=10
ex) # len(random.sample(range(1,100),k=10) -> 10“`
import randomrandom_list = random.sample(range(1,100),k=10)
print(random_list)# result
# [1,13,23,36,42,55,63,78,80,90]
“`
【Python】文まとめ【try, del, assert, yield, raise, pass】
# はじめに
知っているようで全ては知らない,しかし使えると便利なPythonの「文(statement)」をまとめます.#単純文と複合文
Pythonには二種類の「文」があります.## 複合文(compound statement)
`if`文,`while`文,`for`文等の文中に他の文などを入れることができる文を**複合文**と呼びます.“`python:example
n=3
if n==3:
print(‘Yes’) # 複合文中ではインデントを下げる
else:
print(‘No’)
“`複合文には`if`文などの他にも,`class`文,`def`文,`with`文,`try`文などがあります.今回は,複合文は`try`文について扱います.
### try (except)
「このコードを実行するとバグが起きるかもしれないから,バグが起きたときだけ例外として処理したい…」のような場合,`try`文と`except`文が便利です.使い方は以下の通りです.
“`python:how_to_use
try:
例外が発
API作成の run_server.py 苦戦….
**postするjsonのデータは{“name”:”monkeydaichan”}です.**
**戻り値は{“data”:{“id”:1,”name”:”monkeydaichan”}}こうしてます.**“`py
# coding:utf-8
import json
from flask import Flask, jsonify, make_response, request, Responseapp = Flask(__name__)
@app.route(‘/post’, methods=[‘POST’])# POST形式で送られたデータのみ受け取る
def post_json():
json = request.get_json() #HTTPリクエストのMIMEタイプがapplication/json場合、 request.get_json()を呼び出すと解析されたJSONデータが返されます
NAME = json[‘name’] #辞書型変数jsonのキー”name”の”value”の値を変数NAMEに投げる
result = {
“dat
AWS Lambdaで並列処理を行うことで処理を高速化する(Python編)
## はじめに
みなさんAWS Lambda(以降はLambdaと表記)使ってますか?
Lambdaには対応している言語が複数あるので、Go言語で記述されている方、Node.jsで記述されている方、Pythonで記述されているかたなど、
様々いらっしゃるかと思います。
APIのバックエンドとしてLambdaを設置する場合、Lambdaの処理時間は出来る限り短くしたい、と思われる方がほとんどだと思います。
理由としては、下記が挙げられるかと思います。* API Gatewayの時間制限が29秒のため、29秒を超える処理が出来ない
* APIの呼び出しに時間がかかると、ユーザービリティを著しく損なうでは、Labmbdaの処理時間を短くしたいのですが、方法としては下記があります。
* Lambdaの性能を上げる
* Lambdaの中で並列処理(マルチスレッド化、マルチプロセス化)を行う今回は、Lambdaでの並列処理について解説したいと思います。
## 実践
それぞれの検証は、下記共通の条件で実施しています。
メモリ:3008 MB
タイムアウト:1分### 並列
中学数学の知識で作るDeepLearning3章まで
中学数学の知識で作るDeepLearning
—
高校数学を履修していないので中学数学までの知識しかないですが、機械学習に興味があったので
[ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装](https://www.oreilly.co.jp/books/9784873117584/) を読んでみました。以下「本書」と呼ぶ事にします。事前準備と参考資料
—
Pythonの実行環境はanaconda+Jupyter Notebookを使用しました。三章までは事前知識が中学数学でも以下を参考にする事で理解できると思います。
行列等線形代について
[ヨビノリたくみさん](https://www.youtube.com/channel/UCqmWJJolqAgjIdLqK3zD1QQ)微分の概念や微分法について
[Try IT(トライイット)](https://www.t
スライスで1つ飛ばし
※だいぶざっくりとしてるのでコメントwelcomeです
スライスには引数が3つ埋め込めるらしい。
始点、終点、飛ばし数の3つ。
2つだけだと思ってました。
そもそも引数っていう言い方が違う気がする。cf) [他の方のQiita記事](https://qiita.com/yossyyossy/items/0c8dc2ed53466d970fe4)
“`python
a = [1,2,3,4,5,6,7,8,9]
print(a[1::2])
“`これで[2,4,6,8]と出力された。
新人がpythonを1日だけ学んで作ったアプリ
#前提
スペック:IT企業の新卒1年目
Python歴:1日
(好きな音ゲー:***Jubeat***)#今回作ったアプリケーション
アプリ名:***これで愛無双の終盤16連はOKくん***
開発時間:***10分***開発背景
・I’m so happy(赤)の終盤16連が***光らない***。
・運指さえ覚えれば…でも、***覚えられない***。
・何回も練習すれば覚えられるけど、***練習する環境が無い***。
じゃあ、PCのキーボードを4×4のマスに見立てて、勤務中とかに練習できるようにすれば良いのでは?
ここから、『これで愛無双の終盤16連はOKくん』のPython開発が始まった・・・・。#コード
imso関数の中身~~~python:im_so_happy.py
def imso():
print(“””
—-
1234
qwer ←キーボード上のこれらのキーを4×4のjubeatのパネルに例えてね。
asdf
zxcv
—-“””)
print(“””
—
PythonのGUIで遊んでみた
## 前座
1年以上もほったらかして、いったいどんなツラ下げて帰ってきたんだい!
こんなツラだよぉ!
というわけで白鳥です
光陰矢の如し、ほったらかすとまぁ早いこと早いことひっさしぶりにアクセスしたら以前書いた記事にレスポンス来てましたわ
ありがてぇありがてぇ。—
## ここから本題
さて、表題のお話
なんとなくpythonいじってたんだけど
“そういえばpythonってGUI無いのかな?”とか思ったんですよねそしたらtkinterなるものが標準で入ってるとかなんとか
これについて真面目に調べようと思ったんだけど
調べてるうちになんかね?深夜のノリでね?
パズル作りたくなっちゃったんすよ。ほら、5×5のタイルで構成されてて、どれかのタイル押すと隣接するタイルと一緒に色が反転するヤツ。
(調べたらライツアウトとかって名前なんだとか)で、作りたくなったので、作ってみました。
こんなん![tkinterライツアウト.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/
メモ「Automate the Boring stuff -chapter5 Dictionaries and Structuring Data」
# Dictionaries and Structuring Data
## The Dictionary Data Type
“`
>>> myCat = {‘size’: ‘fat’, ‘color’: ‘gray’, ‘disposition’: ‘loud’}>>> myCat[‘size’]
‘fat’>>> ‘My cat has ‘ + myCat[‘color’] + ‘ fur.’
‘My cat has gray fur.’>>> spam = {12345: ‘Luggage Combination’, 42: ‘The Answer’}
“`## Dictionaries vs. Lists
“`
>>> spam = [‘cats’, ‘dogs’, ‘moose’]
>>> bacon = [‘dogs’, ‘moose’, ‘cats’]
>>> spam == bacon
False
>>> eggs = {‘name’: ‘Zophie’, ‘species’: ‘cat’, ‘age’: ‘8’}
>>> ham = {‘s
PyHamcrestを使って柔軟なunittestを書こう!
## はじめに
pythonのunittestでDict型の中にList型があって,テストをするたびに通ったり通らなかったりすることってありませんか?
私はあって悩んだのでここに書き残しておきます.
解決の糸口は[このサイト](https://stackoverflow.com/questions/14491164/python-unittest-asserting-dictionary-with-lists)(1)からいただきました.ありがとうございます.## assertEqualで対応できないところ
[ここ](https://qiita.com/phorizon20/items/acb929772aaae4f52101)(2)を参考にしながら以下のようなテストを書きました.“`python
import unittestclass VTest(unittest.TestCase):
maxDiff = None
def setUp(self):
passdef tearDown(self):
pass
pythonでブラックジャック作りました!
#初めに
udemyの[オブジェクト指向についての動画](https://www.udemy.com/course/oop-python/)を視聴して、
オブジェクト指向おもしれーと思ったので、腕試し代わりにブラックジャックを作ってみました!##前提条件
– 山札などの概念はなし。
– Aは常に1として扱う。
– 5カードはなし、両者バーストはディーラーの勝ち。##コード
“`python
import randomCARDS = [“A”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”, “Q”, “K”]
CARDS_DIC = {“A”: 1, “2”: 2, “3”: 3, “4”: 4, “5”: 5, “6”: 6, “7”: 7,
“8”: 8, “9”: 9, “10”: 10, “J”: 10, “Q”: 10, “K”: 10}class Hit(list): # プレイヤーかディーラーがヒット
def __init__(self, list):