- 1. 【Python】andで繋いだ条件式はFalseになった時点で以降の条件式が無視される
- 2. PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (3)
- 3. threadingをやめてasyncio&aiohttpで楽にPythonスクレイピングを行う
- 4. bokeh: 第2のY軸を設定する
- 5. Pytorchで”e+”という指数表記を小数表記にする
- 6. pydanticについて書く
- 7. __init__から関数を呼び出す(python)
- 8. DIS: Highly Accurate Dichotomous Image Segmentation やーる(Windows10、Python3.9)
- 9. Kaggle・機械学習に関する有益情報まとめ
- 10. python 落ち物パズルゲームの作り方 -tkinter-
- 11. DjangoでGraphQLを触ってみるPart.3 (データ操作編)
- 12. [python] 仮想環境
- 13. [Python] The Multithread in Python, GIL
- 14. Pythonのsubprocessでコマンド標準出力を取得しつつコンソールにも表示したい
- 15. pythonでyeelightのWorking with Flowを使ってみた
- 16. ABC260 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 17. Tweepyの’API’ object has no attribute ‘me’
- 18. 3の倍数・3のつく数字だけアホになるプログラム①(小学生高学年向け・python)
- 19. PyG (PyTorch Geometric) で GAT (Graph Attention Networks)
- 20. ターミナルのインタープリターを使って文字列+連番を出したい!
【Python】andで繋いだ条件式はFalseになった時点で以降の条件式が無視される
どこかに記事がありそうな気もしますが、備忘録もかねて…。
## 実際にやってみる
以下のようなコードを実行する。“`python:sample.py
a = 0if b == 1 and a == 1:
print(‘passed’)
else:
print(‘failed’)
“`変数 b は定義されていないが、一つ目の条件式に登場する。
### 実行結果
“`
$ python sample.pyTraceback (most recent call last):
File “aaa.py”, line 3, in
if b == 1 and a == 1:
NameError: name ‘b’ is not defined
“`変数 b が定義されてないというエラーが出る。当然である
## 条件式の前後を入れ替える
コードを以下のように変更する。
“`python:sample.py
a = 0if a == 1 and b == 1:
print(‘passed’)
else:
PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (3)
PLCからゲートウェイでデータを取得し、データベースにJSONで保存します。複数回に分けて、サンプルを用いて解説します。
前回は、ゲートウェイを用いてPLCからデータを取得し、ゲートウェイのメモリに保存しました。
[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (2)](https://qiita.com/COOLMAGICPRODU1/items/370b1bd37dca8a4fd9ae)今回はこのデータをサーバに送信します。
![99f8027812fe841fafbb82cb316db3e062d514f019ff6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/57fae69b-42ac-b7b7-98e3-582e997dd10f.png)
サンプルで使用するゲートウェイは、引き続きWEINTEK製ゲートウェイの開発環境であるEasyBuilderのシミュレーターです。WEINTEK製ゲートウェイはサーバへのデータ送信に2種類のインタフェースを持ってお
threadingをやめてasyncio&aiohttpで楽にPythonスクレイピングを行う
効率的なスクレイピングを行うにはリクエストとレスポンス間の待ち時間をなくすこと。これを実現するためにはthreadingモジュールでマルチスレッドか、asyncモジュールで並列処理をするかだ。
マルチスレッドは気軽に実装できる反面、デバッグが困難になる。asyncの非同期処理はコード量がやや増えるが、デバッグが楽。
この記事を呼んで我に返った
https://qiita.com/Toyo_m/items/992b0dcf765ad3082d0b
よし、threading使うのやめて、async使おうってことで試作したコードが以下
やっていることは、リクエストをしてスリープを1秒間を5回実行する(※スリープの理由は逮捕は嫌なので)
ネット環境によるのだろうけど、5回で2秒近くの処理時間の差が生まれる
“`python3
import aiohttp
import asyncio
import time
import requestsurl = ‘https://qiita.com/osorezugoing/items/4ea5249c43c0ba8b89aa’
st
bokeh: 第2のY軸を設定する
# 環境
* Python3.10.2
* bokeh 2.4.2# やりたいこと
bokehで縦軸が2つの折れ線グラフを描画したいです。# 解決
以下のコードで縦軸が2つの折れ線グラフを描画できます。`extra_y_ranges`プロパティに軸の範囲を設定して、`add_layout`メソッドで軸を右側に追加しています。
“`python
from bokeh.models import DataRange1d, LinearAxis
from bokeh.plotting import figure, showx = [0, 1, 2]
y1 = [0, 1, 2]
y2 = [0, 1, 100]fig = figure(x_axis_label=”x”, y_axis_label=”y1″)
y_range_name = “secondary_axis”
fig.extra_y_ranges = {y_range_name: DataRange1d()}
fig.add_layout(
LinearAxis(
y_range_
Pytorchで”e+”という指数表記を小数表記にする
# 指数表記はわかりづらい
torch.tensorをprintすると、”+e”という指数表記になって、意味が分かりづらいことがあるじゃないですか。
“`
[tensor([[1.14178e+01, 1.38472e+02, 1.03706e+02, 2.53196e+02, 9.22984e-01, 2.20000e+01],
[3.59220e+02, 9.41330e+01, 5.77640e+02, 2.87894e+02, 9.12798e-01, 1.90000e+01]], device=’cuda:0′)]
“`それを、普通の小数表記に変えたい。
# torch.set_printoptions
“`python:print_option.py
torch.set_printoptions(sci_mode=False)
print(some_tensor)
“`これで、小数表記になります。
“`
[tensor([[ 11.41777, 138.47192, 103.70560, 253.19629,
pydanticについて書く
ためになる話、ざっと書く。(書き殴りなのでご容赦ください)
https://pydantic-docs.helpmanual.io/
dataclassと比較したり、便利だったこととか書いておきます。
## defaultの値の設定について
### dataclass
“`python:ダメなdataclassの定義
from dataclasses import dataclass@dataclass
class DataClass:
test_str: str
test_default: str = ‘default’
test_int: int
test_list: list[int]
“`“`:dataclassはdefaultは最後に定義する必要がある
TypeError: non-default argument ‘test_int’ follows default argument
“`### pydantic
“`python:defaultの順番は気にしなくて良くなる
class PydanticCla
__init__から関数を呼び出す(python)
pythonでクラスをインスタンス化した際に
一定の処理を既にしておいて欲しいことがあった。そこで__init__に今更だが着目し、
initの時点で関数を呼び、一定の処理すればよいのでは
と思った。やってみる?
“`calc.py
class calc:
def __init__(self, numA, numB):
self.numA = numA
self.numB = numB
#インスタンスメソッドの結果をメンバに格納
self.sumResult = self.sum()def sum(self):
result = self.numA + self.numB
return resultcalc = calc(5, 5)
print(calc.sumResult)
#出力結果: 10“`
以上です!
DIS: Highly Accurate Dichotomous Image Segmentation やーる(Windows10、Python3.9)
# はじめに
画像セグメンテーションのDISやっていきまーす# 開発環境
– Windows10 PC
– Python 3.9
– Anaconda# 導入
1.[DIS](https://github.com/xuebinqin/DIS)をクローンします
~~~
conda activate py39
git clone https://github.com/xuebinqin/DIS.git
cd DIS/IS-Net
~~~2.requirements.txtについては後で書くかもしれない(U^2Netが動いていれば動くかも)
3.[isnet.pth](https://drive.google.com/file/d/1KyMpRjewZdyYfxHPYcd-ZbanIXtin0Sn/view?usp=sharing)をダウンロードし、saved_models/IS-Netに置きます
4.推論のためにtrain_valid_inference_main.pyを修正します
664行目
~~~
valid_datasets = [dataset_vd] # d
Kaggle・機械学習に関する有益情報まとめ
kaggleや機械学習についての良記事と,その記事で扱っている内容を簡潔に書きました.
### Pytorch
[Pytorch入門](https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pytorch_index.html)
テンソル操作のチートシート,モデル定義,損失関数,オプティマイザ,評価関数の定義[Pytorchチュートリアル(日本語)](https://yutaroogawa.github.io/pytorch_tutorials_jp/)
モデル定義から,画像認識,自然言語処理,強化学習の実装までの解説### データ加工
[データサイエンス100本ノック](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/tree/master/docker/work)[Pandas100本ノック](https://qiita.com/kunishou/items/bd5fad9a334f4f5be51c)
### 特徴
python 落ち物パズルゲームの作り方 -tkinter-
マウスの座標とクリックの判定
“`python
import tkintermouse_x = 0 #マウスのx座標
mouse_y = 0 #マウスのy座標
mouse_c = 0 #マウスの判定 0か1#引数のeがマウスの位置
def mouse_move(e):
global mouse_x,mouse_y
mouse_x = e.x
mouse_y = e.ydef mouse_press(e):
global mouse_c
mouse_c = 1def mouse_release(e): #フラグを降ろす
global mouse_c
mouse_c = 0def game_main():
fnt = (“Time New Roman”, 30)
txt = “mouse({},{}){}”.format(mouse_x,mouse_y,mouse_c)
cvs.delete(“TEST”) #文字を一旦初期化
cvs.create_text(456,384,text=txt, fi
DjangoでGraphQLを触ってみるPart.3 (データ操作編)
# はじめに
[DjangoでGraphQLを触ってみる Part.2](https://qiita.com/abemaru/items/cc862c548cdec65fa640)の続きです。
今回は、データの追加、削除、編集(Mutation)を実装します。今回もdockerを使う前提で説明をします。詳しい内容は[私のgit](https://github.com/abemaru/my_graphql_demo)を参考にしてください。
# パート解説
### [Part1 : 入門向け環境構築と基本的な書き方](https://qiita.com/abemaru/items/fcd64145168e7267e615)
### [Part2 : GraphQLでリレーションなしの絞り込み実装](https://qiita.com/abemaru/items/cc862c548cdec65fa640)
### Part3 : データ追加、削除、編集(Mutation)の実装 ←イマココ# 実装
## データ追加
まずはデータ追加を実装します。`.save()`を使うと簡単に実装
[python] 仮想環境
# はじめに
pythonでツールなどを開発する際に、用途によって必要なライブラリを含んだ実行環境を作成し、その環境下で開発を行うのがスタンダードである。
仮想環境を活用することで、PC上にあたかも別マシンで動くようなpython環境を構築できる。
つまり、独立して動くため同じシステム内の環境を汚したり競合なく開発が行えたり、作成したツール配布の際に実行環境を揃えられるため、ライブラリの差異で動かないといったことが解消できるといったメリットがある。運用としてbaseのライブラリは汚さずに、仮想環境ごとに必要なライブラリを揃えるといった感じが良さそうだ。
# 仮想環境の種類
次の3種類の仮想環境がよく使われている様子|名称|特徴|
|—|—|
|venv|・標準仕様なので安心感あり(Python Ver3.4以降)
・すぐ使える|
|conda|・Anacondaパッケージに標準搭載|
|virtualenv|・サードパーティ製なのでpip installが事前に必要
・venvより構築が少し楽|# venvでの環境構築から有効まで
WindowsOSに
[Python] The Multithread in Python, GIL
# Introduction
In Python, if you run some calculation with multithread you will find that it takes almost the same time, no matter how many thread you use. For example for the code bellow, it just do a plus operation in a for loop, with 1 thread or 4 thread, in my 4 core cpu laptop, all took almost 4 seconds.
“`py
import threading
import time
from datetime import datetimedef run(n):
tot = 0
for i in range(0, n):
tot += 1start = datetime.now()
a = 100000000
n = 10th = []
for i
Pythonのsubprocessでコマンド標準出力を取得しつつコンソールにも表示したい
## はじめに
Pythonのsubprocessでコマンド実行時
– その標準出力を文字列として取得したい
– 同時に、コンソールにもリアルタイム表示したいといった場合の実装例です。
## 仕様
– MyConsoleクラス
– パイプを作成し、読込み用と書込み用のファイルディスクリプタをクラスメンバーに指定
– スレッドを作成し、下記処理を行う
– パイプにデータ存在するまで読込む(4KB単位)
– 取得データをシステム標準出力に書き込む
– 同時に、データを結果文字列にも追加
– subprocess.run()でコマンド実行
– stdoutパラメータにMyConsole書込み用ファイルディスクリプタを指定## コード
Windowsのサンプルコードです。
“`test_console.py
import threading
import os
import sys
import subprocessclass MyConsole:
def __init__(self):
pythonでyeelightのWorking with Flowを使ってみた
## Working with Flow
[python-yeelight](https://yeelight.readthedocs.io/en/latest/flow.html)のドキュメントを読んでいると、あらかじめ電球の遷移状態を設定しているFlowというモードがあるそうです。
>“Flow” is a special mode the bulb can be set to, which is basically a list of transitions to perform in succession. For example, a flow can be a constant cycling of colors from one to the next, until it is stopped, or it can be a quick blink of a certain color久しぶりにyeelightを使ってみたかったので、”Flow”の動作を確認できる環境を作ってみました。
## 環境
Python version:3.9.7
OS: windows 1
ABC260 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
ABC260(AtCoder Beginner Contest 260) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。その他のABC解説、動画などは以下です。
更新時はツイッターにて通知します。
Tweets by AtCoder4https://qiita.com/sano192/items/54accd04df62242b70f0
# A – A Unique Letter Dif:12
https://atcoder.jp/contests/abc260/tasks/abc260_a
単純にa,b,c,…,zまでSに1文字だけ存在するかを確認していきましょう。
(文字列).count(文字)とすることで(文字列)に(文字)がいくつ含まれるか確認できます。
例えばSに「a」がいくつ含まれるか確認するなら以下のようになります。“`python:
S.count(“a”)
“`これが1ならば「a」が答えになるというわけです。
答えを出力するときは「”a”」というようにダブルクオーテーションで囲みます。これは
Tweepyの’API’ object has no attribute ‘me’
## はじめに
Tweepyのバージョンを4.10.0に上げたら怒られたメモ## API.meの廃止
`AttributeError: ‘API’ object has no attribute ‘me’`
実行したときにはAPI.meで例外が吐かれました。
[https://github.com/tweepy/tweepy/blob/master/docs/faq.rst#where-did-apime-go](https://github.com/tweepy/tweepy/blob/master/docs/faq.rst#where-did-apime-go)
faqにある通り3から4で廃止されたようです。代わりとして`API.verify_credentials`を使えばよいと書かれています。
“`python
auth = tweepy.OAuth1UserHandler(
CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET
)
api = tweepy.API(au
3の倍数・3のつく数字だけアホになるプログラム①(小学生高学年向け・python)
この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
[アクセルキャンプ(フリースペースプラウド)のリンク](https://freespaceproud.com)
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。# (小学生)アクセルキャンプ高学年クラス7/20
# 「3の倍数と3のつく数だけアホになる」プログラム
(参考動画:[世界のナベアツ](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=video&cd=&cad=rja&uact=8&ved=2ahUKEwixldHDoYb5AhUTAYgKHcjhDxkQtwJ6BAgLEAI&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS3sxqexw6pU&usg=AOvVaw1aczeZv8yXkUjdpGJOyQK7))
プログラムの使用は以下の通りです。
>①まず、1から30までの数字を連続で出力す
PyG (PyTorch Geometric) で GAT (Graph Attention Networks)
グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。まずは GAT (Graph Attention Networks) を用いて、node property prediction (頂点のラベルを予測)です。
# PyG (PyTorch Geometric) インストール
PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。
“`python
import os
import torch
os.environ[‘TORCH’] = torch.__version__
print(torch.__version__)!pip install -q torch-scatter -f https://data.pyg.org/whl/torch-${TORCH}.html
!pip install -q torch-sparse -f https://data.pyg.or
ターミナルのインタープリターを使って文字列+連番を出したい!
# はじめに
仕事してて
“`
hoge430,hoge431,hoge432,hoge433,hoge434,hoge435,hoge436,hoge437,hoge438,
“`
みたいな文字列+連番みたいなのをぴゃぴゃっと出したいなーって思ったんですよ。使う用事があったんで。
で、こういうのってターミナルの各言語のインタープリターを使うとやれるんですけど、どうやったっけなー、と思いまして。
備忘録的な感じで。# Ruby
まずはRubyです。Rubyがこういうの一番簡単に行けたイメージあったので。
“`bash
$ ruby -e ‘(430..438).each do |i| print “hoge#{i.to_s},” end’
“`簡潔でいいですね。
ちなみにfor文使うとこうです。結局コレでも内部的には`each`が動いているんだそうです。
“`bash
$ ruby -e ‘for i in 430..438 do print “hoge#{i.to_s},” end’
“`@scivola さんからコメントで頂いたのですがこんな書き方も