Python3関連のことを調べてみた2019年12月28日

Python3関連のことを調べてみた2019年12月28日

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 * 2

result = f(2)
print(result)
“`
\>>4
となります。

関数に複数の引数を渡すことも可能です。
その場合は「,」で引数を区切ります。

“`python:
def f(x, y, z):
return x + y + z

result = 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 datetime

TRIAL_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 random

random_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, Response

app = 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 unittest

class VTest(unittest.TestCase):

maxDiff = None

def setUp(self):
pass

def tearDown(self):
pass

元記事を表示

pythonでブラックジャック作りました!

#初めに
udemyの[オブジェクト指向についての動画](https://www.udemy.com/course/oop-python/)を視聴して、
オブジェクト指向おもしれーと思ったので、腕試し代わりにブラックジャックを作ってみました!

##前提条件
– 山札などの概念はなし。
– Aは常に1として扱う。
– 5カードはなし、両者バーストはディーラーの勝ち。

##コード

“`python
import random

CARDS = [“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):

元記事を表示

OTHERカテゴリの最新記事