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

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

[Python]unittestを使ったテストコードの書き方

#unittestによるテストコードの書き方
##そもそもテストコードが必要な理由
1.プログラムが洗練される
2.デグレを防ぐことができる
※デグレとはプログラムを修正したことで今まで正常に動作していた機能に不具合が生じるようになること

他にも理由はありますがざっくりとテストコードが必要な大まかな理由はこの2点です。

##ユニットテストの手順
・unittestをimportする
・unittest.TestCaseを継承してクラスを作成する
・関数名の頭はtest_にすることが慣例

下記サンプルコード

“`python:test.py
import unittest
class Test~(unittest.TestCase):
def test_~(self):
“`

##assert関数

assert関数はunittestにおいてよく利用される関数です。
種類がいくつかあるので状況に応じて使い分けます。

| 関数名 | |
|:—————–|——————|
| assertEqual

元記事を表示

Filmarksからのデータ抽出を目的としたウェブスクレイピングの勉強 #2

ホームページ:https://program-board.com

最終目標:Filmarksより年代別で高評価となっている映画一覧の作成を目的としたデータ抽出を行う.
本稿では,特定のページでの複数の項目についての情報を抽出する.抽出する映画はまだ1つです.

##ソースコードの確認

前回と同様に,抽出したい情報のソースコードを確認する.
本稿では,以下の情報を抽出します.

・映画タイトル
・上映日
・製作国
・上映時間
・ジャンル(3つまで)
・星(評価)
・監督
・脚本(2人まで)
・出演者(3人まで)

“`python
import requests
import bs4
import pandas as pd

# ウェブの情報を取得
url= ‘https://filmarks.com/list/trend’
res = requests.get(url)

# HTMLの整形
soup = bs4.BeautifulSoup(res.text) #features=’lxml’)
“`

##1作品のみの情報を抽出

とりあえず,表示画面の冒頭作品

元記事を表示

AtCoder DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選 参戦記

# AtCoder DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選 参戦記

## A – DDCC Finals

4分で突破. 書くだけ. ARC の A 問題ってこんなに簡単だっけ?

“`python
X, Y = map(int, input().split())

def f(n):
if n == 3:
return 100000
elif n == 2:
return 200000
elif n == 1:
return 300000
else:
return 0

result = f(X) + f(Y)
if X == 1 and Y == 1:
result += 400000
print(result)
“`

## B – Iron Bar Cutting

26分で突破. WA 1個.

切れ目の位置を p、棒の長さを l とすると、p が真ん中より左にある場合は、左にその長さの差である (l – p) –

元記事を表示

【備忘録】スレッド?並列処理?なんぞそれ?【勉強用】

もう二度と重たいプログラマにならないためのメモです。

