- 1. 東京海上日動 プログラミングコンテスト2020 復習
- 2. Python で zip 展開(日本語ファイル名対応)
- 3. レシートプリンタでメモ書きを印刷する(連載)
- 4. 時系列のcsvデータを一瞬で合計や平均を求める方法
- 5. Alexaにlambda連携させて中野区のゴミの日を教える
- 6. Python超初心者の超初心者のためのPython #辞書型2
- 7. 引数をファイル名かstdinから読み込む
- 8. コピペでいける、Googleスプレッドシートでシートの内容をJSON形式でダウンロードする方法(Google Colab使用)
- 9. (自分用)Flask_4(ドロップダウンメニュー、txtデータの表示(表を使って))
- 10. TouchDesignerでOpenCVをはじめーる(Windows10、Python3.7、OpenCV4.0)
- 11. No key could be detected.の対処法メモ
- 12. 【Python】任意の数の標準入力をリストに入れる方法
- 13. yukicoder contest 253 参戦記
- 14. 【強化学習】OpenAI Gym を Google Corab上で描画する方法 (2020.6版)
- 15. Tacotron2で始める日本語音声合成
- 16. Djangoのテンプレート内で定数を扱う
- 17. csvデータを取り出し、計算する
- 18. ゼロから始めるLeetCode Day61「7. Reverse Integer」
- 19. [光-Hikari-のPython]<補足>06章-05 関数(引数と戻り値4)
- 20. コスパ最強IoT家電!TPLink製品をRaspberryPiから操作
東京海上日動 プログラミングコンテスト2020 復習
#今回の成績
パフォーマンスは1270くらいでした。
#今回の感想
この次の日のABCが悪すぎて全て持っていかれましたが、この回ももう少し戦えたかなと思いました。
しかし、結果的に黄diffと橙diffの問題を復習で解き切ることができたので、良かったかなと思います。
高難易度は冷静に時間をかければ(3時間くらい)できるので、このスピードを少しずつあげられる努力をしていきたいなと思います。
パフォーマンスはよくないですが、戦えるなと感じる回でした。最近このような回が続いているので、コンテスト中に解き終わることができるように#[A問題](https://atcoder.jp/contests/tokiomarine2020/tasks/to
Python で zip 展開(日本語ファイル名対応)
## zip の中のファイル名
zip ファイル内にアーカイブされている各ファイルのファイル名エンコーディングは、(現バージョンだと) UTF-8 フラグの有無を指定することができるようですが、 UTF-8 以外のエンコーディングは指定することができません。
日本語ロケールの Windows で圧縮すると(ツールにもよりますが)、ファイル名は Shift_JIS (CP932) で書き込まれます。最近の Linux や Mac は UTF-8 がほとんどです。
異なる OS で圧縮された zip ファイルを展開するときに、 UTF-8 フラグが付いていれば問題なく展開することが可能ですが、 Shift_JIS (CP932) が使われている場合、ファイル名の文字化けが起きることがあります。
具体的に言うと Windows → Linux / Mac など。この場合は `unar` などのアーカイバを使ったり、 `convmv` などで化けたファイル名を修正する方法があります。
これとは別に Python の ZipFile ライブラリでも正しくファイル名を認識することができま
レシートプリンタでメモ書きを印刷する(連載)
# レシートプリンタでメモ書きを印刷する
## 困っていること
まずは何あれ、問題定義!
私は、タスク管理ツールを何度も使ってみては、失敗してを繰り返しているのですが、それは、スマホでいちいちタスクを開くのが面倒くさいから、物理的に見えないからなのではないかと思い、プリンターで印刷してしまえばいいのではと思いこれらを作成しました。## 機能
* タスクを管理する(これはタスク管理ツールに頼ろう)
* タスク管理ツールからAPIでデータを取得する
* タスクをプリンターで印刷する
* 一定の時間にタスクを実行して、毎朝タスクが送られるようにする
* 出したいときにタスクシートを印刷する## 使用するもの
* Google ToDo
* python
* socket(未定)
* raspberrypi## まとめ
タスク管理を毎日確実にできるようになれば、いまのコロナでサボりまくっている生活週間をかえれるはず!!
時系列のcsvデータを一瞬で合計や平均を求める方法
## TL;DR
* 時系列csvを扱うためには、pandasを使えば良い## やりたいこと
* https://qiita.com/kazutxt/items/a23412625fa3e1f35443
* こちらで蓄積しているデータ(CSVの時系列データ)から日別,月別の平均を求めたい“` input.csv
# 日付(分まで),USDレート,JPYレート,EURレート
# 10分毎に1日144行のデータが存在
# 2020/2/24 18:00 ~ 2020/6/11 23:10
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N
yyyy/mm/dd HH:MM,NN.N(data),NN.N,NN.N
“`## 車輪を再発明しようとする
### まずは、コードを書いて求める(求めようとする)1. ファイルを開く
2. 1列目を日時とみなしてdate型に変換する
3. 同じ月,日の境目を超えるまで、値を蓄積する
4. 蓄積したデータをデータを蓄積した個数で割
Alexaにlambda連携させて中野区のゴミの日を教える
# やりたいこと
Alexaからlambdaを呼び出して中野区のゴミの曜日を返します。
全く触ったことのない人でも一から作れるように書きました。![alexa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619762/479c5032-72bd-f550-e10d-bcc353a8af8c.png)
[ALEXAで開発入門してみたので自分なりに纏めてみる](https://qiita.com/godan09/items/6dafc3da51b10532dbe1)
こちらの記事を参考に作ってみました。
細かいところまで説明されていてとても勉強になりましたが、
AWSの仕様変更のためか途中でつまづいたのでその辺りも本稿で記載します。# 必要なもの
* [Amazon開発者ポータル](https://developer.amazon.com/ja/)のアカウント取得 (Alexaのスキル作成に必要)
* [AWSマネジメントコンソール](https://aws.amazon.com/jp/c
Python超初心者の超初心者のためのPython #辞書型2
環境
windows7 (Mac Book Pro 16inch欲しい)
Visual Studio Code
chrome
python ver3.8.3この記事はプログラミング初心者かつPython初心者に向けて記述します。
##辞書型2
辞書型には色々な機能があります。
今まで作成した辞書型に要素を追加したいときには`.update`が使えます。
下記は既存のアカデミー賞辞書に80年代のアカデミー賞作品を追加するという例です。
新たに80年代のアカデミー賞作品の辞書`academy_80s`を作成し、
`既存辞書.update(新しい辞書)`の記述方法に当てはめて行ってみます。“`python:dict.py
academy_awards = {“グリーンブック”: 2019, “シカゴ”: 2003, “タイタニック”: 1998}academy_80s = {“レインマン”: 1989, “プラトーン”: 1987, “ガンジー”: 1983}
academy_awards.update(academy_80s)
print(academy_awards)
引数をファイル名かstdinから読み込む
“`python:引数をファイル名かstdinから読み込む
#!/usr/bin/env python3
“””
引数がファイルだったらファイルの内容を、
そうでなければ引数をprintする
“””
import sys
import fileinput
from pathlib import Pathif Path(sys.argv[1]).exists(): # 第一引数がファイルだったら
for line in fileinput.input(): # ファイルの内容を一行ずつprint
print(‘file input’)
print(line)
else: # 第一引数がファイルではなかったら
for i in sys.argv[1:]: # 引数の文字列をprint
print(‘args input’)
print(i)
“`“`shell-session:実行結果
$ python stdin_test.py hoge.txt fuga.txt
file input
コピペでいける、Googleスプレッドシートでシートの内容をJSON形式でダウンロードする方法(Google Colab使用)
## 【コピペ可能】 GoogleスプレッドシートをJSON形式でダウンロードする方法
まずはコードから。
Google Colabを開いて、下に記載された2つのコードをコピペするだけで指定したシート内の値をJSON形式でPCのローカルにダウンロードすることが可能です。### 1.認証
下のコードをColab上で実行すると、認証を行うためのリンクなどが表示されるので、画面の指示に従って実行してください。
“`python
from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspreadauth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())
“`### 2.JSON形式でダウンロード
下記のコードをColabにコピペして、`ダウンロードしたいスプレッドシートのファイル名` と `JSON形式でダウンロードしたいシー
(自分用)Flask_4(ドロップダウンメニュー、txtデータの表示(表を使って))
# 項目
1. ドロップダウンメニューの作成
2. txtデータの読み込み
3. txtを整える# 1.ドロップダウンメニューの作成
“`python:python
from flask import Flask, request, render_template
app = Flask(__name__)players = [“勇者”, “戦士”, “魔法使い”, “忍者”]
@app.route(“/”)
def show():
message = “あらたなモンスターがあらわれた!”
return render_template(“battle.html”, message = message, players = players)
“`
– 今回はpy側に作ったリストを項目としてメニューを作成
– リストに関してはまあそのまま
– `return`にリスト名入れるの忘れない様に“`html:html
TouchDesignerでOpenCVをはじめーる(Windows10、Python3.7、OpenCV4.0)
# はじめに
TouchDesignerでOpenCVやっていきます。導入からMobileNetSSDまで。# 開発環境
– Windows10(RTX2080 Max-Q、i7-8750H、RAM16GB)
– TouchDesigner 2020.24520
– Anaconda 2020.02
– Python 3.7
– OpenCV 4.0# 導入
[TouchDesigner](https://derivative.ca/download)からインストールします。
サインインして、Keyを作成しましょう。開いたらこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/0bedc214-22cd-c401-12a2-beb07e623671.png)## OpenCVを入れる
メニューのDialog->Textport and DATsを開きます。
![image.png](https://qiita-image-store.s3.ap-nor
No key could be detected.の対処法メモ
## エラーログ
“`
Traceback (most recent call last):
File “/app/.heroku/python/lib/python3.7/site-packages/firebase_admin/credentials.py”, line 96, in __init__
json_data, scopes=_scopes)
File “/app/.heroku/python/lib/python3.7/site-packages/google/oauth2/service_account.py”, line 201, in from_service_account_info
info, require=[“client_email”, “token_uri”]
File “/app/.heroku/python/lib/python3.7/site-packages/google/auth/_service_account_info.py”, line 55, in from_dict
signer = cryp
【Python】任意の数の標準入力をリストに入れる方法
atcoderで以下のような入力をうけとらなければならない問題があったのでメモ
“`
3 //入力数N
2 4 6 //A1 ・・・AN
“`という入力があるとき、このNとA1~ANをリストに格納する方法を載せます。
“`
N=int(input())
array = list(map(int,input().strip().split()))
“`簡単!記事にする必要あったかという疑問…
yukicoder contest 253 参戦記
# yukicoder contest 253 参戦記
## [A 1081 和の和](https://yukicoder.me/problems/no/1081)
結論的に ∑Ni=1 N-1Ci-1Ai になる. N≤100 なのでパスカルの三角形でも解けるだろうけど、めんどくさいのでいつもの mcomb を貼った.
“`python
N = int(input())
A = list(map(int, input().split()))m = 1000000007
fac = [0] * N
fac[0] = 1
for i in range(N – 1):
fac[i + 1] = fac[i] * (i + 1) % mdef mcomb(n, k):
if n == 0 and k == 0:
return 1
if n < k or k < 0: return 0 retu
【強化学習】OpenAI Gym を Google Corab上で描画する方法 (2020.6版)
# 0. はじめに
[Google Colab](https://colab.research.google.com/)上で[OpenAI Gym](https://github.com/openai/gym) を描画する方法を調べたのでメモ。
参考にしたサイト群
* [ColaboratoryでOpenAI gym](http://bcl.sci.yamaguchi-u.ac.jp/~jun/home/180828-openai-colaboratory/)
* [ChainerRL を Colaboratory で動かす](https://qiita.com/ikeyasu/items/ec3c88ce13a2d5e41f26)
* [OpenAI GymをJupyter notebookで動かすときの注意点一覧](https://qiita.com/mittyantest/items/2ea07b0f8d5976f29da9)
* [How to run OpenAI Gym .render() over a server](https://stackoverflow.co
Tacotron2で始める日本語音声合成
#はじめに
最も気になるのはやはりどの程度のものができるのかだと思うので、まずは[こちら](https://drive.google.com/file/d/1rvO55iqeGkpOu3Of5mrfy8uHJhnvS1f-/view?usp=sharing)をお聞きください。このモデルは
– pre-trained model を使用した転移学習
– 約一時間の前処理済みのデータ
– WaveGlow (published model)で学習、推論しています。
これから始める方の参考になるように私のやり方を紹介します。Tacotron2についてはこちらが参考になります。
[Tacotron2を用いた日本語TTS(Text-to-Speech)の研究・開発【まとめ】](https://qiita.com/yukari120/items/70cdea43743f4a35d85c)※デモを既に動かしていることを前提としています。
#用意するもの
##音声ファイル
– 22050Hz 16bit モノラル wav
– 音声区間毎に分割ノイズが多いもの、笑い声等の
Djangoのテンプレート内で定数を扱う
# はじめに
Djangoのテンプレート内でドメイン名やサイト名などの基本的に固定となる定数値を扱いたいとき、Context Processorという機能を利用して、都度ビュー側から定数を渡さずにテンプレート内から定数のように扱うことができます。
## 環境
– Django 2.2# Context Processor とは
Context Processorはビューからテンプレートへコンテキストオブジェクトを渡す際に変数を追加する処理を記述できる関数です。
テンプレート内で利用する`csrf_token`等がこの仕組みで実装されています。## Context Processor の作成
Context Processorは`HTTP Request`オブジェクトを引数として、辞書型のオブジェクトを返す関数として定義します。
関数の名前は任意の名前で作成し、ファイルはアプリケーションのディレクトリ配下等に作成します。
“`python:hogeapp/context_processors.py
def my_context_processor(req):
csvデータを取り出し、計算する
## csvデータを取り扱う
データ分析をするとき、cvsデータの扱い方を毎回忘れてしまうので、メモとしてまとめておきたいと思います。
## csvを読み込む
“`python
import pandas as pd
pd.read_csv(‘data.csv’)
“`
`UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x8e in position 0: invalid start byte`とエラーが出てきてしまいました。“`python
pd.read_csv(‘data.csv’ , encoding=’cp932′)
“`
`encoding=’cp932’`を後ろに付けたらちゃんと表示されました。## csvデータから列・行を取り出す
csvから1行または1列だけデータを取得“`python
df = pd.read_csv(‘data.csv’ , encoding=’cp932′)df.iloc[0,:] #1行目すべてのデータを取り出す
df.iloc[:,2] #3列目すべ
ゼロから始めるLeetCode Day61「7. Reverse Integer」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
[光-Hikari-のPython]<補足>06章-05 関数(引数と戻り値4)
#[Python]<補足>06章-05 引数と戻り値4
[06章-04](https://qiita.com/ko0821/items/0b40411b66ff944c6e2e)で関数における引数がリストだった場合について説明しました。そのほかのデータ構造である、タプルやディクショナリを引数として受け取るもできます。今回はタプルとディクショナリを引数として受け取ることについて取り扱いたいと思います。
なお、この節は<補足>としていますので、時間のない方は読み飛ばしていただいても構いません。なお、基本情報技術者試験では今後タプルやディクショナリの引数の扱いをするといった問題も出題されることが予測されるため、目を通しておきましょう。
##任意の数の引数~タプルで受け取る~
関数を呼び出す際に、実引数と仮引数の数は以下のプログラムのように一致させないといけません。chap06の中に、samp06-05-01.pyというフ
コスパ最強IoT家電!TPLink製品をRaspberryPiから操作
#TPLinkとは?
ルータを主力とする中国・深圳のネットワーク機器メーカーです。
近年はスマート電球、スマートプラグ等のIoT家電に力を入れており、コスパの良さからAmazonで独自の地位を築いています。![plug.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/f819958a-fe07-5072-c935-9da3dbc1568d.jpeg)
[スマートプラグのHS105](https://www.amazon.co.jp/Alexa%E8%AA%8D%E5%AE%9A%E5%8F%96%E5%BE%97%E8%A3%BD%E5%93%81%E3%80%91-%E7%9B%B4%E5%B7%AE%E3%81%97%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%B3%E3%83%88-Google%E3%83%9B%E3%83%BC%E3%83%A0%E5%AF%BE%E5%BF%9C-%E9%9F%B3%E5%A3%B0%E3%82%