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

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

Pythonでメソッドのオーバーライドの抑制

最初3で投稿しましたが,1の昨日分が未投稿で空いていたので移動させました.

継承時のメソッドのオーバーライドの禁止は,例えばJavaやC++では`final`キーワードで実現できますが,Pythonの標準機能としてはありません.
ということで,Python3においてどうやってやればよいかを調べたり,考えたりしました.

## 環境

– Ubuntu 18.04
– Python 3.6
– mypy: 0.750

## 実装

今回の実装は全て,https://github.com/eduidl/python-sandbox/tree/master/prohibit_override に置いています.

## mypy

– https://github.com/python/mypy

Python 3.5から型ヒントが導入されましたが,その型ヒントを使って静的に型チェックを行うためのツールです.
そんなmypyですが,`@final`というデコレータを用いて,オーバーライドをしてはいけないメソッドであることを表明することができます.

使い方としては以下の通りです.`@fin

元記事を表示

Python+Cursesで、大昔のキャラクタゲームを再現してみよう。その2

昔懐かし、Robotsゲームを、python3とcursesで再現してみました。
私の投稿のCから、pythonへの移植版です。
元の記事は、これです→【昔懐かし、CBM-3032のようなキャラクタゲームをncurseswで再現しやう。】
まだ、pythonには慣れてないので、ちょっと手古摺りましたが、何かのご参考になれば幸いです。

このゲームは、途中で、Ctrl-Cで止めると、ターミナルの設定がおかしくなってしまうので、
ゲーム更新時の、”Try Again? [y/n]” で、’n’を押して止めて下さい。

Robotsゲームですが、名前を変えて、「maneaters」にしてあります。
拙いプログラムですが、よろしくお願いします。

“`maneaters.py
#!/usr/bin/python3

import curses
import random
import locale

xsize = 40 # ゲーム画面サイズx
ysi

元記事を表示

[やってみた(苦戦中!)] AtCoder 版!蟻本 (初級編) [2-1 すべての基本 “全探索”]

## はじめに

筆者はAtCoderを取り組み始めたアラフォー・ザコーダである(本職は非software職だがザコーダと名乗ってみたかった。unコーダと呼んでいただいても良い)。

