Python3関連のことを調べてみた2021年05月15日

Python3関連のことを調べてみた2021年05月15日

新しいmacを買ってから、AWS CLIにprofileを設定するまで

# はじめに

新しいmacで何もしていない状態なので、Homebrewのインストールなど、すでに済んでいる場合は飛ばして進めてください!

1. [Python3のセッティング](#1-python3のセッティング)
1. [Homebrewをインストール](#homebrewをインストール)
1. [pyenvをインストール](#pyenvをインストール)
1. [PATHを通す](#pathを通す)
1. [pyenvでPythonをインストール](#pyenvでpythonをインストール)
1. [Pythonのバージョンを変更](#pythonのバージョンを変更)
1. [Pythonのバージョンを確認](#pythonのバージョンを確認)
1. [AWS CLIのインストール](#2-aws-cliのインストール)
1. [インストーラをダウンロード](#インストーラをダウンロード)
1. [インストールプログラムを実行](#インストールプログラムを実行)
1. [AWS CLIのバージョンを確認](#

元記事を表示

一定期間が過ぎたら使用できなくするコードの作成

#背景
pyinstallerとかでexe化してお試し版を配布する際に、使用期限を付けたいときのコードです。自分で作ったexeが勝手に独り歩きしてあちこちで配布されないために…。

#コード説明
1:今日の日付を入手
2:使用制限”limitdate”を記載して、日付方式に変更。
3:日付を比較して、使用期限を過ぎていないようであれば、何か他の操作に移る。
 (ここではOKがプリントされます)

“`python:limit.py
from datetime import datetime

today = datetime.now()

def LIMIT():
limitdate= str(“2021/05/19″)
limitdate = datetime.strptime(limitdate,”%Y/%m/%d”)
if limitdate >= today:
print(“OK”)
else:
sys.exit()

LIMIT()

元記事を表示

pythonで作成されたファイルの上書き保存を回避するために

#背景
アウトプットとしてExcel等のファイルを書き出す場合、保存先のフォルダに同一名の大切なファイルがあったのに上書きされちゃって、後々にしまった!と思ったことがあるので、備忘録もかねて同じファイルが存在したら(1)、(2)、(3)…とナンバリングされるようなコードを書きました。
(環境はwindows10のpython3.7.1です。)

#コード説明
###while文の前の準備
1:ファイル名を記載。(ここでは”テスト.xlsx”)
2:ディレクトリからファイル名のリスト(files)を取得。
###while文1周目
1:while文でもし、同じ名前のファイル(”テスト.xlsx”)がファイル名のリスト”files”中にあったら”(1)”をつける。
 (”テスト.xlsx”から”.xlsx”を一度消去して、”(1).xlsx”を付けています。)
2:number という変数で”(num-1)”つまり(0)がファイル名にあれば消えるようにする。
 (1周目のwhile文ではこの操作は関係ないです) 
3:num =2になる。
###while文2周目
1:もし”テスト(1)

元記事を表示

【AtCoder】ABC200をPython3で解説

ABC200の解説。

https://atcoder.jp/contests/abc200

## A – Century
### 解説
年→世紀を求めるには、年から1を引いて、100で割って、1を足す。

### コード
“`python
N = int(input())
print((N-1)//100+1)
“`

## B – 200th ABC-200
### コード1(“`int“`のまま)
“`python
N, K = map(int, input().split())

for _ in range(K):
if N % 200 == 0:
N //= 200
else:
N = N * 1000 + 200

print(N)
“`
※“`int“`のまま計算する方法。
 “`N“`を1000倍して、“`200“`を足すことで実装。
### コード2(“`str“`に置き換える)
“`python
N, K = map(int, input().split())

for _ in ra

元記事を表示

AtCoder Problems Hard No.91~100解説

#Hard No.91 : D – Coloring Edges on Tree
[D – Coloring Edges on Tree](https://atcoder.jp/contests/abc146/tasks/abc146_d)
##発想
使用する色の数$K$はグラフの中で1つの頂点を端点とする辺の数の最大値になります。1つの頂点に接続している辺を順番に1,2,3…と色分けしていけば良いです。

##実装
幅優先探索をしていきます。

“`python
from collections import deque

N = int(input())
G = []
for _ in range(N):
G.append([])
for i in range(N-1):
a, b = map(int, input().split())
a -= 1
b -= 1
G[a].append((b, i))
G[b].append((a, i))

k = 0
for i in range(len(G)):
k = max(

元記事を表示

Djangoのmiddleware_chain

## 今回やる事

Djangoのmiddleware_chainの挙動に興奮したので、簡単なコードに書き換えて挙動を分かりやすく整理してみた。

## どこの部分の話か

Djangoで立てたサーバーに、リクエストが来た時にミドルウェアを通して動くように実装されている部分。

## middleware_chainとは

おおまかにまとめると、settings.pyで指定したミドルウェアリストの上から順にリクエストを渡し、一連のミドルウェアの処理が終わったら最終的にレスポンスが返されるやつ。

デコレータの仕組みにより、ミドルウェアリストを逆順でループさせて、後続のミドルウェアを自身のメソッドとして登録していく事で、この一連の流れを作っている。

まさにその名の通りの動きをする。

## 簡単に実装してみた

※色々省きます。

まずはミドルウェア関連

インスタンス化されると、引数で渡されたget_responseを自身のインスタンスにセットする。

##### コールで呼ばれたら
1. process_requestが実装されていたら実行する。
2. self.g

元記事を表示

Pythonを使ってElasticsearchへ文字列の配列を登録する方法

Pythonを使用してElasticsearchへ
文字列の配列を登録する

Elasticsearchのマッピングは特殊なことはなく,
typeをキーワードに指定すれば良い

“`mapping.py
#!/usr/bin/python3
# -*- coding:utf-8 -*-

from elasticsearch import Elasticsearch

es = Elasticsearch(‘http://localhost:9200’)
mapping = {
“mappings”: {
“properties”: {
“category” : {“type” : “keyword”}
}
}
}

es.indices.create(index=”test”, body=mapping)
es.close()
“`

“`
$ ./mapping.py
“`

にて,マッピング

“`regist.py
#!/usr/bin/python3
# -*- coding:utf-8 -*

元記事を表示

【Python】再帰なしでワンライナーフィボナッチ数列【ネタ】

ちょっとやってみたくなっただけです。

“`python
print([(j:=i+(i:=j)) for _ in range(100)] if (i:=1)|(j:=0) else 0)
“`

元記事を表示

pandas基本操作まとめ

# 0. 本記事の概要
Kaggleのコース
https://www.kaggle.com/learn/pandas
をベースとして,pandasの基本操作を纏めました.
元コースとくらべて,若干順番が前後していたり,省略あるいは追記している部分があります.

# 1. データの作成,データの読み込み
pandasのデータ→DataFrame,またはSeriesで管理する.
DataFrame:一般のテーブルデータを取り扱う型.
Series:リストを取り扱う型.すなわち,単一の列データのみ保持する.

“`.py
import pandas as pd

test_data1 = pd.DataFrame({‘type’: [‘A’, ‘B’, ‘C’, ‘A’, ‘C’,], ‘columnA’: [1, 2, 3, 4, 5], ‘columnB’: [6, 7, 8, 9, 10]})
test_data2 = pd.Series([1, 2, 3, 4, 5])

“””test_data1
type columnA columnB
0 A 1

元記事を表示

Pythonのバージョンが2から3に変わらない現象【体験談】

エンジニア歴2年のkitagawaです。

Pythonを触り始めて、バージョンが変わらない現象が起きました。
調べてみてたくさん記事が出てきましたが、手っ取り早くバージョンアップできる方法を忘備録として記載します。

“`
% python -V
Python 2.7.16
“`

と表示されてしまいます。

そこで、`~/.bash_profile`の内容を変更し反映させれば、最新のバージョンになります。

“`
vi ~/.bash_profile
“`

“`~/.bash_profile
export PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:$PATH
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”
“`

上記が記入できたらESC押下し、`:wq`と入力で保存して終了。(`:qa`だと保存せず終了)

`source ~/.bash_pro

元記事を表示

import thisコマンドでPythonの禅(The Zen of Python)

pythonのインタラクティブシェル上で、”import this”コマンドを実行すると、
“The Zen of Python”(Pythonの禅)というPythonプログラムを書く上での19の指導原則が表示される事を知りました。

こんな感じです。

“`
$ python
Python 3.9.0 (default, Jan 9 2021, 22:05:52)
[Clang 12.0.0 (clang-1200.0.32.28)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is bett

元記事を表示

ABC192 E Train ~Dijkstraの実装でハマった話~

#はじめに
 本記事は競技プログラミングにおいて解くのに困った問題について、なぜその解法に思い至るのか、どのような所でハマったか等のポイントをメモした、筆者の筆者による筆者のための備忘録となっております。読まれることを意識していないので文章がとっ散らかってます。

#問題
問題は[こちら](https://atcoder.jp/contests/abc192/tasks/abc192_e)。

**概略**
 $N$個の頂点と$M$本の辺からなる無向グラフがある。辺$i$は頂点$A_i, B_i$を結んでおり、この間の移動には$T_i$の時間を要する。ただし時刻が$K_i$の倍数である時のみこの辺の移動を開始できる。
 頂点$X$を時刻0に出発して頂点$Y$に到達するまでの最短時間を求めよ。 

#提出解答
提出解答は[こちら](https://atcoder.jp/contests/abc192/submissions/22560027)。

“`ABC192E.py
from heapq import heappush, heappop, heapify
n, m, x, y =

元記事を表示

【Python × Excel】OpenpyxlでVlookupをやってみる

#はじめに
PythonでExcelを操作していて、Vlookupしたいときありませんか?Vlookup便利ですよね。
ということでOpenpyxlを使ってブックをまたいでVlookupする方法を解説します。

今回は下記の評価データと給与データをサンプルとして使用します。

評価データ
![評価.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ecb0e63a-a4c0-6147-3cb9-53445376918d.png)

給与データ
![給与.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ec67c105-e969-3d88-de9c-02e3c1298d7b.png)

#準備
必要なライブラリをインストールしましょう。今回使うのはOpenpyxlです。

“`python
import openpyxl as px
“`

#必要ファイルの読み込み
ここで評価データと給与データの

元記事を表示

AtCoder Problems Hard No.81~90解説

#Hard No.81 : C – Boxes and Candies
[C – Boxes and Candies](https://atcoder.jp/contests/abc048/tasks/arc064_a)
##発想
隣り合う2つの箱のうち、どちらの箱からどれだけキャンディを取れば良いのか。左から箱を見ていって、$i$番目と$i+1$番目の箱うち、$i+1$番目から可能な限りキャンディを食べるのが良いです。なぜなら$i+1$番目からキャンディを食べることで$i+2$番目の箱から食べるキャンディの個数を少なくすることができるからです。
##実装

“`python
N, X = map(int, input().split())
A = list(map(int, input().split()))

ans = 0
for i in range(N-1):
if A[i] + A[i+1] > X:
#食べるべきキャンディの個数
x = A[i+1] + A[i] – X
ans += x
A[i+

元記事を表示

Ubuntuでpythonのバージョンを切り換える

pythonのバージョンを管理したり切り替える方法です

# 現在使う設定になっているpythonのバージョンを確認
“`
$ python –version
Python 2.7.17
“`
確認すると、python3を使いたいのですがpython2系の設定になっているようです

# インストールされているpythonのバージョンと場所を確認
“`
$ which python #すべてのpythonがインストールされている場所を確認
/usr/bin/python #/usr/bin以下にあるようです
$ ls /usr/bin/ | grep python #/usr/bin/以下にインストールされている全pythonのバージョンを確認
python2
python2.7
python3
python3.6
python3.6-config
python3-config
“`
# update-alternativesが存在することを確認
update-alternativeはpythonのバージョン管理を行います。

“`
$ which upda

元記事を表示

画像処理初心者がOpenCVを使ってみた(2)

この記事は、画像処理エンジニア検定を受験するにあたり、OpenCVを実際に利用して画像処理について学ぶことを目的としています。勉強した内容をメモします。
[画僧処理初心者がOpenCVを使ってみた(1)](https://qiita.com/naccchan/items/b06a20e271feacf97e39) の続きです。
※画像処理でできることをメインに書いていくので、Pythonや使用する各関数の説明などは省略しています。

目次

* エッジの検出
* 直線の検出
* モルフォロジー演算
* 特徴抽出
* 顔検出

## エッジの検出
エッジとは何かについては、以下のサイトで勉強させていただきました。

https://jp.mathworks.com/discovery/edge-detection.html

### ソーベル法(Sobel)でエッジ検出
ここでは画像のX軸とY軸、それぞれについて画像のエッジ検出結果を見てみたいと思います。

“`python
import cv2

img = cv2.imread(“data/src/favorite.jpg”,

元記事を表示

Windows10にPythonをインストール

# Windows10にPythonをインストール

Windows10にPythonをインストールしたときの、チェックボックスをメモとして残しておく。

## インストーラをダウンロード
* ダウンロードサイト ([www.python.org](https://www.python.org/))
* ダウンロードサイト上部の”Downloads”をクリック
* “Download Python 3.9.5″をクリック

## Pythonのインストーラを起動
* “このアプリがデバイスに変更を加えることを許可しますか?”は”はい”を押す

### Install Python 3.9.5 (64-bit)
* ☑ “Install launcher for all users (recommended)”
* ☑ “Add Python 3.9 to PATH”
* ☑ “Customize Installation”
* “Next” をクリック

### Optional Features
* ☑ “Documentation”
* ☑ “pip”
* ☑ “tcl/tk

元記事を表示

Django周りの開発環境をインストールする

# はじめに

私はプログラミング歴1年の初心者です。
実務でWebサイトのコーディングを1年間行ってきました。
そろそろシステム開発もできるようになりたいということで
LaravelやReactをこれから勉強していこうと思っております。

# 今回の目的

今回はDjangoの環境構築方法を学んでいこうと思います。
Homebrewを使ってインストールしていきます。
本当は仮想環境を立ててインストールするほうがいいらしいのですが
今回は初めてなのでその部分は端折っていきます。

# 目次

1. Pythonのインストール
2. Djangoのインストール

# 実際にやってみる

## Pythonのインストール

“`terminal
# HomebrewでPythonをインストールする
$ brew search python
$ brew install python3

# PATHの設定
$ echo “export PATH=/usr/local/bin:$PATH” >> ~/.bash_profile
$ source ~/.bash_profile

# pyt

元記事を表示

[python] リスト内包表記内でprintしたい

小技です。
検索してもそれっぽい感じの記事があまり出なかったので投稿。

# 前提
リスト内包表記内で時間のかかる処理を行っているとき、進捗状況を`print`したい!
ということが人によってはあると思います。ないかも。

“`python:print_in_list_test.py
import time
def heavy_function(num):
time.sleep(1) # めちゃんこ時間かかる処理
return “かたつむりが{num}匹”.format(num=num)

def print_in_list_test():
#print() # 進捗状況を出力したいけど、全部やった後かやる前しか出力できない
outputs = [heavy_function(num)
for num in range(1, 10)] # ここでめっちゃ時間かかる…
print(“、”.join(outputs))

print(“処理開始”)
print_in_list_test()
print(“処理終

元記事を表示

[python3] EUC-JPなのにShift-JISの機種依存文字が入っててUTF-8にできなかったときの対策

表題の通りです。
先人が機種依存文字対策に苦心した痕跡がちらりほらり…
※ はしご高とかそういうタイプの機種依存文字はこの記事では扱いません。

# 環境
Windows 10
Python 3.8.5
スクレイピング:requests

# 状況(読まなくても良い)
最近 [seesaawiki](https://wiki.seesaa.jp/) の記事の自サイトへの移植をごそごそとしているのですが。

seesaawikiからスクレイピングでHTMLソースを取得すると、
``
とあって確かに **EUC-JP** のはずなのに、wikiソース内で「**①**」のような **Shift-JIS** の機種依存文字が使えるせいでたまにこれが紛れてくるんです。
で普通に

“`python:
res = requests.get(url)
text = res.html
“`

みたいに結果を取得しようとすると、なにやら`REPLACEMENT CH

元記事を表示

OTHERカテゴリの最新記事