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

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

pythonのifはどうやってTrue/Falseを判定する?

# はじめに

プログラミング初心者です。
[前回](https://qiita.com/aloabtshk/items/89a08526009ce0b0e90e)の記事を書いたときに、pythonのifはどのようにTrueとFalseを判定しているか気になったので調べてみました。

  

# 対象

Python初心者から中級者の少し手前ぐらいの方向けの記事だと思っています。
かなり回りくどい説明になってしまっている箇所もありますが、ご容赦ください。  

  

# 前提

・Python 3.8.0

  

# \_\_bool\_\_()と\_\_len\_\_()

まず、公式ドキュメントの[真理値判定](https://docs.python.org/ja/3/library/stdtypes.html#truth-value-testing)を参照してみます。

>オブジェクトは、デフォルトでは真と判定されます。ただしそのクラスが \_\_bool\_\_() メソッドを定義していて、それが False を返す場合、または \_\_len\_\_() メソッドを定義し

元記事を表示

【 2020/03/31まで ! 】インプレスで無料公開中の書籍をPDF化して読む!

## 概要
コロナウイルス対策で増えた在宅時間を生かすために、インプレスさんが「できる」シリーズなど44冊を2020/03/31まで無料公開してるよ!

どの書籍も面白そうで全部読みたいけど、本気を出してもあと2週間では読みきれないし、保存してゆっくり読もうと思う:sunglasses:

ヘッダの画像

## 警告

* ダウンロードした画像、作成したPDFは**私的利用に限定**してください。他人への販売や譲渡は犯罪です。
* この記事は、著作権法とimpressの利用規約を確認した上で、問題ないと判断して書いています。
* **自己責任**でお願いします。

分かりやすく書きすぎてリテラシーがない人に悪用されると困るので、環境構築やパッケージのインストールは省略した上で、ステップごとに分散して書

元記事を表示

3月14日は円周率の日

3.14159265 …
3月14日は円周率の日というそうです。1時59分 もしくは 15時9分にお祝いするのだそうな。特に、3/14/1592 6:53.58(1592年3月14日6時53分58秒)は、円周率の上12桁に一致するため、究極の円周率の日といわれているそうです。

さて、先日、知人とお酒を飲んでいるときに、なぜか***『今から円周率を求めてみよう』***となり、その場でiPhone/Pythonista 3 (Python3)を使いながらプログラミングしてみました。酔っていても、意外とできるものです。インターネットを調べていると円周率を求める方法は様々あることがわかり、そのうち2つを試してみました。どちらの方法でも3.14付近の数値が求められます。

# 直交座標系のモンテカルロ法
まずは、縦0~1、横0~1の正方形の中にランダムでボールを落としていって、原点からの距離が1.0以内である確率を求め、それを四分円の面積と見て円周率を求める方法です。

“`
# 直交座標系のモンテカルロ法
import random

N= 1000000
point = 0

for

元記事を表示

tf.keras で作成したモデルのパラメータの量子化 Part1

#概要
tf.kerasを使って構築されたネットワークのパラメータを量子化してみました。

パラメータを量子化するメリットは、大雑把に次の2つです。
1. 保存するパラメータのサイズが小さくなる
 32bit float を例えば 8bit float に量子化できればメモリ使用量が1/4になります
2. 演算を高速化可能
 専用のハードウェアを用意すれば、演算が高速化される(はず)
 入力及びパラメータを1bitまで量子化できれば、掛け算がビット演算になるのですんごい速い(AlexNetで58倍高速化できたそうです ※1)

デメリットはもちろん、本来のパラメータが量子化されることによって誤差が大きくなり、出力の精度が落ちることです。

後々専用のハードウェアを作成して速度も検証してみたいですが、今回は精度だけ比較してみます。

#環境
OS: ubuntu 16.04 LTS
Python: 3.5.2
TensorFlow: 1.13.1

#量子化とは
量子化とは、アナログ信号などの連続量を整数などの離散値で近似的に表現すること。 自然界の信号などをコンピュータで処理・保存で

元記事を表示

【Python3】アマゾンがリングフィットアドベンチャーを定価で発売したら購入するスクリプト【Selenium】【BeautifulSoup】

#転売屋に手を焼かされていませんか?
わたしは__リングフィットを手に入れて痩せる予定だった__のに、
__手に入らなくて学習が手につかず、太りすぎて1年以上無職に陥ってしまいました。__
という事で、今回は

__スクリプトを動かすとアマゾンに自動的にログインして、__
__リングフィットがAmazon.co.jpが直接販売しているケースに限り購入してくれる__

というスクリプトを作りました。これを自宅PCのcronやAWSのLambdaで走らせれば、
あなたはリングフィットが新品で売っているかどうかを逐一チェックする必要がなくなります。
(今回はスクリプトのみの掲載で、cronの説明は省略しています。)

__cronの解説の要望があったら言って下さい。__

#注意点
__1.事前にクレジットカードの設定はしておいて下さい。(ギフト券で買う方はちょっと改修すれば済みます)__
__2.2段階認証は外しておいて下さい(不安ならサブアカウントでギフト券オンリーにすれば多少安全だと思います)__

OS:Windows10
GoogleChrome バージョン: 70.0.3538.

元記事を表示

「せんぱーい。wikipediaの記事タイトルでしりとりしませんか?」と言われたのでGoogleのスプレッドシートに約191万の記事タイトルを書き込み、対抗する話。

#事の発端
ある日、後輩ぽいやつに声を掛けられた。
私には、コミュ力がなかった。
止められなかった。あの発言を…

**「せんぱーい。wikipediaの記事タイトルでしりとりしませんか?」**

何だそれ。
回答時間は10秒、モバイル端末使用可(ただしオフライン)という鬼畜なしりとりだ。
存在するかは、wikipediaの”https://ja.wikipedia.org/wiki/”
の後ろに回答した文字を入れて、ページを開けたらセーフらしい。
準備時間は30分(オンライン可)。
私は今持つプログラミング能力で、191万ぐらいの記事を用意することにした。

#本編
以上茶番(現実)でした。
今回は、かる~くgoogleのスプレッドシートの約191万セルに、短い時間に書き込んだ時の話です。
上の茶番は、90%が現実で、
**「せんぱーい。wikipediaの記事タイトルでしりとりしませんか?」**だけが違いました。

それはさておき、今回私が30分で行ったことは

1.スプレッドシートの機能である、.txtのインポート=>失敗
2.GASでなんとか書き込む=>方法知らない、JSや

元記事を表示

西暦 和暦 計算 Python入門

## 西暦 から 和暦 を 計算。

“`python

import random
year = random.randint(1926, 2020)
# print(year)
print(“西暦” + str(year) + “年は”, end=””)
if year < 1988: showa = year - 1925 print("昭和" + str(showa) + "年です") elif year < 2018 : heisei = year - 1988 print("平成" + str(heisei) + "年です") else: reiwa = year - 2018 print("令和" + str(reiwa) + "年です") ``` ```出力結果 >>>西暦1994年は平成6年です
>>>西暦1985年は昭和60年です
“`
入力値として [1926年 ~ 2020年] という数値が当てられる。
数値が1926年〜1987年 なら 昭和
数値が1988年〜2018年 なら 平成
数値が2019年〜

元記事を表示

PythonでPixivのランキング上位画像を一括取得したいともがくお話

#はじめに
本投稿はプログラミング経験が非常に浅いものが作っておりますゆえ、
かなりお見苦しいところがございます。ご自愛ください。

また少々宣伝になってしまいますが、
本投稿は前投稿の続きになっておりますので、
もしよろしければ御覧ください。

#1.制作の経緯
普段から [pixiv](https://www.pixiv.net/ “https://www.pixiv.net/”)を利用して、様々な素晴らしい作品を眺めているのですが、
ある日ランキングの上位100作品ぐらい一気に見てみたいと思ったわけです。
(普通ないとは思いますが)
前回の経験を活かし、ランキングの作品を取得し眺めようと思いました。
#2.開発環境
OS:Windows10 64bit 1909
CPU/Memory:i5-7200U/8GB
python 3.6.8 64bit版
エディター(?):VSCode version 1.41.0
#3.pythonのインストール
ここではインストール済みと考えスキップします。

方法
[Python公式

元記事を表示

【Python】コロナウイルスのデータを利用したグラフ作成入門【初心者向け】

# はじめに
WHOの公開データを元にしたCSVファイルを読み込み、グラフ化するまでの一連の流れを説明します。

参考にしたサイトは[こちら](https://oku.edu.mie-u.ac.jp/~okumura/python/COVID-19.html)です。

上記サイトでは、Pythonやmatplotlibの基礎知識がある前提で説明されています。

この記事では、僕自身が理解出来なかった点をまとめることで、
初心者の方でも理解できるように補足説明を書いています。

# 前提
* Python、JupyterNotebookなどの、環境セットアップができていること
* 読み込むCSVファイルは、[参考サイト](https://oku.edu.mie-u.ac.jp/~okumura/python/COVID-19.html)のgithubリンクにて公開されており、今回はそれを利用しています。
* これから機械学習を学ぼうとされている方向けの内容です。(すでに機械学習を理解されている方にとって、少し物足りないかと思われます。)

# 環境

* macOS High Sierr

元記事を表示

組み込みのデータ型を勉強する(1) リスト型

#本記事について
組み込みのデータ型のうちリスト型についてまとめる

・Python3を想定
・コードに対して説明が少なめ

#リストの基本情報
**定義**
・Pythonでリストを定義するには, [ ]を用いる.
・[ ]の中に要素を並べ, それらを”,(カンマ)”で区切る.

“`python
>>> animal = [‘cow’, ‘horse’, ‘fox’, ‘rabbit’, ‘monkey’]
“`

**要素の取り出し**

“`python
>>> animal = [‘cow’, ‘horse’, ‘fox’, ‘rabbit’, ‘monkey’]
>>> animal[0]
‘cow’
>>> animal[-1]
‘fox’
>>> animal[1:3]
[‘horse’, ‘fox’]
“`
***要素入れ替え***

“`python
>>> animal[0] = ‘dog’
[‘dog’, ‘horse’, ‘fox’, ‘rabbit’, ‘monkey’]
“`
***要素の追加・削除***

“`python
>>> ani

元記事を表示

Pythonでウェブスクレイピング

# ウェブスクレイピングをしよう

自分用メモ。
yahoojapanのニューストピック(https://news.yahoo.co.jp/topics)
ここでは題名をスクレイピング->テキストファイルに保存まで。

### ライブラリインポート
“`Python
import requests
from bs4 import BeautifulSoup
“`

### GETリクエスト
“`Python
##プロキシ下の環境だったためプロキシ設定
proxies = {
“http”:”プロキシURL”
“https”:”プロキシURL”
}
##オプションにプロキシ設定し、GETリクエストを投げる
req = request.get(‘https://news.yahoo.co.jp/topics’,proxies=proxies)
“`

### BeautifulSoupでスクレイピング実行->リスト化

BeautifulSoup().find_allのオプション引数は”class”でなく”class_”であることに注意
classだとPythonの予約語になっ

元記事を表示

PythonでEthereumアカウントを作る

備忘録

“`
$ pip install eth-account
“`

“`create.py
from eth_account import Account

acct = Account.create(‘RANDOM STRING’)
print(acct.address)
# 0x37B654931470E0319583ba097d4fbb79276b1067
print(acct.key)
# b’nq\x9b\x1a\x87\xc6/\xbf\x97\x91/\x1fj\xe2/]S\x87\x8d\x84\x9e\x1b\xb7\x18\xf8\xcfj\xc7A{h\x04′
“`

# 参考
https://github.com/ethereum/eth-account

元記事を表示

Python、stftime、strptimeの違い

#stftimeと、strptimの違いについてメモ

#(1)前提
datetiemクラスをインポートして、today()を変数tに代入

“`
from datetime import datetime
t = datetime.today
t
“`
とすると、

“`
datetime.datetime(2020, 3, 12, 23, 37, 45, 238787)
“`
となる

#(2)datetime型 → str型

“`
str_t = t.strftime(‘%Y年%m月%d日/%H時%M分%S秒’)
str_t
“`
とすると、

“`
‘2020年03月12日/23時37分45秒’
“`
となる
#(3)str型 → datetime型 

“`
time_t = t.strptime(str_t, ‘%Y年%m月%d日/%H時%M分%S秒’)
time_t
“`
とすると、

“`
datetime.datetime(2020, 3, 12, 23, 37, 45)
“`
となる。

元記事を表示

Python、fromとimport、asについて

#pythonで使用するfromとimportの違いをメモ(例としてtoday関数を使い、2通りの方法を記述)

##(1)datetimeモジュールをインポートするのみ
datetimeモジュールの、datetimeクラスのtoday関数を使う、という記述をする

“`
import datetime
datetime.datetime.today()
“`
結果として

“`
datetime.datetime(2020, 3, 12, 23, 21, 41, 756354)
“`
となる。

##(2)datetimeモジュールとdatetiemクラスをインポートする
datetimeクラスのtoday関数を使う、という記述をする

“`
from datetime import datetime
datetiem.today()
“`
結果は同様に

“`
datetime.datetime(2020, 3, 12, 23, 21, 41, 756354)
“`
となる。

##(3)おまけ
asを使うとライブラリ名(モジュール名)を好きな言葉で使うことができる

元記事を表示

【Matplotlib】軸ラベルは傾けない

## はじめに
* 最近、時系列のグラフを多く見かけますが、一部の軸ラベルは傾いています。
* 恐らく見栄えを弄る時間が無かったか?もしくは対処法が見つからなかったかもしれません。
* 私自身も、軸ラベルを傾けるかあるいは横向けのグラフで妥協して作図していました。

## 背景
* [「データ視覚化のデザイン#4」](https://note.com/goando/n/neb6ea35f1da3)で**軸ラベルは傾けない**という記事をTwitterで見かけました。
* その記事では、軸ラベルを傾ければ文字の認識に要する時間が伸びていくという研究の紹介がありました。
* ではどうすればと、軸ラベルを傾ない方法を調べました。

## サンプルデータ
“`python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker

# サンプルデータ
data = pd.D

元記事を表示

「電池つき言語」なpythonの10の関数

http://www.minekawada.com/python-useful-lib.html

目次
pprint
print
__str__

2番目のprint関数の内容は、意外と知らないかもしれませんよ〜

元記事を表示

【Python3】paizaで標準入力からの値の受け取り方

# はじめに

pythonのお勉強がてらの自分メモです
動作環境は「paiza」でやってます。

## 入力値が1行に1つの場合

“`python3:test.py
#文字列の場合
str = input()

#数値(int)の場合
num = int(input())
“`

## 入力値が1行に2つ以上の場合
※ここでは便宜上入力値は2つ、区切り文字は半角スペースとする

“`python3:test.py
#文字列の場合
strA, strB = input().split(‘ ‘)

#数値(int)の場合
num1, num2 = map(int, input().split(‘ ‘))
“`

## 入力値が1行に複数ある場合 ⇒ listで取得
※ここでは便宜上区切り文字は半角スペースとする

“`python3:test.py
#文字列の場合
list = input().split(‘ ‘)

#数値(int)の場合1
list = list(map(int, input().split(‘ ‘)))

#数値(int)の場合2
list = [i

元記事を表示

Python3のlistにおける重複した要素を削除する方法

### リストの中から重複をしている要素の削除
このリストを書こうと思った理由としては、要素が重複していないリストを作成する際に自身はremove()を用いた要素の削除を行っていました。自分はremove()を用いれば指定した値はすべて削除してくれるものだと勘違いしていました。

“`
l = [1, 2, 3, 4, 1]
l.remove(1)
print(l)
#[2, 3, 4, 1]
“`
このように一番最初に出てきた指定をした値の削除を行うことが出来ます。しかしこのコードだと、削除を行うことができるのは一つだけのため以下のような挙動が起きてしまいます。

“`
l = [1, 2, 3, 4, 1, 1]
l.remove(1)
print(l)
#[2, 3, 4, 1, 1]
“`

そのため、重複をしていないリストを作成するためには以下のようなコードにするべきです。

“`
l = [3, 4, 3, 2, 5, 4, 3]
l_u = []
for i in l:
if i not in l_u:
l_u.append(i)
#[3

元記事を表示

Pythonを使ったBasic認証の設定

# はじめに
LambdaでBasic認証って検索すると、Node.jsのものしか見つからなかったので書いてみた。
自身の備忘録も兼ねて。
Node.js版は、ぐぐるとすぐに出てくるので、ここでは触れないです。

# コード
と言っても大したものではなく、Node.js版の焼き直しな感じです。
ただ、マルチアカウントに対応できるようになっている点はちょっと違う。

“` Python
import json
import base64

accounts = [
{
“user”: “user1”,
“pass”: “pass1”
},
{
“user”: “user2”,
“pass”: “pass2”
}
]

def lambda_handler(event, context):
request = event.get(“Records”)[0].get(“cf”).get(“request”)
headers = request.get(“headers”)

元記事を表示

リストのソート

# リストのソート
“文字+数字”形式のリストを数字でソートしたい。
ネットで検索しても全然見つからなかったので、うまいやり方ではないかもしれませんが、
書いてみました。
回路図の部品表や、IC(特にBGA)のPIN番号などがこういった形式になっています。
文字列はFPGAのPIN番号リストを抜粋しました。

## 1次元の場合
### 単純なソート

“`python
list1 = [“A1″,”A2″,”A3″,”A10″,”A11″,”A12″,”A13″,”A20″,”A21″,”A22″,”A23″,”A30″,”A31″,”A32”]
list1.sort()
print(list1)
“`
結果:
桁がそろわない。

“`python
[‘A1’, ‘A10’, ‘A11’, ‘A12’, ‘A13’, ‘A20’, ‘A2’, ‘A21’, ‘A22’, ‘A23’, ‘A3’, ‘A30’, ‘A31’, ‘A32’]
“`

### 文字列の数字部分でソート
intでソートすれば番号順に並ぶので、いったん数値だけ取り出してソートした後、元のリストを取り出す

元記事を表示

OTHERカテゴリの最新記事