- 1. paiza「十億連勝 (paizaランク S 相当) 」をpython3で解いてみた
- 2. Bash シェルスクリプト+ cURL+ Python3 標準モジュールで作る Webex bot 用 Zabbix Alert Script
- 3. Python関係のググり方Tips集
- 4. tkinterで表・ボタン・時間表示
- 5. AOJトライに関する知識知見の記録共有:Volume0-0054
- 6. [npsocket] 画像のような大規模データを容易にpython通信処理する
- 7. kivyMDチュートリアル其の肆什参 Behaviors – Elevation篇
- 8. 【Python3】Base64を用いた符号化の復習
- 9. Windows10 で GWSL を利用して Opencv を利用する
- 10. Python 辞書
- 11. Python タプル
- 12. PythonでTLE, MLEが出たときに試すといいこと
- 13. プログラミング学習Ⅱ Day1
- 14. Python3でCGIチャレンジ4 dictionary型でファイル読み書き
- 15. 初心者による初心者のためのPython
- 16. Python3でCGIチャレンジ3 ファイル読み込み
- 17. Python3でCGIチャレンジ2 ファイル書き込み
- 18. Python3でCGIチャレンジ1 フォーム送信
- 19. Zabbix API+Python3 で複数ホストのデータを一括取得!
- 20. とあるゲームにてバトルが始まるときのフェードアウト表現(黒い線が画面を回りながら暗転する)を簡易実装してみた
paiza「十億連勝 (paizaランク S 相当) 」をpython3で解いてみた
# 初めに
paizaの「[十億連勝 (paizaランク S 相当)](https://paiza.jp/works/mondai/real_event/continuous_winning)」を、python3で解いてみた。というよりも、解けなかったので、「解説を見てコードを考えた」というのが正しいかも。# 方針
解説を、自分なりに解釈したものです。– 帰納的に、i – 1 番目のステージまでの組み合わせの数から、i 番目のステージまでの組み合わせの数を求める。
– 各ステージ終了時に出現する状態を表すために、
– ステージ終了時点での連勝数 w と過去に X 連勝したことがあるかの真偽値 b の組 (w, b) を利用する。
– ステージ終了時点での各状態の組み合わせの数 c を dict で保存する。
– 組は、dict のキーにするために、hashable な tuple で表す。
– 初期状態は、(0, False) で表せて、組み合わせの数は 1 である。
– i – 1 番目のステージ終了時の状態の1つが (w, b) で組み合わせの数が
Bash シェルスクリプト+ cURL+ Python3 標準モジュールで作る Webex bot 用 Zabbix Alert Script
この記事はシスコの有志による Webex Advent Calendar 2021 の 5 日目として投稿しています。
Webex Advent Calendar 2021: https://qiita.com/advent-calendar/2021/webex# はじめに
今回は Bash シェルスクリプト、cURL および Python3 の標準モジュールで、Webex bot 用 Zabbix Alert Script を作ってみたので紹介します。Bash シェルスクリプト+cURL または Python3、どちらかだけでも実現できそうですが、下記の理由から組み合わせることにしました。* Bash スクリプト+cURL だけで作成した場合、Webex bot に投げる body の JSON 作成が大変(Python の方が文字列処理が楽)
* Python だけの場合、Webex bot に POST するために requests モジュールなど非標準モジュールが必要になる(Zabbix サーバに追加のインストールをしたくない)上記の理由から、おそらく Zabbi
Python関係のググり方Tips集
# はじめに
2021年現在、**Python**は新たなライブラリや機能が盛んに開発されている言語であり、知識のアップデートや問題解決のために**「ググる」頻度が高い**と想定されますそこで今回、Python関係でGoogle検索する際に**意識すると検索効率が上がるTips集**を、記事にまとめてみました
# ググるときの流れ
一般的には、以下の流れでググるかと思います。
1. ググるためのワードを考える
2. グーグル検索を実行し、検索結果から適切なサイトを選択する# 1. ググるためのワードを考える
まず、Python関係で検索が必要となる事態には以下のようなパターンが多いかと思います。
A. あるライブラリの使い方や機能がが分からないので、使い方を調べたい
B. コード実行中にエラーが発生したので、解決策を調べたいそれぞれ、検索ワード
## A. あるライブラリの使い方や機能を調べたい
Pythonは様々なライブラリを組み合わせて使用することが多いため、未知のライブラリ使用時に、使用法をGoogleで検索することが多いかと思います。私の経験上、調べたい
tkinterで表・ボタン・時間表示
#はじめに + tkinterとは
ロボットを操作する際に色んな環境と競合せず,簡単に使用できるpythonのためのGUIライブラリはないかなーとなったときにtkinterを発見しました.ボタンやラベルを使って比較的簡単にUIを作ることができます.[参考]tkinter
https://docs.python.org/ja/3/library/tkinter.html
[参考]python用のGUIインターフェース一覧
https://www.simugrammer.com/python_gui_matome/ちなみにpythonにはどうやらたくさんGUIを作れるライブラリがあるっぽいです.
正直,比較していないので特にtkinterが良い理由はないです(笑),,,その中で今回はロボットのような状態を命令したり表示したりすることが求められる際に利用できる書き方を以下に示したいと思います.
tkinterを使って何か操作したり表示させたい場合はぜひ参考にしてください.
ただ長らくお世話になっている先人たちが丁寧に説明してくださっているので,ここでは割愛してコメントのみ記載して
AOJトライに関する知識知見の記録共有:Volume0-0054
# タスク概要
Sum of Nth decimal places
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0054
# コード実装例
TIPS1. 例外処理含む評価パターンを追加
1. 素数5に着目し高速化“`Python
import pprint, sys, time
import sympydef core(arg, acc=True):
if acc:
prime_factors = {n: sympy.factorint(n) for n in range(2, arg) if n % 5 == 0}
ret = [sum([prime_factors[v][5] for v in prime_factors if 5 in prime_factors[v]])]
else:
prime_factors = {n: sympy.factorint(n) for n in range(2, arg)}
[npsocket] 画像のような大規模データを容易にpython通信処理する
#はじめに.socket通信とは?
「TCP/IPのソケット通信」を簡単にする手法を紹介します.
そもそもsocket通信とは,主にプログラム部とTCP/IP部をつなぐ特別な出入り口のことを意味し,TCP/IPのトランスポート層を指す.まあ単純にいうと,同じネットワーク下にある複数のパソコンのデータの共有をする手法です.ちなみに私は大学院時代にAIロボット系のことをやっていたのですが、その時使用していたロボットのメモリが少なすぎたか私の技量が足りなすぎたか(笑)で,tensorflowの環境をロボット付属のメモリに格納できませんでした.そこでロボットのPCと高性能PCをEthernetハブで通信接続することで,画像とロボット情報の処理を送受信できるようにすることを試みました.その時に使用したのがsocket通信であり,それを**python(numpy)**で容易にしたのが**npsocket**というモジュールです.gitに天才様が作ってくださったこれがなければ私は卒業できませんでした笑
とりあえず
[今回紹介:npsocketのURL]
https://github.com/
kivyMDチュートリアル其の肆什参 Behaviors – Elevation篇
年もおしせまり、何かと忙しい頃となりました。
>linked by 手紙の書き方 > 手紙の基本 > 時候の挨拶さて今年も残り1ヶ月を切りましたが、いかがお過ごしでしょうか。
忙しい時期にはなると思うのですが、小生、残念ながら年末に忙しくなるという
境遇に至ったことがありません。。なので、この時期がなぜ忙しいのかだとか、どの業界などがどういう風に忙しい
のかなど分からずここまでやってきました。自分の組織ではこういう理由で忙し
いんだよ!というようなコメントを頂けるととても嬉しいです。前置きを一旦を置いておいて、今週はというとBehaviors章の2回目となります。
今日は今までよく出てきたElevationを取り扱おうと思います。それでは参ります。
※先に言っておくとElevation篇は2週連続としたいと思います## Elevation
冒頭は丁寧に始めていますが、いつものごとくマテリアルデザインのリンクは
ぶっきらぼうにス
【Python3】Base64を用いた符号化の復習
Base64によるテキストデータと画像ファイルの符号化の復習です。
#1.基本
最も単純なもの。コード内で定義された文字列の符号化/復号の確認。“`python:b64_1.py
import base64plaintext = ‘base64’
b64_text = base64.b64encode(plaintext.encode())
print(b64_text)plaintext = base64.b64decode(b64_text).decode()
print(plaintext)
“`
- b64encode()の引数はbytes型であるため、encode()による変換が必要。
- b64decode()の返り値はbytes型であるため、decode()によってstr型に変換。
b64_1.pyの実行結果は以下の通り。
“`
b’YmFzZTY0′
base64
“`#2.テキストファイルの読み込み
テキストファイルに書かれた文字列の符号化と、テキストファイルに書かれた符号化文字列の復
Windows10 で GWSL を利用して Opencv を利用する
## 経緯
– WSL で、Python の画像処理ライブラリ Opencv を利用する際にそのままだと GUI が準備されていない為、画像を表示させらずに処理が止まってしまいました。
– Windows11 から利用できる WSLg に Update すれば問題なさそうのですが、利用している PC でインターネットバンキングなど、まだ動作確認がとれていないものがあり、もし何かあれば仕事に支障をきたす為、Windows11 に未だバージョンアップしたくない、とう状況でした。上記の理由から、Windows10 の WSL でも GUI を動かして Opencv を利用する必要がでてきました。
## 解決策
Microsoft store にある「GWSL」を利用して解決しました。## GWSL とは
GWSLは、Microsoft store から Install できる WSL 用の X Window システムです。
Linux のデスクトップアプリが Windows のデスクトップに表示できるようになります。ターミナル画面では、画像や PDF ファイルの表示ができないの
Python 辞書
#はじめに
基礎から定着させていこうということで辞書についてまとめました。
Python 3.8.2#辞書の作成
“`python:dict.py
d = {“x”:1,”y”:2}
print(“d is”,type(d))
print(d)d2 = dict(x=10,y=20)
print(“d2 is”,type(d2))
print(d2)d3 = {“x”:”hello”,”y”:”world”}
print(“d3 is”,type(d3))
print(d3)
“`“`:出力結果
d is
{‘x’: 1, ‘y’: 2}
d2 is
{‘x’: 10, ‘y’: 20}
d3 is
{‘x’: ‘hello’, ‘y’: ‘world’}
“`#辞書の書き換え、追加
“`python:dict.py
d = {“x”:1,”y”:2}d[“x”] = 11
print(d)d[“y”] = “yyy”
print(d)d[“z”] = 3
Python タプル
#はじめに
基礎から定着させていこうということでタプルについてまとめました。
Python 3.8.2#タプルの作成
“`python:tuple.py
t = (1,2,3,4,5)print(“t is”,type(t))
print(t)
“`“`:出力結果
t is
(1, 2, 3, 4, 5)
“`要素が一つでもタプルは作成できるが、「,」を忘れずに
“`python:tuple.py
t1 = (1,)
t2 = 1,print(“t1 is”,type(t1))
print(t1)
print(“t2 is”,type(t2))
print(t2)
“`“`:出力結果
t1 is
(1,)
t2 is
(1,)
“`#タプルの要素の追加
“`python:tuple.py
t = (1,2,3,4,5)
print(t[0])
t[0] = 10
“`タプルに要素を追加しようとするとエラーが発生する
“`:出力結果
1
PythonでTLE, MLEが出たときに試すといいこと
##環境
[AtCoderコードテスト](https://atcoder.jp/contests/apg4b/custom_test “AtCoderコードテスト”)
Python 3.8.2
PyPy 3.7.0
Cython 0.29.16##この記事について
競技プログラミングをPython3でやっている際にTLE, MLEが出たときの対処法を、あまり見かけない情報に絞って書き連ねていきます。※計算量改善ではなく、定数倍高速化についての記事です
本記事内でのそれぞれの言語のバージョンは、「環境」で示したものとし、以降バージョンは省略させていただきます。
本記事内では、「環境」で示した3つの言語の総称として”3言語”という言葉を使用いたします。
実行は全てAtCoderコードテストで行っています。
細かい仕様などに触れた記事ではありません。チートシートの様な使い方をしていただけたら幸いです、##3言語のうちどれを使えばいいのか?
この3言語は、それぞれ特徴があります。この後にある程度の紹介・比較はしますが、基本的にはPyPyを使用することをお勧めいたします。##PyPy
プログラミング学習Ⅱ Day1
– aaa
# クラス
– オブジェクトを定義する機能をクラスという
– クラスから作成されたオブジェクトをインスタンスという
– クラス内で関数を定義するとそれはメソッド。”.”で表現する
– l.append()もメソッド
– クラスとインスタンスは別
– クラスは定義をするだけ
– 中身ができたものがインスタンス“`python
class クラス名:
ブロック
“`
Python3でCGIチャレンジ4 dictionary型でファイル読み書き
#作業フォルダ
ps4#作業
##index.htmlの作成
“`html:index.html
“`##cgi-binフォルダの作成
##dictWrite.pyの作成。cgi-bin配下に
初心者による初心者のためのPython
#はじめに
今回2回目の投稿ですが最近授業でやっているPythonについて書こうと思いました。Pythonは10月くらいに始めたばかりでまだまだ初心者です。ちょっとずつやっていく中で「これよく見るな〜」と思った関数について書いていこうと思います。pythonのバージョンは3.8.8です。
#print()
print()はよく使う関数です。“`halloworld.py
print(“Hallo World”)
print(20)
“`
画面に文字列や数値などを表示させたいときに使います。
#input()
これはキーボードからの入力を受け付ける関数です。“`name.py
name=input(“名前を入力してください”)
print(name)
“`
「名前を入力してください」など入力して欲しい内容を指示する文も書くこともできます。
#str()とint()
“`year.py
year=19
print(“私の年齢は”+str(year)+”です。”)
“`
“`count.py
count=input(“何個ですか?”)
print(“個数は”+str(1
Python3でCGIチャレンジ3 ファイル読み込み
#前提
Python3でCGIチャレンジ2後#作業フォルダ
ps1#作業
##index.htmlを修正。
“`html:index.html
“`##readFile.pyを作成。cgi-
Python3でCGIチャレンジ2 ファイル書き込み
#前提
Python3でCGIチャレンジ1後#作業フォルダ
ps1#作業
##sample.pyを修正。
“`python:sample.py
import cgi
import cgitb
cgitb.enable()print(“Content-Type: text/html”)
print()form = cgi.FieldStorage()
f = open(‘file.txt’, ‘a’, encoding=’UTF-8′) # add
for key in form:
value = form[key].value
print(‘%s: %s
‘ % (key, value))
f.write(‘%s: %s, ‘ % (key, value)) # addf.write(‘\n’) # add
f.close() # add“`
##ターミナルでコマンド実行して、ローカルでCGIサーバーを起動する。
“`
python -m http.server
Python3でCGIチャレンジ1 フォーム送信
#はじめに
学んだことをもう一回調べ直さなくて済むよう記録することにした。
#前提
– VisualStudioCodeがインストール済み
– Python3インストール済み参考までに現在のVisualStudioCodeのバージョンは、1.62.3。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401158/5fbb317f-b7c9-a8ec-e7a5-0a93b03f7a11.png)#下準備
VisualStudioCodeのファイルからフォルダーを開くで、サンプル用の作業フォルダを作成する。
適当にps1(PythonSample1の意)で作成。#作業
##index.htmlを作成する。
“`html:index.html
Zabbix API+Python3 で複数ホストのデータを一括取得!
この記事はシスコの有志による Cisco Systems Japan Advent Calendar 2021 (2枚目) の 3 日目として投稿しています。
2021年版(1枚目): https://qiita.com/advent-calendar/2021/cisco
2021年版(2枚目): https://qiita.com/advent-calendar/2021/cisco2 (これ)# はじめに
早いもので 2021 年も年末になりました。一年の締めくくりに、今年のデータ集計などを実施される方もおられるかと思います。Zabbix ではグラフを用いて集計をすることができますが、ホスト数が多いと大変です。そこで、Python3 で Zabbix API を利用し、複数ホストに対してデータを一括取得する簡易スクリプトを作成したので紹介します。ここでは最大トラフィック値を集計してみます。### 動作結果(例)
“`
$ ./zabbixAPI.py=== 一括取得スクリプト(期間:2021-10-01〜2021-10-31)===
ホスト名, アイテム名,
とあるゲームにてバトルが始まるときのフェードアウト表現(黒い線が画面を回りながら暗転する)を簡易実装してみた
## 概要
とあるゲームにてバトルが始まるときのフェードアウト表現(黒い線が画面を回りながら暗転する)をどう実装すればいいのか考えて簡易的に実装してみましたという記事です。以下のようなものです。
![effect.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/426956b3-1df9-40de-4b7b-345a313714b8.gif)# 実装
ubuntu18.04環境で、python3, pyqt5を使用しました。### インストール
“`
# pyqt5 install
pip3 install pyqt5
“`### 処理
以下の2stepです
“`
– step1. コマンド実行時点のスクリーンショットを撮る
– step2. 黒色のブロックをpyqt5で順番に表示
“`### step1. コマンド実行時点のスクリーンショットを撮る
“`
# スクリーンショット
gnome-screenshot -f test.png
“`###