Python3関連のことを調べてみた2019年12月02日

Python3関連のことを調べてみた2019年12月02日

[TouchDesigner]pythonによるfor文のコツ

## はじめまして
趣味で映像や音楽を作ってるibuibu69と申します!
これまでmaxやprocessingを使って、VJとインストバンドなんかをやってました。。

・・・バンドも解散したし、TouchDesignerで新しいことをやりたい今日この頃。東京在住なので、だれか友達になってください。。

では、初アドベントカレンダー投稿、さっそくいきます。

## 本題
TouchDesignerで難しいことをやろうとするとき、pythonによる制御が必要不可欠になってきます。

がしかし、、、TouchDesignerユーザーでpythonに精通しまくりな方は、(私も含め)割と少ないのではないでしょうか。。。たぶん。。

そこで、よく使うであろう、for文によるオペレータの一括操作の際のコツを紹介します。

## たくさんのオペレーターを操作

例えば、「constant1,2…9のvalue0に1を代入する」はこうです。

“`python
for i in range(1,10):

元記事を表示

Slackbotでファイルの読み書きをしよう〜PythonでのBot開発〜

本記事では、Pythonで作成したSlackbotでファイルの読み書きにする処理について説明します。

Pythonでファイルの読み書きを制御する」にて実装した論理をSlackbotから呼び出せるようにしていきます。

ファイルを読み書きする基本論理は「Pythonでファイルの読み書きを制御する」で作成した以下のモジュールを使用します。

◆filereadwrite.pyの記述内容

import codecs

class FileReadWrite:

# ファイルを読み込むメソッド
def file_read(self, path):
try:
# ファイルを開く

元記事を表示

Pycairoでプラネタリウムの原盤をpdf形式で出力した話

 この記事は、2020年度卒のDMMグループ内定者が寄ってたかって記事を書くアドベントカレンダーに合わせて書いたものです。

[DMMグループ '20卒内定者 Advent Calendar 2019](https://adventar.org/calendars/4156)

 もうちょっと、自己紹介とか書いたらよかったかなとか、下の内容を書いた後になって後悔しているのですが、プラネタリウム開発は自分の学生生活の中でかなり中核的な活動だったので、この記事に代えて自己紹介とさせていただきます。

# 0. 概要
 腐れ縁で所属いている某サークルが例年通り、高専祭でプラネタリウムを展示することなり、僕がその光源装置の製作に必要な恒星原盤を製作することになりました。(恒星原盤に出力する恒星の座標変換等一切は、弊学の超超超優秀な後輩くんがやってくれました。僕&本記事は、それを点描するだけです。)
 以前にも同様の原盤をJavaと[Gnuplot](http://www.gnuplot.info)で出力したことがあったのですが、なんだかビミョーな仕上がりになってしまいました。Gnuplotはグ

元記事を表示

初心者がUE4でルービックキューブ風なものを作って強化学習用のライブラリにしたい #6

前回に引き続き初心者がUE4を絡めたPythonライブラリを作れないか色々進めていく記事です(ほぼ自分のための備忘録としての面が強い・・)。

最初 : [#1](https://qiita.com/simonritchie/items/e8d84c2941b5bd2862f5)
前回 : [#5](https://qiita.com/simonritchie/items/f276a207da295e4ca581)

## Observation 回りの実装をしていく

観測値回りの制御の処理を書いていきます。
基本的にアクションの後に保存などの処理が必要になるのと、用意したSQLiteのテーブルにアクションのIDのカラムを用意してあるので、BPと繋げるところはアクションのモジュールに追加していきます(別途Observation用のPyActorを使ったモジュールを追加しようとも思いましたが、アクション関係との連携が無駄に煩雑になるのでアクションの方に追加していきます)。
ただし、BPが絡まないところの処理は別途汎用モジュールを用意してそちらに記載していきます。

BP_Actionに

元記事を表示

意外とややこしい Python のスコープを理解するためのクイズ14問

# イントロダクション

Python の変数のスコープ、参照のメカニズムは意外に直感的でない部分があり、初心者が罠にはまる可能性がある。しかし、一旦ルールを覚えればさほど複雑ではない。ここではその理解を助けるための問題を紹介する。

問題ごとに**何が出力されるか、もしくはエラーが出力されるかどうか**を答えよう。実行環境は Python 3 とする。難しい(というかマニアックな)問題は見出しが赤色になっている。

# 問題1

```python
x = 1

