- 1. Pythonによるコレクションの前処理: 組み合わせ
- 2. argparseのhelpに “%” を含めると死ぬ
- 3. PythonでGoogle画像検索をして画像をフォルダに保存する
- 4. 【PyQt】Qt Designerで作った画面にQMLを埋め込み、valueをセット
- 5. OpenCVの画像をPygameで描画する方法
- 6. 競馬サイトをクローリング&スクレイピングしてみた その2
- 7. 重複確認
- 8. Python で flatten
- 9. 価格あたりのカロリーが高い「マクドナルド(マック)」のハンバーガーランキングをpythonで集計してみた
- 10. 複数フォルダより複数枚の写真をグラフに描写する
- 11. 質問です/LambdaとTwitterApiを使ってBotを作ったのものの、30分毎のイベント発火がうまく作動しない
- 12. pythonのレスポンス指標ー時間操作編
- 13. 機械学習モデルの予測値を返すAPIをDockerで作ってみた
- 14. pythonでLinuxコマンド文字列を整形する汎用的なプログラム
- 15. AtCoder Grand Contest 040 参戦記
- 16. 中学校物理で始める数値計算(等加速度運動)
- 17. PythonでTwitterのプロフィールと直近のツイートを取得してみた
- 18. バブルソート
- 19. プログラミング初心者が最初に覚えるべきPythonの基本的な記述ルール
- 20. Pythonでスライド作成の自動化
Pythonによるコレクションの前処理: 組み合わせ
“`py
tests = [‘A,B,C’, ‘D,E’, ‘A,C,E’]
“`のようなデータがあったとき
これを要素別に
`’A,B,C’` -> `(‘A’,’B’),(‘A’,’C’),(‘B’,’C’)`
`’D,E’` -> `(‘D’,’E’)`
`’A,C,E’` -> `(‘A’,’C’),(‘A’,’E’),(‘C’,’E’)`
にしたい。つまり以下のようにしたい。
“`py
[(‘A’, ‘B’),
(‘A’, ‘C’),
(‘B’, ‘C’),
(‘D’, ‘E’),
(‘A’, ‘C’),
(‘A’, ‘E’),
(‘C’, ‘E’)]
“`要求を整理すると、`tests`の変数において、
1. 各要素を配列にする
2. 2つの組み合わせにするをする方法をまとめる。
一行で書くと以下のようになる
“`py
list(itertools.chain.from_iterable([tuple(itertools.combinations(tuple(i.split(“,”)), 2)) for i in tests
argparseのhelpに “%” を含めると死ぬ
下のようなPythonスクリプトを作ったとする。
“`python
import argparseparser = argparse.ArgumentParser(description=”)
parser.add_argument(‘–zoom’,
action=’store’,
type=float,
default=1.0,
help=”拡大率(%)”)
args = parser.parse_args()print(“zoom is {}”.format(args.zoom))
“`これは普通に実行できるが、
“`
$ python hoge.py –zoom 2.0
zoom is 2.0
“`ヘルプを表示しようとするとValueErrorが出てしまう。
“`
$ python hoge.py -h
Traceback (most recent call last):
File “hoge.py”, line 9, in
args = parser.parse_args()
PythonでGoogle画像検索をして画像をフォルダに保存する
こんにちは。
Pythonを使ってGoogle画像検索にアクセスして画像を取得してみました。
適当に書いて動かしているのでガバガバです。###最初に
まあ適当にデスクトップに “`image“`的なファイルを作成してターミナルを開きましょう。
“`
cd desktop/image
“`
して“`
vim image.py
“`
とでもしてプロジェクトを作成してください。
エディタがvimなのは僕の趣味です。言い忘れていましたが、これにはPython3と多少のモジュールが必要になるのでインストールしてください。
“`
pip3 install モジュール名
“`
すればインストールできるのでモジュールエラーがでたらやってみてください。####てことでコード書きます。
写経するなりコピペするなりしてください。
“`image.py
import requests
import random
import shutil
import bs4
import ssl
ssl._create_default_https_context = ssl._
【PyQt】Qt Designerで作った画面にQMLを埋め込み、valueをセット
# はじめに
普段ちょっとしたGUIを作るときに[PyQt](https://ja.wikipedia.org/wiki/PyQt)を使っているのですが、[QML](https://ja.wikipedia.org/wiki/QML)の表示やプロパティの変更に手こずったので、その備忘録です。
画面作成にはQtDesignerを使っています。QtDesignerの使い方は[こちら](https://qiita.com/grinpeaceman/items/54b439bfa52640c444e1)を参考に。# 環境
+ Windows 10
+ Qt Designer 5.11.1
+ Python 3.7.3
+ PyQt5 5.13.1# 作成したサンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404447/5b728ea7-59c3-4e94-4211-14e55678fa3c.png)+ボタンを押すとゲージの値が増え、-ボタンを押すと減るというものです。
OpenCVの画像をPygameで描画する方法
PythonでOpenCVを動かし、解析・加工した結果を表示したい場合、`cv2.imshow()`メソッドを使うのが一番簡単です。
しかし、ただ表示するだけ以上のことをしたい場合、OpenCVのウィンドウでは機能不足です。
このような問題を解決する方法の一つとして、PythonのGUIフレームワークであるPygameを使うやり方[^Pygameの選択理由]があります。
この投稿では、OpenCVの画像をPygame向けの画像に変換するやり方について書きます。[^Pygameの選択理由]: なぜPygameなのかといえば、Raspbian Liteでも描画できるからです(超重要)。ほとんどのGUIフレームワーク(OpenCVのウィンドウ機能を含む)はX Window Systemに依存しており、GUIが組み込まれていないRaspbian Liteでは表示できません。しかし、PygameにはSDLを使用して描画する機能も存在するため、Raspbian Liteでも動作します。
## 環境
- ハードウェア
- 競馬サイトをクローリング&スクレイピングしてみた その2
###はじめに
「Pythonクローリング&スクレイピング[増補改訂版]―データ収集・解析のための実践開発ガイドー」第3章までの知識を用いてオリジナルプログラムを作成する。今回はnetkeibaの競走馬検索機能の検索結果から個別ページのURLを取得し、そのURLにアクセスして各馬の情報を取得し、データベースに保存する、というプログラムを作成した。
###検索結果ページの構造
検索窓は基本netkeiba内の最上部にあるので割愛。
詳細検索機能では血統、毛色、表示順などいろいろな検索条件が指定できるが、
今回は検索窓を使用せず、[ディープインパクトの詳細ページ](https://db.netkeiba.com/horse/2002100816/)の繁殖成績欄から検索結果ページに飛んだ(この辺、のちに記述するJavaScript絡みと関係あり)
重複確認set型は重複を削除してくれることを利用する。
下記の例だとtest1-5の変数にそれぞれ何らかの値が入っている想定。
例えばtest1とtest4が全く同じ値の時とかに重複判定される。“`python:test.py
a = {test1, test2, test3, test4, test5}
b = [test1, test2, test3, test4, test5]
if len(a) != len(b):
print(‘重複あり’)
else:
print(‘重複無し’)
“`Python で flatten
# 環境
関数等は特に使わないのでなんでもよい.“`python3
import sys
print(sys.version)
# 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19)
# [GCC 7.2.0]
“`# Code
“`python3
nested = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]flatten = []
for inner in nested:
flatten += innerflatten
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
“`
価格あたりのカロリーが高い「マクドナルド(マック)」のハンバーガーランキングをpythonで集計してみた
[この記事](https://saltiga.hatenablog.com/entry/2019/11/04/151859)も参考にしてください。
## 目次
* [マクドナルド(マック)で一番「得」な商品の定義](#section1)
* [調査方法](#section2)
* [結果(値段あたりのカロリーランキング)](#section3)
* [結局、コスパ上位のハンバーガーは?](#section4)
* [まとめ](#section5)昼飯にとって最も重要なのは「コスパ」=「値段あたりのカロリー」です。
本当は小麦粉からすいとん等を作るのが一番ですが、外食を余儀なくされる機会も多いと思います。
代表的な良コスパ外食チェーン、「マクドナルド」でコスパの高い商品を調査してみました。
### 参考
* 価格あたりのカ
複数フォルダより複数枚の写真をグラフに描写する
##まぁ、タイトル通りなんですが…
写真AとBを比較しようと思ったら「あ、フォルダ分けしちゃった」に気づいた。
一つのフォルダから地道に写真見てフォルダ分けしたのに…
ってことがきっかけでやってみました。
ついでに画像加工した際に罠にかかったのでそれも一緒にいきます。##全然難しくなかったw
「コードの雰囲気的にココ増やせばよくね?」
的な感じで進めていったら出来てしまった。
相変わらず勉強しない男である。“`dog_and_cat.py
# Jupyter Notebookセルを全結合してみました
import os
import glob
import matplotlib.pyplot as plt
from PIL import Image
from google.colab import drive# GoogleDrive_Mount
drive.mount(‘/content/drive’)# データ格納フォルダを指定
input_dir=”/content/drive/My Drive/Colab Notebooks/test/Photos”
di
質問です/LambdaとTwitterApiを使ってBotを作ったのものの、30分毎のイベント発火がうまく作動しない
初心者です。
LambdaとTwitterApiを使って、Twitterにステイーブジョブスの名言を、30分毎にツイートする自動BOTと作成しました。
![001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/5de884a5-e6ff-648b-fcf3-3c15dfe830e6.jpeg)動作して、ちゃんとツイートもしたのですが、時間の間隔が常に30分毎ではなく、1時間間隔の時や、時には2時間おきの場合もあります。
![002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/bacff4d1-6dcd-d27b-f44f-cc0544141102.jpeg)Lamda側では、30分毎にイベントが発火しているようなのですが、何が原因かご教示いただきたいです。
![003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazona
pythonのレスポンス指標ー時間操作編
# この記事では.
ひよっこは、データを加工するときにどれが一番早く処理できるかが想像できない。。:frowning2:
初心者プログラマあるあるのとりあえず動くコード書いて終わるのと違い、レスポンスだけを指標にすれば(コードの可読性は無視、コメントで回避する)正解を探れるだけ良いので今回は時系列の操作を簡単にまとめます。# 検証方法
1年分の時系列データを準備して、datetimeをdateに変換する。(型は一時無視)
方法は以下の5通り(並びは私が早いと思う順)1. pandasの標準dtオブジェクト経由
2. pandasのapply経由
3. 文字列にして固定長で取り出す方法
4. loop処理経由pythonはインタプリタ言語でコンパイル言語より遅いからライブラリを経由しているのに、
わざわざloop処理を使うのは論外に遅いはず。
ライブラリを使っても型があるのを無視して固定長で取り出す方法も遅い、少なくとも型を守るものよりも遅いはず。
applyは汎用関数なので、元のdtオブジェクトを経由できる方法よりは遅い。という感じに考えています。:scales:# 検
機械学習モデルの予測値を返すAPIをDockerで作ってみた
# はじめに
Yellowbrickで精度を確認しつつ作った機械学習モデル[^1]を予測APIサーバのような形で活用してみたいと思い、Dockerで作ってみた。
Flaskについてはこちら[^2]、Dockerについてはこちら[^3]を参考にして、APIサーバーから応答が返ってくるところまでを目標にする。# 環境
環境は以下の通り。
“`
$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G8037
“`Dockerのインストールについては[^4]を参考にした。
ログが結構長かったので、一部省略。“`
$docker version
Client: Docker Engine – Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
(省略)
Server: Docker Engine – Community
Engine:
Vers
pythonでLinuxコマンド文字列を整形する汎用的なプログラム
# 背景
Linuxコマンドを用いて例えばCPU温度などを定期的にDBに追加しています。
この時にコードをなるべく少なくしようとコマンドだけで色々と調べたのですがなかなか難易度が高かったので作成しました。# 仕様
汎用的に利用できるようにしたいのでpythonのFormatのような動きを実現させたい。# コード
こうなりました。“`python
import sys;
print(sys.argv[1].format(*sys.argv[2].split(” “)) )
“`
* 第一引数:Formatの指定文字列
* 第二引数:空白で区切られたFormatに入れる文字列## 利用方法
“`sh
mosquitto_sub -t “#” -v |xargs -I@ python3 /home/hashito/command/text2format.py “insert into mqtt.msg (t,m,tm)values(\'{}\’,\'{}\’,UNIX_TIMESTAMP(NOW()))” @ | xargs -I@ mysql -e “@”
`
AtCoder Grand Contest 040 参戦記
# AtCoder Grand Contest 040 参戦記
## A – Dividing a String
25分で突破したが、WA1なので30分扱い.
`><` の間は0で、`<>` の間は、左右の0から1づつインクリメントしてきた大きい方なので、以下みたいに2パスでやれば解ける.
“`python
S = input()N = len(S) + 1
t = [0] * N
for i in range(N – 1):
if S[i] == ‘<': t[i + 1] = t[i] + 1 for i in range(N - 2, -1, -1): if S[i] == '>‘:
t[i] = max(t[i], t[i + 1] + 1)
print(sum(t))
“`## B – Two Contests
全く手付かずで敗退.
中学校物理で始める数値計算(等加速度運動)
# はじめに
数値計算は楽しいですが、若干敷居が高いように見えます。以前、数値計算の入門になればと思い、いくつか記事を書きましたが、そもそも電磁界が直感的に想像しにくいこともあり、簡単さが伝わりにくかったように思います。
>数値計算に親しむ(電磁気関連を3編)
https://qiita.com/sandshiP/items/f07f6c1443e024cb775a
https://qiita.com/sandshiP/items/27bc6ee6f079a88b0f08
https://qiita.com/sandshiP/items/2b8b10265d0c11597081そこで、今回は想像しやすい分野として、日常的な物理現象である『物体の落下』を対象として問題を説いていきたいと思います。
本記事の構成は、以下の通りとします。
1. 公式の整理
2. 実装
3. 計算結果と厳密解の比較
4. 次回への問題の拡張# 公式と問題の整理
まずは、物体の加速度運動および等速直線運動に関する以下の2つの公式から。“`math
\begin{align}
a = \fr
PythonでTwitterのプロフィールと直近のツイートを取得してみた
こんにちは。
4月からPythonを勉強し始めて色々遊んでいたのですが、ふと
###授業中にTwitterが見たい!!!!
となったので
###ターミナルでCUIで見てればバレないんじゃね???
とスクレイピングを覚えたての僕は考えてコードをパチパチして作りました。
#スクレイピングの準備簡単に言えば、webサイトから指定した情報を抜きt(((抽出する)))技術のことです。
環境はmac os Catalina 10.15です。
Python3のインストールはできている前提で書いていきます。
ターミナルを起動して“` $username@usernameMacBook-Pro
pip3 install bs4
“`“`$username@usernameMacBook-Pro
pip3 install requests
“`
をします。これで環境構築は終わりです。エディターを起動して“`tweet.py“`とでも名前をつけてコードを書きましょう。
Python3のインストール方法がわからない人は適当にググってください。
説明は特にありません。スクレ
バブルソート
#はじめに
実装するのは初めてではないのですが、初心者だったころに比べたら少しは理解が深まったかなと思い記事にしてみようかなと思いました。このバブルソート、動きがすごいきれいだなって思います。きれいなものの原理って直感的ではないというかなんというか、、。やはり身近でソートする機会ってトランプの手札かなって思うのですが、初等的整列のなかではこのバブルソートは使ったことが一度もないですね。(みなさんはありますか?笑)#コード
“`bubble_sort.py
def bubble_sort(A):
flag = 1
i = 0
while flag:
flag = 0
for j in range(len(A)-1,i,-1):
if A[j] < A[j-1]: A[j],A[j-1] = A[j-1],A[j] flag = 1 i += 1 return A ``` #使用方法 引数は任意の配列で、ソート
プログラミング初心者が最初に覚えるべきPythonの基本的な記述ルール
# はじめに
ここでは、プログラミング言語Pythonを勉強し始めた人が、まず最初に覚えるべき文法、構文を紹介します。
Python3系の使用を前提とします。# コメントのつけ方
“`python:comment.py
# 1行目のコメント # 行の途中からコメントを書くことも可能。
2行目のコメント # エラーになる。”’
複数行のコメント
複数行のコメント
”’
“`
‘#’で始まるコメントを改行すると、2行目以降はプログラムの実行範囲と認識され、エラーが発生したり、想定外の動作になることもあるので注意が必要です。
プログラム実行範囲のスクリプトも含め、1行は79文字以下になるようにすると良いです。
コメントはスクリプトのメモとして記載できるほか、実行したくないスクリプトを実行されないようにする(コメントアウト)という使い方もできます。
「複数行のコメント」については、関数の中で書くと、その関数の説明などを示すオブジェクトになり、ここで触れたコメントとは少し違う形になります。# 文字の出力
プログラムを実行した結果得られる文字などは、print関数を使う
Pythonでスライド作成の自動化
# どんな記事?
ExcelなどでまとめたデータをPowerPointに自動で移行してくれるツールの作成.
PowerPointで作成するレイアウトが既に決まっていて大量にスライド生産するっていう場合に便利.
![Qiita_fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164046/1452ea52-0d69-48bf-fcca-0fe31d569661.png)# 今回作成したもの
とある大会の作品ごとのポスターをパワーポイントで自動作成.
ポスターに入れた情報は以下のもの.* 作品名
* チーム名
* 作品の画像(今回はjpgだがpngでも良い)
* 作品概要(日本語と英語)# 実行環境
* Python 3.6.3
* 当初はPython 3.7でやろうとしたがpptxライブラリが使えなかったのでバージョンダウンして3.6に
* macOS High Sierra.ver10.13.6# 用意するもの
* p