[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に蟻本記載例題の類似問題が記載されている。

[AtCoder](https://atcoder.jp/?lang=ja)を利用してジャッジできるアルゴリズムの良問が選別されているので、初学者にうってつけである。

上記記事著者である、けんちょん (Otsuki)@drken氏に感謝。

筆者は[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)を頼りにスキルアップを図っている途中である。

* [1 いざチャレンジ!でもその前に — 準備編に取り組んだ過去記事](https://qiita.com/tagtagtag/items/eaa0655d26cdcbd5202

元記事を表示

Python3 + mysql-connector-pythonで実行したSQLを知りたい時

あれ?なんで出力結果が期待値通りじゃないんだ?ってときにSQLを確認したいときはよくありますが、Python入門したばかりでやり方がわかりませんでした。Google先生に質問してみるも、意外と探すのに苦労したので備忘のためまとめておきます。

## バージョン
Python:3.7.3
mysql-connector-python:8.0.18

## 本題

“`
cur.execute(“select * from tables where id = (%s)”, (id,))
print(cur._executed)
“`

これでOK。

元記事を表示

openssl@1.1ならmacOS MojaveとpyenvでPython 3.7がインストール可能

# はじめに

Macbook ProのOSを2年くらい再インストールしていなかったので実行。
環境を再構築しようとしたところ、pyenvでPython 3.7をインストールするところで詰まり。
Ubuntuだとまとまった解決方法は散見されるんだけど、Mojaveは部分的?
需要があればと思いまとめました。

## おことわり

pyenvのインストールについては公式ドキュメントを参照してください。
https://github.com/pyenv/pyenv

pyenvインストール時における基本的なエラーの解法は、pyenv公式のWikiを参照してください。
https://github.com/pyenv/pyenv/wiki/Common-build-problems

# 事象

`pyenv install 3.7.0` すると、 `ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib` エラーが出ます。
Mojaveだと先に参照した解法ではこの問題を解決できません。

“`
E

元記事を表示

非同期サーバー Django3.0を体験せよう

# 前書き
![maxresdefault.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/3f6453ef-3bf7-b192-3cf7-dcdaf0dcf591.jpeg)

3日前に、Django3.0正式にリリースされました。
[リリースノードリンク](https://docs.djangoproject.com/en/3.0/releases/3.0/)
沢山変更点がある中で、`ASGI `のサポートが追加されたことに非常に興味あります、
実際使ってみたいと思うます。:sunny:

#### 補足:ASGIは何でしょう?:briefcase:
“`
ASGI(非同期サーバーゲートウェイインターフェイス)は、WSGIの精神的な後継者であり、非同期対応のPython Webサーバー、フレームワーク、およびアプリケーション間の標準インターフェイスを提供することを目的としています。

WSGIが同期Pythonアプリの標準を提供したのに対し、ASGIは、WSGIの下位互換性の実装と複数

元記事を表示

時系列データで売上予測しようとしたときに参考になった記事

こんにちは、最近初めてグリコの売上予測ハッカソンで時系列データを扱ったのですがこれがむずかった。。。
最終的にコンペでは中の中の上ぐらいまではあげられたので、忘れないうちに助けていただいた記事たちをここにまとめておきたいと思います。

参考にさせていただいた記事の内容はざっくりまとめると以下のようになります。

– LightGBM
– LSTM
– RandomForest
– 遺伝的プログラミング
– 特徴量の作り方、データの見方
– statsmodelsの季節成分分解
– changefinderを利用した異常検知

## 記事まとめ一覧

#### – SIGNATE お弁当の売り上げをLightGBMで予測してみた

> https://qiita.com/chusan/items/d7b210243f3b646375ba

季節性のある時系列データをうまくLightGBMで分析できています。
トレンドを外して考えることで精度がよくなる一例で、RandomForestを使った特徴量選択の方法も記載してくださっており本当に助かりました。
このコードのおかげで中の中にたどり

元記事を表示

matplotlibで半径1の扇形をいい感じに書く(モンテカルロ法)

# この扇形の線を出したい
モンテカルロ法で円周率の近似解を求める際に,可視化しようとして以下のものを作成.
その途中で半径1以内にあるかないか見やすくしようと思い,線を出そうと思ったら結局ググる事になったので残しておく.
![num_of_trials_100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261915/65a01e34-238a-4ea1-21b5-fda018eb4dcd.png)

# 結論

“`python
import matplotlib.patches as patches
ax = plt.axes()
c = patches.Wedge((0, 0), 1, 0, 90, fill=False, ec=’k’)
ax.add_patch(c)
“`

で出来る[^1].

## 引数について

“`python
patches.Wedge(中心,
半径,
ここから,
この角度ま

元記事を表示

初心者が2日でPythonを使いスクレイピング によりリアルタイムランキングを作った話

#はじめに
pythonのスクレイピングをやってみたく、さらに実用的な普段不満に思うことを解決しようと着手しました。
(ちょっと卑猥かもしれない動機です)
毎回、飲むメンツでは3次会くらいに相席屋にいこうとなるのですが、毎回課題となることがあります。

###課題1:女性の多い店舗に行きたいが比較一覧できる店舗情報がない
「3次会にいこう!」となるのですが、どこの店舗にどれだけ男女比率があるのか一瞬でわかるサイトがなく毎回店舗検索してHPで確認して違う店舗のサイト見てと繰り返していて僕らは女性の多い店舗を探していち早く行きたいのにものすごく時間がかかる。

###課題2:店舗毎に情報はあるものの探しにくい
都道府県から店舗を探し、店舗名のページに訪問。そこの情報で男女比率が出ているので見る。期待の結果ではない場合は違う店舗を検索。違う店舗のページに行くの繰り返しでめんどくさい。単純に男女比率で行く店舗を決めたいだけなのに前の店舗でみた数字を覚えてないためまた探すの繰り返し。

###課題3:行き先は近くの店舗ではなく女性の多い店舗に行きたいだけ
特定の店舗に行くことが決まり、ただ

元記事を表示

Pythonで任意のディレクトリの画像をシャッフルして別のフォルダーに連番で保存する。

#Pythonで任意のディレクトリの画像をシャッフルして別のフォルダーに連番で保存する。
Jupyter-notebookでディレクトリの画像をシャッフル。

“`Python:shuffleimage.ipynb
#フォルダ内の画像をシャッフルして保存するコード
import os
from random import shuffle
from glob import glob
from shutil import copy

data_dir_path = “ここに画像が入っているディレクトリの絶対パスをペースト” #シャッフルしたい画像を内包しているフォルダーパス

base_path = os.path.join(data_dir_path ,”*.png”)

#シャッフルした画像の保存先ディレクトリの作成
make_dir_path = data_dir_path +”_shuffle” #保存先ディレクトリのパス
os.makedirs(make_dir_path, exist_ok=True)

#フォルダー内の画像をシャッフルして保存先ディレクトリに保存
fil

元記事を表示

Twitterのユーザーと文豪をAIで比較する

#自己紹介
どうもこんにちは、ネプソンこと杉山航です。
N高等学校通学コースプログラミングクラス所属の2年生(N高3期生)です

各種リンク貼っておきます。

– [Instagram](https://www.instagram.com/kou_nepson/)
– [Twitter](https://twitter.com/kou_nepson)
– [Facebook](https://www.facebook.com/cjgjc803)
– [GitHub](https://github.com/kou-nepson)

普段は機械学習を使った自然言語処理を主に開発しています

#まえがき
– この記事はチームラボさんでLTした内容を中心に進めていきます。
その時のスライドは[こちら](https://docs.google.com/presentation/d/1d4GuU4dYyavDxVDOnWUjF_8wybZkMHGpMUE0AeNQd6c/edit?usp=sharing)です

– 見せるのも恥ずかしいようなコードしかありませんがGitHubリポジト

元記事を表示

Tkinter マウス操作でスクロール移動をする

## 事の発端
私はtkinterでcanvasにスクロールバーを追加して動作させることに成功しました。しかし、新たにマウスで右ボタンを押しながら画像を上下左右に動かしたいという要望が発生しました。また、マウスのスクロールによってズームインとズームアウトをしたいという要望も発生しました。

## 動作環境
windows 10
PyCharm Community 2019.2
python3.7.5

## 参考元サイト
https://codeday.me/jp/qa/20190625/1100104.html
このサイトのコードを自分にカスタマイズしました。

## コード
“`python3
import tkinter as tk
import random

class Example(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
self.canvas = tk.Canvas(self, width=640, height=480, bg=”w

元記事を表示

Time Conversion/ Python3

#背景
Hacker RankのTime Conversionを解いているときに、
どちらの表現方法が適切かわからなかったので
ひとまず両方記録しておく。

“`python
#最初から8個取る
print(str(time2[:8]))
#後ろから2個は取らない
print(str(time2[:-2]))
“`

#Code
“`python
# coding: utf-8
# Your code here!
def timeConversion(s):
print(s)
time = s.split(“:”)
print(time)
if s[-2:] == “PM”:
if time[0] != “12”:
time[0] = str(int(time[0])+12)
print(time)
else:
if time[0] == “12”:
time[0] = “00”
print(time)

元記事を表示

外為で勝つために その1

みなさんは外為、してますか?
私はしてます。そして負けが多いです。

なぜ勝てないのか。
センスはひとまず置いておき、
まずは情報を集めて整理して、手元に並べておくという基本的なことを考えました。

要するにデータ不足が原因ではないかと、そう思ったわけです。

## この記事で実現したいこと
相場の基本である「トレンド」を捉えること。
相場は「トレンド」と「レンジ」しかないと誰かが言ってました。

– トレンド:上昇・下降いずれかに大きく動く相場
– レンジ:上下に大きく動くことのない安定した相場

ならば、トレンドを押さえるにはレンジを排除すれば良いことになります。
(多分)

そこで、次の問題。
レンジを排除するにはどうしたら良いか?

ちなみに、
絶えずチャートを見続けるのはイヤです。
視界いっぱいに液晶モニターを並べるのはもっとイヤです。
(だから勝てないって言われたら、厳しいなあ)

じゃあプログラムで解決しよう。

相場を一定間隔でモニタリングし、
安値・高値の幅が小さいときはレンジとみなし
大きく乖離していたらトレンドの可能性ありとして通知します。

こういう常時稼働的な

元記事を表示

UnicodeDecodeError: ‘cp932’ codec can’t decode byte…

## ERROR

“`
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x86 in position 132: illegal multibyte sequence
“`

## OPEN WITH ENCORING
“`.py
json_file = ‘./test.json’
with open(json_file, encoding=”utf-8_sig”) as f:
data = json.load(f)
“`

元記事を表示

python正規表現(自分用メモ)

#正規表現とは
正規表現とは、さまざまな文字列に汎用的に解釈するための文字列のこと。
簡単に言うと、いろいろな文字列を1つの文字列で表現するための文字列のことをいいます。

ここで、文字列とは、「この世に存在する読めるもの全部」という捉え方でいいと思います。
「伸びしろ」でも、「フリーメイソン」でも、「114514」でも。

#簡単な例
正規表現を使うとなにが嬉しいか。
それは、ある程度形式がわかってる文字列だけにマッチングしたものを取り出すことができること。

###「プロフェッショナル」にマッチ
たとえば、プロフェッショナルとはなんなのかを知りたいときには、このような書き方をする。

“`python:reg.py
import re #pythonでは正規表現を行うための標準ライブラリがある

s= “””
まあ、そうですね。
プロフェッショナルとはケイスケ・ホンダ。
伸びしろですね!
“””

p = re.search(r”プロフェッショナル.*。”,s) #プロフェッショナル+任意の文字列+。というパターン
print(p)
#<_sre.SRE_

元記事を表示

住所と郵便番号検索が可能な対話式コンソールアプリケーション

# はじめに
AdventCalendar初投稿です。
python枠が空いていたので、僭越ながら1件投稿させていただきます。

前回の記事はこちら→[LINE Notify + Pythonで天気情報を取得する方法](https://qiita.com/S_eki/items/206ddb321768ad4e7544)

# 背景
早いもので今年も12月。
12月といえばクリスマスですが、年賀状を用意する時期でもありますね。

年賀状を出そうと思ったとき、住所はわかるけど郵便番号何だったっけ・・・?と思ってしまうこと、ありませんか?(逆もまた然り)

今だと、住所をgoogle検索すれば郵便番号が出てきますが、
ネット環境が無くても住所・郵便番号が検索できるツールがあればと思い、
pythonの習熟がてら簡単なコンソールアプリを作ってみました。

郵便番号から住所を検索する事例は結構ありますが、
住所から郵便番号を検索する事例はあまりないと思ったので、どちらの場合でも対応できるようにしてみました。

# 環境
・Mac OS Mojave
・python3
・pyinstaller

元記事を表示

Pythonの高速フィボナッチ

## こうです(lru_cacheをつかって)

“`python
from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
if n <= 1: return 1 return fib(n - 2) + fib(n - 1) ``` ## こうです(自作キャッシュでメモ化して) ```python def fib(n): cache = {} def impl(ni): nonlocal cache if ni <= 1: return 1 if ni not in cache: cache[ni] = impl(ni - 2) + impl(ni - 1) return cache[ni] return impl(n) ``` @shiracamusさんからのコメントを元に少し変更したもの↓ ```python def fib

元記事を表示

Python 半角の記号を削除したい

## やりたいこと
* 文字列の中に含まれる以下の記号を削除したい

“`
!”#$%&'()*+,-./:;<=>?@[\]^_`{|}~
“`

## 確認環境
* python3.6
* CentOS7

## 方法
“`
>>> import string
>>> text = ‘Abcd1!EfgH”#$%2s&\’I()j*5k+,-./:l;MMM<=>NNN?@[\Z]^_`{99|00}7~8′
>>> result = text.translate(str.maketrans( ”, ”,string.punctuation))
>>> print(result)
Abcd1EfgH2sIj5klMMMNNNZ990078
“`

## 解説

* 分解して記載してみる

“`
>>> import string
>>> text = ‘Abcd1!EfgH”#$%2s&\’I()j*5k+,-./:l;MMM<=>NNN?@[\Z]^_`{99|00}7~8′
>>> kigo = string.punctuation
>>> print(kigo)

元記事を表示

雑にsimulated annealingする話

この記事は[IQ1AdcC2019(2枚目)](https://adventar.org/calendars/4711)の5日目の記事です。
(書き忘れてた。@chakku_000すまん)

磁性体の単純なモデルとして、Ising模型とかPotts模型とかXY模型とか呼ばれるものがある。

こいつらの基底状態を雑なsimulated annealingで求めてみる。

## simulated annealing とは

> 焼きなまし法(やきなましほう、英: Simulated Annealing、SAと略記、疑似アニーリング法、擬似焼きなまし法、シミュレーティド・アニーリングともいう)は、大域的最適化問題への汎用の乱択アルゴリズムである。広大な探索空間内の与えられた関数の大域的最適解に対して、よい近似を与える。
> ([Wikipediaより](https://ja.wikipedia.org/wiki/%E7%84%BC%E3%81%8D%E3%81%AA%E3%81%BE%E3%81%97%E6%B3%95))

雑に言ってしまえば最適化問題を解くためのヒューリスティックな手

元記事を表示

OTHERカテゴリの最新記事