if True:
x = 2

print(x)
```

## 解答

```
2
```

Python では `if` 文はスコープを形成しない。そのため `if` 文内の `x` は外の `x` と同一の変数となる。

# 問題2

```python
for i in range(10):
x = i * 2

print(i, x)
```

## 解答

```
9 18
```

`if` と同様に `for` 文もスコープを形成しないので、

元記事を表示

素因数分解

wikiによると2から順に割っていき√numまで調べればよいらしいです。

```Python3
import math

def calc(num):
L =[1]
for i in range(2, int(math.sqrt(num))+1):
while num % i==0:
L.append(i)
num = num//i
if num !=1:
L.append(num)
print(L)

calc(100)
```
```
[1, 2, 2, 5, 5]
```
参考文献
https://ja.wikipedia.org/wiki/%E7%B4%A0%E5%9B%A0%E6%95%B0%E5%88%86%E8%A7%A3

元記事を表示

Progate Pythonやってみた

Pythonコードを業務で使い始めて早1年。

同僚にPythonを教える機会があるので、
一通り基礎を復習する気持ちで取り組んでみた。

Progateでクラスの定義、継承を学ぶことができた。
リストの内包、lambda関数とか便利な書き方があるのに、
それを教えてくれないのはちょっと不親切な気もしました。

ただPythonを一から学ぶ人にはよいと思います!
操作性もよく、間違ってる部分を見つけやすい。

ざっくりとした概要は下記のとおりです。

Python Ⅰ
和差積商、変数、論理和、論理積、条件分岐

Python Ⅱ
繰り返し分(for,while)、リスト、辞書型

Python Ⅲ
関数

Python Ⅳ
クラス
クラスの定義、インスタンス、クラスの中で関数を定義(インスタンスメソッド)

Python V
クラスの継承

元記事を表示

AtCoder 三井住友信託銀行プログラミングコンテスト2019 参戦記

# AtCoder 三井住友信託銀行プログラミングコンテスト2019 参戦記

## A - November 30

2分で突破. 書くだけ.

```python
M1, D1 = map(int, input().split())
M2, D2 = map(int, input().split())

if D2 == 1:
print(1)
else:
print(0)
```

## B - Tax Rate

4分半で突破. 整数にならなかった場合をどうすればいいかわからんなあと適当に出したのに AC だった. ふう.

```python
N = int(input())

X = N / 1.08
if int(X) * 108 // 100 == N:
print(int(X))
elif int(X + 1) * 108 // 100 == N:
print(int(X + 1))
else:
print(':(')
```

## C - 100 to 105

7分半で突破. WA1. 最近の ABC のC問題より難しいな

元記事を表示

初心者)備忘録)スクレイピングとCSVへの出力

###準備
[こちらの記事](https://qiita.com/hoger/items/89131f5e0bef7cd21fa6)を参考にスレイピング用のコードを完成させる

###ソースコード
```Python
import urllib.request
import urllib.error
from bs4 import BeautifulSoup
import csv
import numpy

l_cap_name = []

url = "https://scrapethissite.com/pages/simple/"
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
request = urllib.request.Request(url=url, headers=headers)

try:
resp

元記事を表示

gmusicapiの認証サンプル

