Python3関連のことを調べてみた2020年09月14日

Python3関連のことを調べてみた2020年09月14日

pelicanでmarkdownをブログにする

wordpressの管理が面倒で、
もっとシンプルにgithubにcommit/pushするだけでできないものかと試してみた。
まだ途中だがgithubにUPするところまで書きたい。

# 参考

* [公式サイト](https://docs.getpelican.com/)
* [公式サイトのQuickstart](https://docs.getpelican.com/en/4.0.1/quickstart.html)

# 環境

* Windows10
* Python 3.8.2

# インストール

“`console
> pip install pelican markdown
Collecting pelican
Downloading pelican-4.5.0-py2.py3-none-any.whl (673 kB)
|████████████████████████████████| 673 kB 2.2 MB/s
Collecting markdown
Downloading Markdown-3.2.2-py3-none-any.whl

元記事を表示

Pythonでシングルトンパターン

クラスにシングルトンパターンを実装するSingletonMetaメタクラスと、これを適用したMySingletonクラスのコード例。

“`ex_meta_singleton.pyt
class SingletonMeta(type):
def __init__(cls, name, bases, disc, **kwargs):
cls.__instance = name

def __call__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = super().__call__(*args, **kwargs)
return cls.__instance

class MySingleton(metaclass = SingletonMeta):
pass
“`
独習python 第11章オブジェクト指向構文 より引用

元記事を表示

pythonのディスクリプター

ディスクリプターとは下記のようなメソッドを備えたクラスのことである。

|メソッド|呼び出しタイミング|
|—|—|
|__get__(self,obj,type)|アトリビュートを取得するとき|
|__set__(self,obj,value)|アトリビュートを設定するとき|
|__delete__(self,obj)|アトリビュートを削除するとき|

__getattr__, __setattr__などの特殊メソッドとは異なるメソッドであるため、ディスクリプターとは区別して認識する必要がある。

・アトリビュート操作に関わる挙動を別クラスに切り出せる(=クラスをまたがるアトリビュート関連の機能を再利用できる。)
・特定のアトリビュートに対してのみ適用される挙動を定義できる。(__getattr__, __setattr__では、そのクラスのすべてのアトリビュートに影響)

な丼メリットがあります。ディスクリプターは、プロパティをはじめ、クラス/静的メソッド、superなどの背後でも利用されています。

“`descriptor_basic.py
#ディスクリプターの

元記事を表示

__bool__メソッドを用いたオブジェクトの真偽判定条件の実装

“`reserve_bool.py

import math

class Coordinate:
def __init__(self, x, y):
self.x = x
self.y = y

def __bool__(self):
print(‘__bool__’)
return self.x != 0 or self.y != 0
def __len__(self):
print(‘__len__’)
return int(math.sqrt(self.x **2 + self.y **2))

if __name__ == ‘__main__’:
c = Coordinate(0,0)
if c:
print(‘c is True.’)
else:
print(‘c is False.’)
“`

独習python 第11章オブジェクト指向構文 より引用

元記事を表示

Pydroid 3 – IDE for Python 3 (Android) の有料オプションを試した

[Pydroid 3 – IDE for Python 3](https://play.google.com/store/apps/details?id=ru.iiec.pydroid3) はAndroidで動くPythonですが、PC上のPythonと互換性が高くtkinterなどのGUIプログラムも同じソースを使うことができます。スマホだけでまあまあ使えるアプリが書けるのでお勧めです。さらにOpenCVやTensorFlowまで動くそうです。残念ながらこれらのライブラリは有料オプションとなっていますが、3日間のお試しができるので申し込んでみました。
#有料オプション申し込み
有料オプションは次の2つの種類があります。
・買い切り¥1160
・月々¥110 最初の3日は無料
3日間お試しをやってみることにしました。申し込みは製品から行えます。
左上アイコンをクリックしてサイドメニューを開くと一番上に有料オプション申し込みメニューがあります。申し込みメニューに入ると上記2つのオプション選択メニューになります。
![Screenshot_20200913-074331.png](htt

元記事を表示

LeetCode解いた: Valid Palindrome

Palindromeとは回文のことだそうです
https://leetcode.com/problems/valid-palindrome/

問題文:

>Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
>
Note: For the purpose of this problem, we define empty string as valid palindrome.
>
Example 1:
Input: “A man, a plan, a canal: Panama”
Output: true
>
Example 2:
Input: “race a car”
Output: false

>
Constraints:
s consists only of printable ASCII characters.

与えられた文が回文になるか調べます。ただし英数字以外はすべて無視します(スペース、ピリオド、記号

元記事を表示

Twitter api Python 自動化(自分用メモ)

#コピペ用
CONFIG = {
“CONSUMER_KEY”:”自分の”,
“CONSUMER_SECRET”:”自分の”,
“ACCESS_TOKEN”:”自分の”,
“ACCESS_SECRET”:”自分の”,
}

import tweepy
import time

CONSUMER_KEY = CONFIG[“CONSUMER_KEY”]
CONSUMER_SECRET = CONFIG[“CONSUMER_SECRET”]
ACCESS_TOKEN = CONFIG[“ACCESS_TOKEN”]
ACCESS_SECRET = CONFIG[“ACCESS_SECRET”]

q_list = [“検索するKW”]
count = 100

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

for q in q_list

元記事を表示

boto3でno attributeのエラーがでたときはバージョンを確認しよう

## boto3のエラー
boto3のput_function_event_invoke_configを使用したところ、

“`python
import botocore
import boto3

client = boto3.client(‘lambda’)
response = client.put_function_event_invoke_config(
FunctionName=FunctionName,
MaximumRetryAttempts=0,
)
“`

以下のエラーが発生

“`
AttributeError: ‘Lambda’ object has no attribute ‘put_function_event_invoke_config’
“`

翻訳すると
> AttributeError: ‘Lambda’ オブジェクトには ‘put_function_event_invoke_config’ 属性がありません。

とのこと。

lambdaに以下を追記して、boto3とbotocoreのバージョンを確認しました。

“`p

元記事を表示

GCPとkaggle公式イメージ(docker)でGPU環境の構築

# はじめに
kaggleの画像コンペに参加するにあたりGPU搭載のマシンパワーが必要になったためGCPでGPU環境の構築を行いました。
既に大変参考になる記事がいくつもあり、私もそれらを参考に構築をしましたが、バージョンの違いなどでエラーが発生することも多々あったのでここで改めてまとめようと思います。
GCP入門者の方の助けになれば幸いです。
また、詳しい方々は間違いや改善点のご指摘をいただけますと大変感謝いたします。

# GCPへの登録

1. まずはGCPへの登録を行ってください。ガイダンスに従うだけなので問題ないと思います。
– https://console.cloud.google.com/
2. 有料利用のアクティベーションを行います。ウィンドウの右上に”ACTIVATE”のボタンがあると思うので、そちらをクリックしてください。
– なお、アクティベートしたからといって即料金が発生するわけではありません。登録の過程で300ドルの無料クレジット(クーポンみたいなもの)を得たと思いますが、これを超過して初めて実費の請求が始まります。この300ドルというのは、GPU1つ

元記事を表示

【Python】Slackbotでパスワードを生成する

こんにちは、みやびのです。

今回はSlackbot+Pythonでパスワードを実装する方法について説明します。
具体的には以下の2つについて説明します。

・Pythonでパスワードを生成する方法
・Slackbot+Pythonでパスワードを生成する

Pythonで作るSlackbotの基本については「[SlackbotをPythonで作成しよう](https://miyabikno-jobs.com/entrance-labotlatori/)」をお読みください。

## Pythonでパスワード生成する方法
Pythonのrandomライブラリを活用すれば比較的簡単にパスワード生成処理を作成できます。

“`text:関数実装例
引数1:パスワードの桁数(デフォルト8)
引数2:文字列の種類(デフォルト:大文字・小文字・数字)
リターン値:パスワード
“`

引数1に指定した桁数分の文字列をリターン。
さらに引数2によって「小文字と数字」、「大文字と小文字」、「大文字だけ」のように文字列を細かく指定できるようにします。

“`py
import random

d

元記事を表示

Pythonの数値計算ライブラリ「Numpy」の配列(ndarray)操作一覧

 Pythonの数値計算ライブラリ「Numpy」が提供するN次元配列オブジェクト(以下、ndarray)の操作方法を整理する。
 Pythonはデータ型のサポートがない為に計算が低速であり、大量のデータを使って計算する際にはndarrayを使う事が標準的です。

# 前提

“` import numpy as np “`

# A. 配列生成

ndarrayを生成する。

## 【`array(object, dtype=None, copy=True, order=’K’, subok=False, ndmin=0)`】
* リストからndarrayを作成する。
* object:元となるリスト(又はそのように扱う事ができるもの)
* dtype:要素のデータ型。未指定の場合は要素に基づいて自動選択。(参考:[NumPyのデータ型dtype一覧とastypeによる変換(キャスト) | note.nkmk.me](https://note.nkmk.me/python-numpy-dtype-astype/))

“`python
y = np.array([1,2,

元記事を表示

paiza Aランクレベルアップ問題集【座標系での向きの変わる移動】解いてみたPart2【Python3】

はじめに

4問目がFinal問題より難しく感じました

* [解いてみたPart1](https://qiita.com/aoe1928/items/bba2e19cfb14a2a51f9a)

* [問題文](https://paiza.jp/works/mondai/a_rank_level_up_problems/problem_index?language_uid=python3)

STEP: 1 マップからの座標取得

* [問題文](https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_snake_move_step1?language_uid=python3)

位置を取得するだけなので多次元配列に慣れていれば特に難しくないはず…

“`python3:step1.py
def int_input():
return [int(i) for i in input().split()]

def main():
line = int_inpu

元記事を表示

pythonで極力簡単にGUIを作る【tkinter編】

pythonならデフォルトで入っているtkinterを使ってUIを作る
操作画面上での行動を受け取って処理につなげる
深層学習のハイパーパラメータを選択式にして詳しくない人でも弄れるようにできたりしたい

#一番シンプルなコード:ウインドウの立ち上げ

“`python
import tkinter

root = tkinter.Tk()
root.title(“たいとる”)
root.resizable(False, False)
root.geometry(“400×200”)

#ここに付け足していく

root.mainloop()
“`

以上でウインドウが立ち上がる

resizableでサイズ変更の可不可を操作
geometryで描画サイズを調整
mainloopでrootに設定した内容を実行する

これを基礎としてガチャガチャ付け足していく

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/da238ac3-be2a-d6ab-60d7

元記事を表示

Python用のDXFファイル読み書きライブラリ「ezdxf 」を使ってDXFファイルをPNGに変換する

# モジュールのバージョン
python v3.8.5
ezdxf v0.14
matplotlib v3.3.1

# サンプルのDXFファイルを生成する
※[このサイト](https://emotionexplorer.blog.fc2.com/blog-entry-68.html)のソースコードをマルパクリしました。
ありがたや?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357470/18b4690c-e977-776d-dffe-b8c36fb282d0.png)

“` py
import ezdxf
import math

DXFVERSION = ‘R2010’
NUMCORNERS = 5

def create_dxf():
“”” 五芒星のDXFファイルを生成
“””
# 星の角座標計算
startangle = math.pi / 2.0
pitchangle = math.pi * 2.0 / 5.0

元記事を表示

Pythonの集合演算

Pythonのsetでの集合演算方法を整理する。

#【`set`】
* 集合を生成する。
* リテラルは、波カッコ「{}」になる。

“`python
X = set([1,2,3,4,5,6,1,1,1])
print(X)
# {1, 2, 3, 4, 5, 6}

Y = {9,9,9,4,5,6,7,8,9}
print(Y)
# {4, 5, 6, 7, 8, 9}
“`

# 【`.union(set)`】
* 和集合(OR)
* 演算子「|」で代用できる。

“`python
Z = X.union(Y)
print(Z)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

Z = X | Y
print(Z)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
“`

# 【`.intersection(set)`】
* 積集合(AND)
* 演算子「&」で代用できる。

“`python
Z = X.intersection(Y)
print(Z)
# {4, 5, 6}

Z = X & Y
print(Z)
# {

元記事を表示

Pythonでのリスト要素の取得

# 1. 指定要素を取得する。(インデックス指定)

* 要素番号(インデックス)は0から開始。
* 負の要素番号は-1から開始。後ろから数えて、指定位置の要素を取得。

“` $ list = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] “`

“`python
list[0]
# ‘A’

list[1]
# ‘B’

list[2]
# ‘C’

list[-1]
# ‘E’

list[-2]
# ‘D’
“`

# 2. リストの一部を取得する。(スライシング)

* `[開始番号:終了番号:ステップ数]`と指定。終了番号の要素は含まれない。
* 開始番号省略時は、最初の要素から取得。
* 終了番号省略時は、最後の要素まで取得。
* ステップ数省略時は、1(1個ずつ)が指定。

“` list = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] “`

“`python
list[3:]
# [‘D’, ‘E’]

list[:3]
# [‘A’, ‘B’, ‘C’]

list[::-1]
# [‘E’, ‘D’, ‘C’, ‘B’, ‘A’]

元記事を表示

変数への累算代入とオブジェクトへの累算代入の違いを図で理解する

## オブジェクト(値)と変数

Pythonでは、None、数値、関数、クラス、メソッド、モジュールなど **すべて** が **オブジェクト**(何らかのクラスのインスタンス)に **変換** されます。
**変数** は **オブジェクトへの参照値** である **オブジェクトid** を **保持** します。どんなオブジェクトでも **代入** できます。違う型のオブジェクトを **再代入** することもできます。
**変数** は、**変数名** を 辞書キー として、**オブジェクトid** を 辞書値 として **変数辞書** に格納されます。**変数辞書** の内容は、`vars`関数, `locals`関数, `globals`関数で確認できます。
**リスト** は **オブジェクトid** の **配列** です。配列要素毎に違う型のオブジェクトを 代入・再代入 することもできます。

## 変数代入・再代入

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

元記事を表示

初心者がPythonでウェブスクレイピング(1)改良版

この記事は前回記事[初心者がPythonでウェブスクレイピング(1)](https://qiita.com/inoken0926/items/bc18035925549c85727f)のソース改良版です。
bs4メソッドの使い方を変えて、Yahooニュースのヘッドラインニュース抽出時の最後に余計なものが出てしまうのを改善できたので、そのメモです。
 ※環境:MacOS Catalina Python3.7.3

#Pythonでのウェブスクレイピング学習のロードマップ
(1)ローカルでとりあえず目的のブツのスクレイピングに成功する。 ←まだココ
(2)ローカルでスクレイピングした結果をGoogleスプレッドシートに連携する。
(3)ローカルでcron自動実行を行う。
(4)クラウドサーバー上での無料自動実行に挑戦する。(Google Compute Engine)
(5)クラウド上で、サーバーレスでの無料自動実行に挑戦する。(たぶんCloud Functions + Cloud Scheduler)

#サンプルPGM(1)の機能
・r

元記事を表示

Python入門 モジュールと条件式について

#はじめに
Pythonのif文を使用した条件式について学習しました。その勉強記録です!

#概要
Python学習中です。初歩の条件式を「RPGゲームの対戦状況」を再現して、学習したのでアレンジを加えて、まとめてみました。

#学習内容
Python入門
条件式
変数とデータ型
randomモジュール

#完成コード

“`py
# RPGの攻撃状況を再現

# モンスターと戦っている。
# 1から10のサイコロをふって、
# 6未満の場合、サイコロの目だけダメージを与えたと表示。
# 6以上の場合、クリティカルヒットとして、100のダメージを与えたと表示。
# 0の場合、防御されたとして、0ダメージを表示。

import random
hit = random.randint(0,10)
if 1 <= hit < 6: print("スライムに、" + str(hit) + "のダメージを与えた!") elif hit >= 6:
print(“クリティカルヒットダメージ100を与えた”)
else:
print(“ダメージは、” + str(hit

元記事を表示

Pythonで株価取得

Pythonの勉強をしていく中で面白そうなモジュールがあったので使ってみました

必要なもの

pandas_datareader

以下のコードでインストールできます
`pip install pandas-datarader`

本題

今回はGAFAと呼ばれている企業の株価を取得しました
ほかの銘柄は[Yahoo Finance](https://finance.yahoo.co.jp/)で検索してください

“`python:read-stock
import pandas_datareader as web
import pandas as pd
import datetime
data=pd.DataFrame(web.get_data_yahoo([‘GOOG’,’AAPL’,’FB’,’AMZN’])[‘Adj Close’])

print(data.pct_change().tail())
“`
出力例

Symbols         GOOG      AAPL        FB      AMZN
Date
2020-09-04

元記事を表示

OTHERカテゴリの最新記事