[第1回 マルチスレッドはこんなときに使う ](https://www.atmarkit.co.jp/ait/articles/0503/12/news025.html)

を見て勉強しました。

#プロセスとスレッド#
まずここからちんぷんかんぷんだったので勉強していきます。

##まずは用語説明##

###プロセス###
プログラムの実行単位
実行中のexeファイルとか

###スレッド###
一連のプログラムの流れのこと

##プロセスとスレッドの関係##
プロセスの中にあるプログラムの流れがスレッドです。
なので、プロセスの中にスレッドが複数あっても大丈夫です。

ちなみに、プロセスの中に…
スレッドが*1つ*  → **シングルスレッド**
スレッドが*複数* → **マルチスレッド**
っていいます。

#どんなときにマルチスレッドを使うのか#
パフォーマンスを向上させたい時に使います。
遅いなぁとか重いなぁとかで困ったらマルチスレッドの出番かもしれません。

##パフォーマンスの向上##
パフォーマンスの向上

元記事を表示

Mecab(形態素解析)で遊んでみた!

# はじめに

MeCabを使う場面が出てきたので備忘録として投稿

MeCabのインストール方法から出力までをまとめてみた

お品書きは下記の通り

* MeCab(形態素解析)とは
* MeCabのインストール方法
* 実際に動かしてみた
* 出力フォーマットについて
* おわりに

# MeCab(形態素解析)とは

### MeCab
[MeCab][1]とは、京都大学情報学研究科によって開発されたオープンソース形態素解析エンジンのこと
perl, ruby, python, java, C# で使用できる

### 形態素解析
対象となる言語の文法や単語の品詞情報をもとに、文章を形態素に分解する解析
自然言語処理分野で事前処理として用いられる手法
※**形態素** … 意味をもつ表現要素の最小単位

例えば
「私はpythonを使用して、プログラミングを勉強しています。」
と入力すると、以下のように出力される

|単語|品詞|品詞細分類||単語|品詞|品詞細分類|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|私|名詞|代名詞||プログラミング|名詞|サ変接続

元記事を表示

Python+IFTTTを使ってWiMAXの高速通信の残量をLINEに通知する

# 動機
 筆者は、現在宅内のインターネット回線としてBIGLOBEのWiMAXを契約して使っています。ちなみに、端末は有線ポートも付いていて電波送受信が高性能なSpeedWi-FiHOMEL02(下図)です。
![P_20190709_221331_vHDR_Auto.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352068/62a831bc-c6e0-8c6d-fb24-a09af2e613ad.jpeg)
 WiMAXでは、直近3日間のデータ通信量が10GBを超えると速度制限される制約があります。そのため、その日パソコンを使い始める前に今どれくらい通信残量があるか把握したいと思い、通知システムを考えました。

# 動作
自宅のWindowsPCでログイン(またはスリープモードから復帰)すると、後述するPythonスクリプトが自動実行されてSpeedWi-FiHOMEL02がローカルに公開している管理ホームページ(下図)から今日までの通信量(図中の赤枠部分)を取得し、そこから今日使える通信量を算出

元記事を表示

python zip関数による並列化

# zipによる並列処理

“`python:a.py
num_list = [1, 2, 3]
drink_list = [‘water’, ‘coffee’, ‘milk’]
programingu_language_list = [‘python’, ‘Javascript’, ‘Java’]

# 直列処理
for item1, item2, item3 in drink_list, programingu_language_list:
print(item1, item2, item3 )

# 並列処理
for item1, item2, item3 in zip(num_list, drink_list, programingu_language_list):
print(item1, item2, item3 )
“`

“`python:直列処理
1 2 3
water coffee milk
python Javascript Java
“`

“`python:並列処理
1 water python
2 coffee Javascript

元記事を表示

PythonでFalseとみなされるもの

# PythonがFlaseとみなすもの
明示的にFalseである必要ない。

| Flaseとみなされるもの| 値|
|:———–|————:|
| プール値 | Flase |
| null | None |
| 整数のゼロ | 0 |
| floatのゼロ | 0.0|
| 空白文字列 | ” |
| 空タプル | () |
| 空辞書 | {} |
| 空集合 | set() |

# 参考文献
「入門 Python3」(著:Bill Lubanovic)

元記事を表示

Pythonのデータ構造

# はじめに

ここでは、Python初心者向けに「データ構造」について解説します。
Python3系の使用を想定しています。

# リスト (list)

## リストの作成

“`python:list_1.py
list_int = [1, 2, 3, 4, 5] # 要素が全て数値のリスト
print(list_int)

list_str = [‘Python’, ‘R’, ‘Java’, ‘Ruby’, ‘PHP’] # 要素が全て文字列のリスト
print(list_str)

list_bool = [True, False, True, True, False] # 要素が全てブール値のリスト
print(list_bool)

list_mix = [1, 2, 3, 4, ‘GO’] # 1つのリストの中に複数のデータ型の要素を混在させることもできる。
print(list_mix)

list_2d = [[1, 2], [3, 4]] # 2次元以上のリストも作成できる。
print(list_2d)

list_empty = [] # 空のリストを作成す

元記事を表示

特定のリストに含まれる単語の入ったツイートをしたユーザのリストを作成する

#目的
薬剤名のリストが用意してあります。このリストに含まれる薬の名前を含むツイートを検索します。リストに含まれる全ての薬剤について、繰り返し処理します。
検索結果のツイートをしたユーザーのユーザーID(screen_name)を、リストに取得するのがゴールです。

ちなみに、薬のリストはこんな感じです。

“`python:medicine_list
medicine_list=[‘アミトリプチリン’, ‘イミプラミン’, ‘スルモンチール’, ‘アナフラニール’, ‘アモキサン’, ‘アンプリット’, ‘プロチアデン’, ‘ルジオミール’, ‘クロンモリン’, ‘マプロミール’, ‘テトラミド’, …(中略)…,’リフレックス’, ‘レメロン’, ‘スルピリド’, ‘ドグマチール’, ‘ミラドール’, ‘アビリット’, ‘マーゲノール’, ‘ベタナミン’]
“`

また、今回はできるだけbotを避けたいと考え、screen_nameに’bot’を含むアカウントは取得しないことにしました。

#準備
・ツイッターAPIを登録する。
  参考:https://qiit

元記事を表示

【AWS】CloudFormation::Macroを使って多数のIPを接続許可する

初めての記事投稿です。
よろしくお願いします。

# 使うもの

– CloudFormation
– Lambda(Python3)

めんどくさいからソースと作り方だけくれって人向けにgithubに置いておきます。
コードは記事に書いてあるのと同じです。
https://github.com/nekotouma0114/CloudFormationMacroDemo

# 事の始まり

僕「テスト環境の接続許可するIPって何があります?
お客さん「xxxとyyyとzzz….(数十個羅列※)お願いね!」
僕「あ、はい」

※IPはばらばらでCIDRでまとめれないような状態

AWSのユーザガイド([AWS::EC2::SecurityGroup Ingres](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule-1.html))を見る限りまとめてIPは指定できず、
CloudFormationにはループ構造が見当

元記事を表示

pythonの勉強 update()による辞書の更新

#update()だよ。2つの辞書を用意して1つの辞書にすることができるよ

“`Python
members = {‘a’:1,’b’:2,’c’:3,’d’:4}
others = {‘e’:5,’f’:6}

members.update(others) # 変数membersの後ろに変数othersを更新するよ
print(members)
“`
“`
{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6}
“`

“`Python
others.update(members) # 変数othersの後ろに変数membersを更新するよ
print(others)
“`

“`
{‘e’: 5, ‘f’: 6, ‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4}
“`

##もし、2つの辞書に共通のキーを持っていたら・・・

“`Python
members = {‘a’:1,’b’:2,’c’:3,’d’:4}   d=4
others = {‘e’:5,’d’:6}      d=6

元記事を表示

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

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

最初 : [#1](https://qiita.com/simonritchie/items/e8d84c2941b5bd2862f5)
前回 : [#4](https://qiita.com/simonritchie/items/585d4fd7cb2de11607a4)

# アニメーション付きの回転の処理をPythonと繋いでいく

前の記事で即時の回転の関数をPythonと繋いでいきましたが、次はアニメーション付きのものも繋いでいきます。

まずはブループリント側の作業から進めます。
大体は即時の回転のBPと同じ感じです。ほぼほぼ必要なものは用意されているので、キューブに対してループを回して、対象の回転対象のキューブに対して回転のフラグを立てるだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228778/5805b245-01

元記事を表示

Ubuntu18.04でpip install mysqlclientするもエラーが出る場合の解決方法

AWS EC2のUbuntu環境でmysqlを導入していたら、PythonとMySQLを接続するためのパッケージインストールでエラーが出まくったので色々調べて解決。

結論から言うと、CentOS同様にMySQLサーバだけでなく開発ツールを導入しなければいけないようです。

“`
$ sudo apt-get install -y mysql-server
$ sudo apt-get install -y libmysqlclient-dev #←これ
“`

“`
$ pip install mysqlclient
“`

これでいけました。

## その他installしたけど関係あるかわからないもの

“`
$ sudo apt-get install -y default-libmysqlclient-dev
“`

## 環境
OS: Ubuntu18.04
pip 19.3.1

元記事を表示

pip3でTypeエラーが出るようになった時の対処

Mac にて pip3 のアップデートを行ったところ、以下のエラーが出るようになった。

“`
Traceback (most recent call last):
File “/Library/Developer/CommandLineTools/usr/bin/pip3”, line 10, in
sys.exit(main())
TypeError: ‘module’ object is not callable
“`

直前に

“`
xcode-select –install
“`

は実施済だったため別の対処方法を探したところ、同様の事象で stack overflow に [Problems using zsh with Catalina, Python/Python3, pip/pip3, PATH, zshrc, etc](https://stackoverflow.com/questions/58423609/problems-using-zsh-with-catalina-python-python3-pip-pip3

元記事を表示

Discordのテキストチャットからマイクラサーバにコマンドを差し込む

# := screenで起動しているプログラムにコマンドを差し込む
## やりたいこと
– マイクラプレイヤーの方であれば、「一緒に遊んでいた人が寝落ちてしまって、ゲーム内で夜を明かせない」というとき、その人をマルチサーバから一時退出させたいといった場面が稀によくあるかと思う
– マイクラはサーバコンソールから直接コマンドを入力すれば、operator権限の処理を実行できる
– 或いは、サーバコンソールから、 `op HOGE` とすればユーザHOGEにop権限を付与し、HOGEがゲーム内チャットでop権限の処理を実行することも可能
– op権限を持つとkickコマンドが扱えるようになる
– しかし、大人数がアクセスするワールドで参加者全員にop権限を与えるのは無謀の極み
– そこで、**特定のopコマンドのみを別インタフェースから誰でも実行できるような手段を用意したい**

## 運用しているマイクラサーバの状況
– 1つのサーバで4つのワールドを同時に建てている
– それぞれのワールドをscreen内で実行し、別々のポートを開放して割り当てることで容易に並列動作が可能
– この

元記事を表示

是丈は心得おくべし:AWS

深く後悔したことをメモしていく。

# AWSのサービスと関係するコードは、最初の1行からAWS上でユニットテストすべし

ユニットテストは手元で走らせたいのが人情だが、やってはならない。うっかり`moto`を信じた私が馬鹿だった。`moto`は何をしてもまったくエラーを返さない。

# Lambdaでは共有メモリが使えない

そのため`multiprocessing`の`Pool`と`Queue`が使えない。そのため`loky`も使えない。

[Parallel Processing on AWS Lambda with Python using Multiprocessing](https://sysadmins.co.za/parallel-processing-on-aws-lambda-with-python-using-multiprocessing/)

随時追記する予定。

元記事を表示

DjangoをCloud BuildでApp Engineに自動デプロイするときの、cloudbuild.yamlの例

# 概要
DjangoプロジェクトをCloud BuildでApp Engineに自動デプロイできるようにする設定。
cloudbuild.yaml設定内容の、日本語の情報がなさそうなので共有します。

# TL;DR

[標準的なデプロイ方法](https://cloud.google.com/source-repositories/docs/quickstart-triggering-builds-with-source-repositories)を実施+以下のcloudbuild.yamlファイルを使用します。

“` yaml:cloudbuild.yaml
steps:
# collectstatic用のdjangoを走らせるための環境を作る
– name: ‘python:3’
entrypoint: python3
args: [‘-m’, ‘venv’, ‘/workspace/venv’]
– name: ‘python:3’
entrypoint: “/workspace/venv/bin/pip”
args: [‘install’, ‘-r’,

元記事を表示

【画像処理】不透明部分からマスク用の白黒画像を生成するスクリプト

# できること

Before
before

After
after

# 嬉しさ
3DCGなどのテクスチャを生成するのが楽になる

# Source
https://github.com/minato-eigenport/toys/blob/master/genmask.py

“`genmask.py

import numpy as np
import os
import re

from PIL import Image
f

元記事を表示

書類”間”の文字の揺らぎをチェックする

Wordファイル内であれば文字の揺らぎ(”ドライバー”と”ドライバ”等)があればアラートがでますが、複数のExcel、Wordファイルの記載をまとめてチェックする方法が無かったので作ってみました。同じディレクトリにあるExcel、Wordファイルを読み込んで一斉に文字の揺らぎのチェックをかけます。複数のファイルからなる申請書とかを作りたいときに役立てばよいなと思ってます。(といいつつ、janomeを使いたかったというスケベ心がチラホラ)

#1.使用モジュール一覧。

“`python:module.py
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.tokenfilter import *
import sys
from collections import Counter
import pandas as pd
import docx2txt
import numpy as np
import os
import openpyxl
import op

元記事を表示

OTHERカテゴリの最新記事