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

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

完成品(一応)

#概要
習いたてのPythonを使って、ゲームを作ってみました。
上を見すぎず作ろうとしたつもりでしたが、これでも無力さを感じました、
![ダウンロード.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638182/a1860942-df72-b05b-77bf-a032a66b99f8.gif)

ゲームとしては、敵の玉に当たらないようにしながらすべての玉を壊すというものです。

しかし正直なところ、これは結論から言うと失敗に終わっています。(笑)

#参考
こちらのサイトを参考にさせていただきました。
[selfって?]https://www.sejuku.net/blog/64106
[キー入力]https://www.rumadra.com/2019/06/14/python-tkinter-keyboard/#i-3
[移動入力]https://algorithm.joho.info/programming/python/pygame-keyevent-move-character/

元記事を表示

PythonでFizz Buzz

#Fizz Buzzとは
Fizz Buzzとはプログラミング初学者が最もはじめに解く問題のうちの1つです。
具体的には$1\sim100$までの数字を順に出力し、$3$の倍数の時にFizz、$5$の倍数の時にBuzz、両方で割り切れる時にFizzBuzzと出力するプログラムのことです。

さっそく書いていきます。

#コード

“`Python
for i in range(1, 101):
if i % 15 == 0:
print(‘Fizz Buzz’)
elif i % 3 == 0:
print(‘Fizz’)
elif i % 5 == 0:
print(‘Buzz’)
else:
print(i)
“`

#出力
“`
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
Fizz Buzz
31
3

元記事を表示

ゼロから始めるLeetCode Day81 「347. Top K Frequent Elements」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

[django]データベースcreate!

#Djangoでデータベースに保存

##model作成

“`python

from django.db import models

class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField(default=0)

def __str__(self):
return ‘
“`
モデルを作成したら、setting.pyのinstalled_apps = []のなかにアプリ名を追加
その後

“`shell
python manage.py makemigrations “アプリ名”
“`
その後

“`shell

python manage.py migrate
“`

これで使えるようになりました。

##shellでデータ保存

元記事を表示

pythonでスクレイピングを行い物件情報を取得する

#はじめに
将来的に引越しをしたいなと考えた時、どのような物件があるのか、掘り出し物の物件はあるのかを調べたいと思いました。
いちいち手作業で調べるのは面倒なので前回行ったスクレイピングを利用して物件情報を取得したいと考えました。

最終的には取得した情報を地図にマッピングまで行いたいと考えているのですがまず最初に物件情報を取得することから始めようと思います。

#スクレイピングとは
スクレイピングとは簡単に述べると、「プログラムを使ってインターネット上の情報を収集すること」です。
スクレイピングは以下の2手順を経て実行されます。

①html情報を取得→②必要データを抽出

まず①についてですが、
そもそも、webページと言うものはhtmlと言う言語を用いて構成されます。
Google Chromの右上の矢印のページをクリックし、
「その他のツール」→「デベロッパーツール」と押すと画面右にコードの羅列が出力されます。
それこそが、画面を描画するためのコードであり、スクレイピングをするためにこのコードを自分のパソコンに引っ張ってきます。
そして、②についてですが、htmlは入れ子構造と

元記事を表示

Matplotlibメモ

 学びのメモとして、Matplotlib周辺の視覚化に活用できるコードをチートシート代わりに自分の参考用としてまとめています。

#基本的なコードのまとめ

“`python
#matplotlibをpltとしてインポート
import matplotlib.pyplot as plt

#リストxを横軸、yを縦軸にした際の折れ線グラフを作成
plt.plot(x, y)

#リストxを横軸、yを縦軸、散布図を作成(プロットの大きさがsizeに比例、色をcol、透明度は0.8)
plt.scatter(x, y, s = size, c = col, alpha = 0.8))

#リストvalues内のデータをn個のビンにおけるヒストグラムを作成
plt.hist(values, bins = n)

