- 1. Windowsで通知を出す神パッケージ「zroya」を見つけた話
- 2. Pythonのturtleでマウスクリックしたところに亀を移動させる
- 3. Python の起動方法による sys.path の違い (v3.8.2)
- 4. Pythonで「大石泉すき」を何回で揃えられるかゲームをつくる
- 5. Python 3.8 スライス関係の覚書き
- 6. (Python) ABC162-D 考察ログと解法
- 7. TypeError: __init__() got an unexpected keyword argument ‘status’の対処方法
- 8. Atcoder ABC160 A-EをPython3で
- 9. jupyter-notebookでpython3が動かない
- 10. Pythonでひらがなをローマ字に変換する(ベータ版)
- 11. 【pythonクラス変数】qiitaの記事でデマを流していた件について
- 12. Atcoder ABC161 A-EをPython3で
- 13. 機械学習入門したけどやめたのでここにメモる
- 14. Atcoder ABC162 A-Dをpython3で
- 15. VQEをBlueqatで実装してみた
- 16. あとで後悔しないPythonのディレクトリ構成をつくってみる
- 17. 言語処理100本ノック 2020 第7章: 単語ベクトル
- 18. 言語処理100本ノック 2020 第8章: ニューラルネット
- 19. PythonのEnumを関数と紐付け、Callableにする
- 20. 【AtCoder】Pythonで緑ランクになるまでにやったこと
Windowsで通知を出す神パッケージ「zroya」を見つけた話
# Windowsで通知したい
監視アプリやトレイアプリで通知をしたいとき、丁度いいパッケージを見つけられませんでした
一応、[WinAPI](http://blog.sbfm.jp/archives/137)とか[Powershell](https://quzee.hatenablog.com/entry/2019/01/14/014959)とか使えば出来るんですが、[^1]– Python3で
– Windowsで
– Cpython・Powershellを使わずに
– Pythonのパッケージを使って
– 数行で
– トースト通知を出すという条件だと中々ヒットしないんです…
# そんな貴方にzroya!
悩むこと数ヶ月、ついに[zroya](https://malja.github.io/zroya/)というパッケージを見つけました
[WinToast](https://mohabouje.github.io/WinToast/)というC++ライブラリを使ってるみたいです
~~まぁ結局Cpython使ってるようですが、使いやすいならOKです~~# インストール
pi
Pythonのturtleでマウスクリックしたところに亀を移動させる
#Pythonのturtleでマウスクリックしたところに亀を移動させる
### 実行イメージ
### サンプルプログラム
“`python
import turtlekame = turtle.Turtle(“turtle”)
def moveKame(x, y):
kame.goto(x, y)kame.screen.onclick(moveKame)
turtle.done()
“`
### 解説
“`python
# turtleモジュールを読み込む
import turtle
“`“`python
# kameという名前の変数にturtleモジュールの中の亀(Turtle)を生成して格納する
kame
Python の起動方法による sys.path の違い (v3.8.2)
# 概要
Python のプログラム起動方法には何種類かあり、それによりモジュールの検索パスである `sys.path` の値が異なる。
## 参考文献
v3.8.2 版を閲覧
– Python のセットアップと利用, 1. コマンドラインと環境. https://docs.python.org/ja/3/using/cmdline.html
## 詳細
簡単に言うと
– ファイルなどを直接指定した場合はそれに関連するディレクトリが `sys.path` の先頭に来る
– `-m` でモジュールを指定した場合はカレントディレクトリが先頭要素になる
– いずれの場合でも、モジュール名は `”__main__”` という文字列である。まとめると以下の通り。ディレクトリ (パッケージ) や .zip ファイルを起動できることは著者は知らなかった。
| `python` の後の引数 | 実行されるもの | そのモジュール名 (`__name__`) | `sys.path` の先頭要素 |
|—————–|——————|—-
Pythonで「大石泉すき」を何回で揃えられるかゲームをつくる
#概要
[「大石泉すき」Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ohishi-izumi-suki)にて[Excel VBAでつくったもの](https://qiita.com/tsuru2_mitsuru/items/171386402987d87f8587)を、Pythonの勉強がてら焼き増ししただけのものです。“`py
import randomSTRING = ‘大石泉すき’
i = 0
output = ”n = len(STRING)
max = n – 1while output != STRING:
output = ”for _ in range(n):
location = random.randint(0, max)
output = output + STRING[location]print(output)
i += 1print(‘「{}」が揃うまで{}回かかりました。’.
Python 3.8 スライス関係の覚書き
#概要
Python 3.8のスライス操作`a[1:2:3]`、スライスクラス``、`__getitem__`メソッドに関する覚書きです。主な用語は公式ドキュメントの[6.3.3. スライス表記 (slicing)](https://docs.python.org/ja/3/reference/expressions.html#slicings)、[6.17. 演算子の優先順位](https://docs.python.org/ja/3/reference/expressions.html#operator-precedence)、[3.2. 標準型の階層](https://docs.python.org/ja/3/reference/expressions.html)に従っています。 # スライス操作
`x[1:2]`のような表現をスライス表記、`[slice_list]`の手前への適用をスライス操作と呼びます([6.17. 演算子の優先順位](https://docs.python.org/ja/3/reference/expressions.htm
(Python) ABC162-D 考察ログと解法
[ABC162](https://atcoder.jp/contests/abc162) に(バーチャル)参加しました。
D問題が面白かったので初めての解説記事を書きます!![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155933/febfd5fc-ca05-0827-eb9e-e89b13037c28.png)
綺麗な解説ではなく、その時思ったことを垂れ流すように書いてみました。
なお解いている様子は [YouTube](https://www.youtube.com/watch?v=d2Ha71q17_c) に動画があります。
# 問題
[D – RGB Triplets](https://atcoder.jp/contests/abc162/tasks/abc162_d)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155933/ca95e703-afd6-85c5-a
TypeError: __init__() got an unexpected keyword argument ‘status’の対処方法
#はじめに
firebaseをpythonで使用する際、“`swift:エラー内容
TypeError: __init__() got an unexpected keyword argument ‘status’
“`
上記エラーに遭遇したため、解決方法を記録として残しておきます。#解決方法
下記コマンドは以下の通りです。“`python:解決方法
pip uninstall requests
pip install requests==2.23.0
pip install firebase_admin
“`
上記コマンドで解決できました。
2.23.0のところはrequestsの最新バージョンを指定してください。今回参考にしたGitHubの記事です。
より詳細に記載がりますので、よろしければご参照ください。
https://github.com/firebase/firebase-admin-python/issues/262ご参考になれば幸いです。
Atcoder ABC160 A-EをPython3で
#A Coffee
2文字目=3文字目かつ4文字目=5文字目ならYes、それ以外はNo“`ABC160a.py
s=input()if s[2]==s[3]:
if s[4]==s[5]:
print(“Yes”)
exit()
print(“No”)
“`#B Golden Coins
貨幣価値の高いものから順に入れていけばOK。[AOJの問題](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DPL_1_A&lang=jp)みたいにうまくいかないパターンかなと思ったら違った。“`ABC160b.py
n=int(input())a=n//500
b=(n%500)//5print(1000*a+5*b)
“`#C Traveling Salesman
終点と始点区間を含む$n$区間のうち、最も距離の長い区間を除いた和を出力する“`ABC160c.py
k,n=map(int,input().split())
a=list(map(int
jupyter-notebookでpython3が動かない
# jupyter-notebook起動
ターミナルで
“`
jupyter notebook
“`jupyter-notebookを開き、new→python3で新たにファイルを開いた。
“`py
print(‘python’)
“`を入力しても反応がなく出力されない
# ターミナルエラー確認
“`
ImportError: cannot import name ‘create_prompt_application’
“`
`create_prompt_application`を検索すると下記の記事を見つけた。[jupyterが動作しなかった時の対応メモ](https://qiita.com/aj1m0n/items/a4cd872fc60c51305acd)
調べていると上記エラー以外にも、jupyter-notebookが動かないエラーは様々あるみたいです。
# 解決法
一旦 jupyter-notebook を起動しているターミナルを control + C で閉じ、prompt-toolkitをインストール
“`
pip inst
Pythonでひらがなをローマ字に変換する(ベータ版)
## 最初に
PyKakasiという日本語→ローマ字変換モジュールがあるので、忙しい方はそちらの導入をオススメします。– 自分で書いてみたい!
– モジュール使うほどのものではない
– 後々自分でカスタムしたいという方向けの記事です。
## 開発環境
– Python 3.7.3## コード
“`python:chars_dict.py
hiragana = {# vowel
‘あ’: ‘a’,
‘い’: ‘i’,
‘う’: ‘u’,
‘え’: ‘e’,
‘お’: ‘o’,# consonant K
‘か’: ‘ka’,
‘き’: ‘ki’,
‘く’: ‘ku’,
‘け’: ‘ke’,
‘こ’: ‘ko’,# consonant K”
‘が’: ‘ga’,
‘ぎ’: ‘gi’,
‘ぐ’: ‘gu’,
‘げ’: ‘ge’,
‘ご’: ‘go’,…
}
“`
“`python:main
【pythonクラス変数】qiitaの記事でデマを流していた件について
# はじめに
先日、自分のために書いたメモをちょっと整形して[qiitaの記事](https://qiita.com/basashi/items/69fee6df0f23f140e91c)にして投稿したところ、[@shiracamus](https://qiita.com/shiracamus)さんからのコメントで、ちょこちょこ勘違いをしているしていることが判明したため、反省を含め、インスタンスやクラス周りの勘違いしていたところをまとめました。
**勘違い集なので、正しいのは題名の否定です(笑)**
間違いを指摘してくださった[@shiracamus](https://qiita.com/shiracamus)さん、ありがとうございました。
# 第一の勘違い: クラスはオブジェクトじゃない
Javaの入門書読んだときの「型がクラスで、その型から作られたものがインスタンス」という記憶につられて、「インスタンスはクラスから作られたオブジェクト!!、クラスはオブジェクトじゃない!!」という思い込みをしていたのでありました。
“`python
class hoge:
pa
Atcoder ABC161 A-EをPython3で
#A ABC Swap
Swapを2回行った結果は$(a,b,c) => (c,a,b)$なので、それを出力する。“`abc161a.py
a,b,c=map(int,input().split())print(c,a,b)
“`#B Popular Vote
問題文の通りに実装するだけ・・と思ったら以下のコードでWAが出た。“`abc161b_WA.py
n,m=map(int,input().split())l=list(map(int,input().split()))
s=sum(l)
ans=0
t=s/(4*m)
for i in l:
if i>t:
ans+=1
if ans>=m: print(“Yes”)
else: print(“No”)
“`~~判定条件をi>tからi>=math.ceil(t)に変えたら通った。math.ceil(t)>t>math.floor(t)のはずなので結果は変わりないはずなんだけど・・未だに謎。~~
(4/13/2020追記:コメントいただいた通り、t=iのケースが抜けてました。
機械学習入門したけどやめたのでここにメモる
#概要
pythonを用いた機械学習を入りだけ学ぶ機会があったので、かじってはみたが、コロナの影響で通っていたスクールが中止に。。
大雑把でランダムではあるが、学んだことを記録として残させてもらいます。##機械学習とは
主にコンピュータなどに学習(ルールを学ばせる)させ、学習したことに基づいて処理(判別や予測)をさせる事。##scikit-learn
pythonの機械学習ライブラリ。機械学習のアルゴリズムが多く実装されている。
初学者が学ぶには最適なライブラリ。##Numpy
pythonの計算パッケージ。高等数学の計算を容易に行うことができる。構文例
“`
import numpys as np
numpy.zeros(dtype=None) #メモリの割り当て“`
##グラフ化
import matplotlib.pyplotモジュール
機械学習などにおいて、グラフを描写するためのモジュール構文例
“`
import matplotlib.pyplotmatplotlib.pyplot.scatter(データ1,データ2, s=サ
Atcoder ABC162 A-Dをpython3で
A-Dまでの備忘録
#A Lucky7
for文使ったけどif inでもよかった。“`abc162a.py
a=list(input())
for i in a:
if i==’7′:
print(“Yes”)
exit()
print(“No”)
“`
if inの場合“`abc162a_2.py
a=input()
if ‘7’ in a:
print(“Yes”)
else:
print(“No”)
“`#B Fizzbuzz Sum
Fizzbuzzの出力は無視して、3でも5でも割り切れない数を足していくだけ“`abc162b.py
n=int(input())
a=0
for i in range(n+1):
if i%3!=0 and i%5!=0:
a+=i
print(a)
“`
#C Sum of gcd of Tuples (Easy)
今回からpython3のバージョンが上がったのでmath.gcdが使えるようになりました。
$gcd(a,b,c)=gcd
VQEをBlueqatで実装してみた
NISQ時代はVQEがくるんじゃない?(ホントにくるのかな・・・?)って事で、簡単な問題をBlueqatで実装してみた。なお今回はプログラム動作確認という意味で、トリビアルな組み合わせ最適化問題を解いてみる。
## 今回解いた問題
以下のハミルトニアン$H$が最小となる$q(0)$、$q(1)$の組み合わせを解く。
$$
H = 1 – q(0) – q(1)
$$
なお、$q(0)$、$q(1)$は0もしくは1のどちらかの値となる。この問題設定では、$q(0)=q(1)=1$のときハミルトニアン$H=-1$で最小の値をとる。## 補足情報
ちなみに、すべての$q(0), q(1)$の組み合わせについてハミルトニアンは以下の値をとる。– $q(0)=0,q(1)=0 \rightarrow H = 1$
– $q(0)=0,q(1)=1 \rightarrow H = 0$
– $q(0)=1,q(1)=0 \rightarrow H = 0$
– **$q(0)=1,q(1)=1 \rightarrow H = -1$**## ソースコード
“`python
あとで後悔しないPythonのディレクトリ構成をつくってみる
Pythonでプログラミングをはじめて少し経ち、ディレクトリ構成について理解したことがあったのでまとめておきます。
最初はまったくわからず、かなりググりながら進めていたので、初心者でもわかるようにステップだてて執筆してみました。なお以下はPythonでの開発を半年ぐらいやったエンジニアによるメモです。
**よりベターな方法のご教示やご提案、初心者の方からの質問など、ぜひたくさんいただければ嬉しく思います。**## はじめに
Pythonを触った当初は、とりあえず hoge.py にたくさんメソッドを書き、そのうちファイルが複数になり、ディレクトリが増えていきました。
しかしこのようにすると自作プログラムの中の依存関係の解決に失敗したり、どんどん訳の分からない構成になってしまい、あとで正すことも難しく感じました。そのためよっぽど緊急なプログラミングでないかぎりは、最初に**「ライブラリ化しやすいようにディレクトリ、ファイルを準備する」**ことが重要かと思っています。
そのテンプレートを、本記事でつくってみます。## まずはsetup.pyから書いてみる
まずプロジェ
言語処理100本ノック 2020 第7章: 単語ベクトル
先日,[言語処理100本ノック2020](https://nlp100.github.io/ja/)が公開されました.私自身,自然言語処理を初めてから1年しか経っておらず,細かいことはよくわかっていませんが,技術力向上のために全ての問題を解いて公開していこうと思います.
すべてjupyter notebook上で実行するものとし,問題文の制約は都合よく破っていいものとします.
ソースコードはgithubにもあります.[あります](https://github.com/nymwa/nlp100/blob/master/chapter07.ipynb).6章は[こちら](https://qiita.com/nymwa/items/774ca6c542c1eaff160d).
環境はPython3.8.2とUbuntu18.04です.
#第7章: 単語ベクトル
> 単語の意味を実ベクトルで表現する単語ベクトル(単語埋め込み)に関して,以下の処理を行うプログラムを作成せよ.必要なデータセットは[ここ](https://nlp100.github.io/ja/ch07.html)か
言語処理100本ノック 2020 第8章: ニューラルネット
先日,[言語処理100本ノック2020](https://nlp100.github.io/ja/)が公開されました.私自身,自然言語処理を初めてから1年しか経っておらず,細かいことはよくわかっていませんが,技術力向上のために全ての問題を解いて公開していこうと思います.
すべてjupyter notebook上で実行するものとし,問題文の制約は都合よく破っていいものとします.
ソースコードはgithubにもあります.[あります](https://github.com/nymwa/nlp100/blob/master/chapter08.ipynb).7章は[こちら](https://qiita.com/nymwa/items/9963968568b9dbfc2e78).
環境はPython3.8.2とUbuntu18.04です.
# 第8章: ニューラルネット
> 第6章で取り組んだニュース記事のカテゴリ分類を題材として,ニューラルネットワークでカテゴリ分類モデルを実装する.なお,この章ではPyTorch, TensorFlow, Chainerなどの機械学習プラットフォーム
PythonのEnumを関数と紐付け、Callableにする
いくつかの選択肢からアルゴリズムを選ばせるような時、列挙型の各値に関数を紐づけたいことがある。
Javaなら列挙型の各値にメソッドを設定できるのだが、Pythonではできない。Enum自体をCallableにする方向性で、なんとかキレイな書き方がないか考えてみる。
## 値はどうでもいい場合
PythonのEnumは値を自由に設定できる。だから値そのものを関数にしてしまえばいい。
だがEnumを継承したクラスの中で定義された関数はメソッドと判断され、列挙される値に含まれなくなってしまう。
“`python
class Dame(Enum):
# 値を定義したことにならず、メソッドを定義したことになる
A = lambda: print(“A”)list(Dame)
# 空リスト
“`そこで、[このstackoverflowのアイデア](https://stackoverflow.com/questions/31907060/python-3-enums-with-function-values)を借りて、関数が含まれるタプルを値に使うことにする。
【AtCoder】Pythonで緑ランクになるまでにやったこと
つい最近AtCoderで緑ランクになった者です。
今回は、個人的にどんなことをやってきたか、どんなことに注意しているかをまとめました。
# 緑ランクになるには
緑ランクになるには次のようなことが必要だと考えています。
– C問題までを15分以内に解く(**3完15分**)
– D問題を制限時間以内に解く(**4完100分**)極論、D問題が解けなくても緑ランクに行くことは可能だと思ってます(時間はかかりそうですが)。
参考までに、僕が最近バーチャル参加したコンテストの結果を以下の表にまとめておきます。
| コンテスト名 | 結果 | レーティング※ |
|:—————-:|:———:|:————-