完全に自分用の技術メモ(´・ω・`)

[gmusicapi](https://unofficial-google-music-api.readthedocs.io/en/latest/)はPythonからGoogle Play Musicを操作するGoogle非公認のライブラリです。Google Play Musicを操作するにあたっては認証が不可欠なのですが、その認証APIがやや複雑というか、少なくとも自分は時間を溶かしたので、サンプルを供養がてらQiitaに残しておきたいと思います。__ちなみに稼働を確認した環境については、Pythonのバージョンは3.7、gmusicapiのバージョンは12.1.1になります。__

```python
import gmusicapi

# 前提: このファイルは初回起動時には存在しない。
CREDENTIAL_FILE = '/path/to/mobileclient.cred'

api = gmusicapi.Mobileclient()
if not os.path.exists(CREDENTIAL_FILE):
api.

元記事を表示

文字化けで出てきた漢字ランキングBEST20(UTF8→SJIS)

## 動機

(要約)ただ僕が知りたくなったからです。それ以上の理由はありません。

もっと詳しく

文字化けには何種類ものパターンがあります。
UTF8のファイルをSJISで表示した時に起こる文字化け、
UTF8をEUCで表示した時に起こる文字化け、
EUCをUTF8で表示した時に起こる文字化け……。
それぞれがどんな見た目になるかは[このページ](https://tools.m-bsys.com/ex/html-mojibake.php)などで確認できます。
正直最近はUTF8で作業をするため、文字化けはあまり見ていません。
けれども私が新卒で入った職場ではテキストファイルの作成はSJISが基本でした。そして、UTF8のファイルをSJISで開いて文字化けを起こすことが、わりと頻繁に起きていました。
UTF8→SJISへの文字化けだとよく`縺ォ蜈育函縺ィ蜻シ繧薙〒縺�縺溘€ゅ□縺……`のような文字化けが発生するのですが、これを見ていると、同じ漢字が何度も何度も登場していることが分かると思います。
文字化けで出てくる漢字には偏りがあ

元記事を表示

Pythonでカラーフィルムを再現してみる

##作りたいもの
今回作成しようと考えているのは,カメラに取り付けるような画像全体の色調を変えるフィルムです.Numpyモジュールを使えば3簡単に原色のフィルムを作れるのですが,汎用性を高めて全部の色に対応させようと考えました.

###元画像
![sample.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486136/0e8e82fe-5c8f-6282-d0b1-a9dc1f07f20e.jpeg)

##完成品
```python
from PIL import Image
import numpy as np

def color_filter(img_source, rgb):

#Imageクラスでの入力だった場合,ndarrayに変換
if isinstance(img_source, Image.Image):
img_source=np.array(img_source)

#フィルムRGBは0~255
if

元記事を表示

AWS Lambda を使って GitLab private repository へ push しちゃう

## 対象読者

- AWS に触れてみたいけどよくわかんない。 Lambda っていうやつが無料っぽいし、いっとう手軽そうだからちょっと触ってみたい。
- GitLab から自動で clone, commit, push するスクリプトが書きたい。
- そういうスクリプトを AWS で実行してみたい。

つまり先日の私です。

## 概要

こんなことをしてみます。

- GitLab の private repository が対象です。
- repository を clone, 編集, add, commit, push をするプログラムを作ります。
- private repository へのアクセスには ssh キーを使います。
- プログラムは AWS Lambda に無料で置きます。

本記事は GitLab CI/CD とは関係ありません。

## はじめる前に知っておくとスムーズになるかもしれないこと

キホン的すぎることが混じっていて鼻白むかもわかりませんが、私自身のレベルがこんなもんなのでご容赦ください。

**使用する Python モジュールについて**

元記事を表示

Docker + Flask(Python) + Jupyter notebookによる仮想環境構築

毎回構築の方法を忘れるため、備忘録として。

#ファイル構成
```
project
L Dockerfile
```

#Dockerfile
javaを利用するライブラリをインストールする可能性があるので、default-jdkを追加しています。

```dockerfile:Dockerfile
FROM python:3.6
RUN apt-get update && apt-get install -y \
default-jdk \
build-essential \
gfortran \
libblas-dev \
liblapack-dev \
libxft-dev \
swig \
&& rm -rf /var/lib/apt/lists/*
RUN echo 'export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"' >> ~/.bash_profile && \
. ~/.bash_profile && \
cd ~ &

元記事を表示

物体認識データセット用ファイル名変更プログラム

#目的
物体認識のデータセットにおいてファイル名を適当なものにしておくと、どの画像にどんなオブジェクトがあるのか分からず、データセットの管理が困難になる。
また、ラベリング後に物体認識データセットの名前を変える際は、画像名とアノテーションファイル名、アノテーションファイルの中身の3つを変更する必要がある。特に、アノテーションファイルの中身は簡単には変更することができない。
今回は、これらの3つを一気に変更するプログラムを作成する。

       アノテーションファイル          画像
       ![before.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538304/9d805fa2-0b4b-9cb2-ed52-55cfab7e9ce2.png)       ![before_img.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538304/fef9a80a-ff35-dfbe-59c7-8ede

元記事を表示

ツイートデータから、wordcloudを生成してみたゾ!

#はじめに
自然言語処理における可視化の勉強のために、wordcloudを生成しました!
可視化するデータは、ツイートです。

#流れ
以下のような感じで、wordcloudを生成してます!
①twitterから、任意の文字列を含むツイートを100件取得(今回は、「データサイエンス」が含まれているデータを抽出します)
②取得したデータから、名詞のみを抽出
③抽出した単語群からwordcloudを生成

#ソースコード
① twitterから、任意の文字列を含むツイートを100件取得

```python
import tweepy
import json
#twitterAPIのためのconfigファイル
JSON_LOAD_FILE = r"./json/twitter.json"
#twitterからデータを抽出するときの検索ワード
SEARCH_WORD = "データサイエンス"
#twitterからデータを抽出するときの取得件数
SEARCH_COUNT = 100

#tweeterAPIと繋げるAPIインスタンスを生成する
def twitter_api_connect()

元記事を表示

returnとprintの違い -Python

returnとprintの違いがよく分からなかったので、ここにまとめておきます。しかし、まだ完全に違いを掴めていないので、明確に違いを理解できたらなと思っております。

**return** = 関数において、値を呼び出し元に返す。勘違いしていたのだが、returnは値を返すものなので値を出力したい場合はprintを使わないといけない。
**print** = ただ文字列を出力するもの。関数の時だけでなく、様々な場面で利用する。returnで返した値を出力したい場合は、printで出力しないと表示できない。

なんとなくは理解しましたが、returnの「値を返す」という部分がまだはっきり理解できていません。これから何度もコードを書いたり、他の方が書かれたコードを読んで明確に理解できたらなと思います。

元記事を表示

pyqtgraphにwidgetを追加し制御する

##1. はじめに
pyqtおよびpyqtgraphの初心者です。測定データを高速に表示させたく、pyqtgraphを使い高速表示を実現することができました。その後、表示パラメータを変更できるようにしたい等の要望が出てきましたが、様々なグラフやウィジットの例はあっても、それらを組み合わせた例が見つからず、色々調べてやっとわかりました。他の方にも役にたつかもと思い投稿します。

##2. ポイント
(自分ではなかなか方法が分からず試行錯誤したところ)
###・ウィジットをグラフィックアイテムとして追加する
押しボタン等のウィジットをpyqtgraphのウインドウに追加すればいいのですが、以下の方法で実施しています。
・QGraphicsProxyWidget [PyQt5.QtWidgets]
ウィジットをグラッフィックアイテムとして見せる。
・addItem [class pyqtgraph.PlotItem]
  グラフィックアイテム(QGraphicsItem)をビューボックスに追加。
・addLayout [class pyqtgraph.GraphicsLayou

元記事を表示

【Pandasサンプルコード】購入ログっぽいサンプルデータ作成&集計

# サンプルデータ作成
```python
import numpy as np
import pandas as pd
from datetime import datetime, timedelta
from math import ceil

# create sample data ---------------
## function
def repeat_copy_and_random_choice(values_list, sample_length):
repeat_rate = 5
repeat_copied = values_list * ceil(sample_length / len(values_list) * repeat_rate)
random_choiced = np.random.choice(repeat_copied, sample_length)
return random_choiced

## parameters
data_length = 100
users = [c for c in 'ABCDEFG

元記事を表示

量子コンピュータの勉強をやってみる(その0)

# イントロ

最近、量子コンピュータが世間を賑わせてきているように感じる。

- Googleが量子超越性を証明した!
- 量子コンピュータが現在の暗号化を打ち破る!?
- 量子コンピュータはブロックチェーンも打ち破る!?

などなど、ニュースは尽きない。ネット記事や報道内容と「量子コンピュータの実際」には大きな乖離があるが・・・

だがしかし!!注目を浴びている事には違いないため、「この波に乗ってやろう!」ということで量子コンピュータの学習を始めることにしました。

本記事は、自身の学習の記録/備忘を兼ねて日々の勉強での疑問点、解決までの道筋をまとめていきたい。

# 学習方針

当面は以下の学習方針で進めたいと思います。

- 量子コンピュータの体系的に理解するために専門書籍を利用
- シュミレータ/実機の利用

ちなみに僕は大学時代物理学を専攻していたため、基本的な量子力学の知識はあります。

## 専門書の利用

とりあえず読んでみようと思ったのは、「[Quantum Computation and Quantum Information](https://www.

元記事を表示

OTHERカテゴリの最新記事