#グラフにタイトル(TITLE)をつける
plt.title(‘TITLE’)

#横軸にXXX、縦軸にyyyという名前のラベルをつける
plt.xlabel(‘xxx’)
plt.ylabel(‘yyy’)

#縦軸を指定 (例.0から10まで2刻み)
plt.yticks([0,

元記事を表示

Infra_データサイエンス講座 アウトプット

これからInfraで運営しているデータサイエンス講座についてのアウトプットや学びを投稿していく。

公式ホームページ
https://www.in-fra.jp/next/courses/data-science?access_from=intern_list

元記事を表示

Google Colaboratory上からIBM Watson Speech to Textをいじってみた

業務の中ある程度長い会話を録音した音声ファイルを文字起こししたいと思う機会がありました。
Google Cloud Speech-to-Textなどに代表される文字起こしAPIを調べたところ、実装が比較的容易という評判及び500分/月まで使える無料枠がある(2020/07/09現在)ことからIBM Watson Speech to Textを使えないかあれこれ試してみました。

結果的に、Google ColaboratoryでPythonコードを実行することでWatson Speek to Textを実行させることに成功したので備忘録としてまとめます。

IBM Watson Speech to textの概要については[@ysugiyama12](https://qiita.com/ysugiyama12)さんの「[音声を文字起こしするAPIを何種類か触ってみた](https://qiita.com/ysugiyama12/items/bf246e80ae4d1dc16441#watson-speech-to-text)」が大変分かりやすいかと思います。

IBM Cloudのア

元記事を表示

[HyperledgerIroha]Pythonライブラリでクエリを実行する

# 記事の内容
Hyperledger Iroha Pythonライブラリを使ったクエリの実行方法です。

# やってみること
指定したアカウントが送信したトランザクションの一覧を取得する「GetAccountTransactions」を実行してみます。

## 実装

~~~ get_account_transactions.py
from iroha import Iroha, IrohaCrypto, IrohaGrpc
import iroha_config

net = IrohaGrpc(iroha_config.IROHA_HOST)

iroha = Iroha(iroha_config.ADMIN_ACCOUNT)
admin_priv_key = iroha_config.ADMIN_PRIV_KEY

# Queryの作成
get_block_query = iroha.query(
‘GetAccountTransactions’,
account_id = ‘admin@test’,
page_size = 10,
)

# Query

元記事を表示

pyinstaller –onefile で固めた.exeで、実行時に動的にモジュールをimportする

Python公式では非推奨だが、成果物を人に渡す時に、以下のような *config.py* を、 *main.py* と同階層に置いて、*mian.py* でインポートしてそのまま使ったりすることがあった。

“`config.py
width = 10
height = 10
count = 100
threshold = 50
“`

“`main.py
from config import *
“`

今回pyinstallerで固めた.exeからも、動的に外部のパラメータをimportするようにしたかったのだが、ハマったのでTIPSをメモしておく。

まず、こちらの記事が非常に参考になった。
(参考) https://ja.coder.work/so/python/1422895

普通に.exeにしたものは、importlibを使えば動的にimportしてくれるのだが、 *–onefile* で固めると、config.pyも内部に取り込まれてハードコーディングされる模様。
この問題に関しては、(泥臭い方法だが)とりあえず.exe化するときに *config.py*

元記事を表示

Python3で日本著者記号表の検索・変換ツールを作ったが公開を迷っている

# Python3で日本著者記号表の検索・変換ツールを作った
仕事で日本著者記号表をよく使う。この時点でどんな仕事をしているかバレバレである。
日本著者記号表で図書記号を付与するとき、もちろんいちいち冊子を引くのは手間がかかりすぎるし、web上のツールを使うにしても入力の手間がある。だったらもうツールを自作して作業環境に組み込もう、ボタン1押しで検索から結果の出力まで終わるようにすればいいじゃない!
ということでPython3で作った。
## 図書館関係者であるが故の悩み
日本著者記号表の編者である森清氏の没年は1990年である。つまり著作権が切れていないのだ。
当たり前だが、ツールには日本著者記号表そのものが辞書として組み込まれている。このツールを公開したら森氏の著作権を侵害してしまうのではないか。
ただし、公開したところで誰の利益も害さないのでは? という思いもある。日本著者記号表を必要とする現場には必ず日本著者記号表があるのだから。異論は認めない。

そんなこんなで公開するかどうか迷っています。

追記)軽く検索したらExcel用のマクロをベクターで配布してる人がいたりする。いい

元記事を表示

レーティング行列のための前処理

レーティング行列は、行がユーザー、列がアイテムになっている行列。
要素は、ユーザーがアイテムに対してつけた点数などを想定している。

それを作る前の前処理のメモ。

実際のデータというのはデータサイエンティストが入手した場合、レーティング行列担ってるわけではなく、下の「サンプルデータ」の段落にあるように、

`ユーザー, アイテム, 点数`
の行になったものが大量にあるものを指す。(例えばMovielens)

この記事では

– ある回数以上のユーザーやアイテムに絞りたい
– ユーザー、アイテムにindexをつける

をやるときのコードを示す。

# データの読み込み

“`python
import pandas as pd

df = pd.read_csv(‘./rating.csv’)
df.head()
“`

出力

| | user | item | rating |
|–:|:–|:–|–:|
| 0 | A | a | 1 |
| 1 | A | b | 2 |
| 2 | B | a | 1 |
| 3 | B | b | 3 |
| 4 | B

元記事を表示

CentOS8 で Python3.8 と pip を使うための初期設定

### yumとdnf

CentOS8からは、7までと違って、**yumコマンドを使いません。**
ゴリ押しで、yumを使うこともできますが、おすすめしません。
後継となった**dnfコマンドを使っていきます。**

基本的には、yumコマンドとほとんど同じ使い方でOK
簡単にどんなところが違うかというと…

– yumコマンドはPython2系で動いている
– dnfコマンドはPython3系で動いている

Python3系で動かそうとするのは必然かなと
詳細を知りたいかたは後述のリンクを踏んでみてね.

### Python3.8をインストールする

“`
$ sudo dnf install python38 -y
“`
####解説
– sudo
– 管理者にコマンドを実行させるおまじない
– dnf
– 前述したyumの後継
– install
– インストールするおまじない
– python38
– インストールしたいパッケージ名を指定 (Pythonの場合は、python2, python36, python38など)
– -y

元記事を表示

[Hyperledger Iroha]Pythonライブラリからクエリを実行すると[bad timestamp: sent from future]が返ってくる

# 内容
ちょっとしたことですが対応方法をメモ

# エラー内容
Hyperledger Irohaのライブラリを使ってRoleを取得するクエリを実行する

~~~ get_role.py
from iroha import Iroha, IrohaCrypto, IrohaGrpc
import iroha_config

net = IrohaGrpc(iroha_config.IROHA_HOST)

iroha = Iroha(iroha_config.ADMIN_ACCOUNT)
admin_priv_key = iroha_config.ADMIN_PRIV_KEY

# Queryの作成
get_block_query = iroha.query(
‘GetRoles’
)

# Transactionへ署名
IrohaCrypto.sign_query(get_block_query, iroha_config.ADMIN_PRIV_KEY)

# Transactionの送信
response = net.send_query(get_block_query)

元記事を表示

【PyTorch】自作関数の勾配計算式(backward関数)の書き方② 〜多変数出力の場合〜

# はじめに
前回の[【PyTorch】自作関数の勾配計算式(backward関数)の書き方①](https://qiita.com/windfall/items/073cbb4ffdfab356e495)の続きです.前記事では1次元入力1次元出力の関数の勾配計算式(`backward()`関数)の書き方をまとめました.本記事ではさらに拡張して多変数入出力の場合に,どのように勾配計算を定義するかについてまとめます.

# 勾配計算の書き方の復習(1次元入出力の場合)

– 自作関数はtorch.autograd.Functionクラスを継承する必要があります.
– メンバ関数にはforward()とbackward()を用意します.ここで大事なのはそれぞれの関数の第一引数ctxでなければならない,ということです.ctxはコンテキストのことであり,勾配計算に必要な順伝播時の情報を保持します.
– `backward()`関数のゴール(返り値)は入力の勾配です.よりわかりやすく言うと,この勾配とは$\frac{dL}{dx}$になります.
– `backward()`関数は引数として出力の

元記事を表示

Djangoで既存のモデルに後からDateFieldを用いた項目を追加するときの注意点

#はじめに
開発中、後から既存のモデルに項目を追加する時に少し操作が必要であることを知ったのでその知見についてまとめました。

#既存モデル

まずは簡単のために以下のような単純なモデルがあることを想定します。

“`Python
class NameModel(models.Model):
name = models.CharField(max_length=50)

def __str__(self):
return self.name
“`

ここに`DateField()`を用いた項目を追加することを考えます。

#項目追加

以下のように項目を追加します。

“`Python
class NameModel(models.Model):
name = models.CharField(max_length=50)
date = models.DateField() #追加

def __str__(self):
return self.name
“`

モデルを変更したのでマイグレーションします。

元記事を表示

ゼロから始めるLeetCode Day80「703. Kth Largest Element in a Stream」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

Google Cloud Functionsのログ出力(とハマったこと)

# やりたいこと
– 言語:Python
– Google Cloud FunctionsでStack Driver Loggingにログを出力したい。
– ドキュメントを見ると `print` でやれって書いてある
– https://cloud.google.com/functions/docs/monitoring/logging?hl=ja#functions-log-helloworld-python
– とはいえログレベルは設定したい

# やったこと
– google-cloud-loggingを使う
– requirements.txtに `google-cloud-logging==1.14.0` を追記

“`python
# Imports the Google Cloud client library
import logging
from google.cloud import logging as glogging

client = glogging.Client(project=os.environ[‘PROJECT_ID’])
handler

元記事を表示

Kindleの自動スクショ保存プログラム

# 初めに
Kindle本を購入したけどアカウントが消えて今までの本が見れなくなった、、
保存しておけばよかった、、
となったので、Kindle本を保存しておくためのプログラムを作成しました。

MacにおけるKindleAppの、全ページの画面のスクリーンショットを自動で撮ることを目的としています。

今回は簡単のため、ページの大きさにフィットさせるのではなく、画面全体をスクリーンショットすることで実装しています。

# 使用方法

プログラムをインストールしましょう。

“`
git clone https://github.com/yassyyuki/save_kindle_book.git
“`
インストールできない方は、以下のコードをコピペして、`save_kindle_screen.py`ファイルを作成してペーストしましょう。

“`py
import pyautogui
import time
import os
import datetime

# ページ数
page = 5
# スクショ間隔(秒)
span = 1
# 出力フォルダ頭文字
h_foldern

元記事を表示

Python 標準入力 まとめ

**Python3で外部からの入力値を扱うときのメモ**
キーボード入力値や、Paiza などのスキルチェックでの入力値を取得する方法を初心者なりにまとめてみた

#1 基本

入力値を読み取るには `input()` 関数を使う。
`input()`のカッコ内に文字列を入力すれば、その文字列がキー入力待機中に表示される
  例) スクリーンショット 2020-07-08 11.15.34.png

読み取れるのは(スペースなども含めた)一行のみの入力
→ 競プロなどで複数行入力されるときは、一行ごと(上から順に)に読み取る必要㊒

>a
>12
>abcd ef

が与えられたときは、

“`Python:
A = input()
B = input()
C = input()

print(A) #出

元記事を表示

OTHERカテゴリの最新記事