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

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

【実践編】Discord.py Botを作ってみる

こんにちは Taitaitatata(Taitaitatata418#5407)です。
Botって便利ですよね。「MEE6」とか「顔文字で返してくるうざいBot」とか、
そいうやつ作ってみませんか?
この記事はDiscord.pyを使ってBotを作るという記事です。
**この記事はとりあえず作ってみたい人向けの記事です**
#はじめに
この記事は前回の[記事](https://qiita.com/taitaitatata/items/1039dc1786bf27c3def9)読んでいる前提で作っています。読んでいない方はまずそっちを読んでからこの記事をお読みください。

また今回使う言語はPython3.8.6です。
[.NET(C#)](https://qiita.com/tags/discord.net)や[Java](https://qiita.com/search?q=Discord+Java), ruby, [Javascript](https://qiita.com/tags/discord.js)ではありません.

癒やし動画((((((は?:https://www.yo

元記事を表示

気象関係でよく見るカラーマップをmatplotlibで再現する

# 気象関係でよく見るカラーマップをmatplotlibで再現する

## はじめに

matplotlibで気象関係の図を描くときに、カラーマップをmatplotlib搭載のものではなく、grads標準のものや気象庁で公開されているものに合わせたいことがある。

本記事では以下のような感じでそれらのカラーマップを自作して、matplotlibでも同様の配色の図を作成できるようにする。

![intro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257782/c0b0347e-af13-b112-6bce-9afb11853b46.png)

## 環境

python 3.7.8
matplotlib 3.3.2
numpy 1.19.2
cartopy 0.18.0 緯度経度座標でのプロットに利用
xarray 0.16.1 netcdfデータの読み込みに利用

プログラムの実行はjupyterlabで行った

## 自作のカラーマップを作る

カラーマップ作成に必要なモジュールのインポート

元記事を表示

Python の関数定義・関数適用の記法、決定版

# はじめに

Python の関数定義・関数適用はやや特殊であるが、完全な仕様については意外と書かれていないのでまとめる。
主に **引数リストをどう指定するか** に注目して説明する。

# 対象バージョン

Python 3.9

# 参考文献

Python 3.9.2 Documentation

– 用語集/parameter: https://docs.python.org/ja/3/glossary.html#term-parameter
– Python 言語リファレンス/関数定義: https://docs.python.org/ja/3/reference/compound_stmts.html#function-definitions

# 関数定義 (仮引数リスト) の構文と仕様

Python は構文定義がちゃんと書かれているので参考にするとよい。`` が仮引数リスト。

“`ebnf
funcdef ::= [decorators] “def” funcname “(” [param

元記事を表示

numpyでシフト演算を使って符号無し⇒符号有りに変換する

# TL;DR
numpyの符号無しのndarrayをシフト演算を使って符号有りに変換する方法の紹介です.

# numpyのシフト演算
numpyは要素毎にシフト演算することができる.
シフト演算も例外できる.

“`python
>>> import numpy as np
>>> val = np.arange(5)
>>> val
array([0, 1, 2, 3, 4])
>>> val << 4 array([ 0, 16, 32, 48, 64], dtype=int32) >>> val >> 1
array([0, 0, 1, 1, 2], dtype=int32)
“`

# 符号無し => 符号有りに変換
## astype
astype関数を使って符号無しから符号有りに変換することはできる.
8bitであれば,uint8からint8に変換すれば問題ない(16bit/32bit/64bitも同様).

“`python
>>> import numpy as np
>>> val = np.asarray([255, 0, 127, 128], dtype

元記事を表示

zipの中のフォルダ名一覧をCSVで取得

# 環境

OS: Windows10
ツール: Google Colaboratory
Python ver: 3.7.10
※Colabのバージョン

特にOSが違う場合はでコード部分の引数は変わると思うので気を付けてください。

# コード

“`python:コード
import zipfile
import pandas as pd
from google.colab import files
uploaded = files.upload()

file_name = list(uploaded)[0]
ary = []
with zipfile.ZipFile(file_name) as z:
for info in z.infolist():
info.filename = info.filename.encode(‘cp437’).decode(‘cp932’)
ary.append([info])

df = pd.DataFrame(ary)

file_name = file_name.replace(‘zip’, ‘csv

元記事を表示

DjangoのWebアプリをデプロイする前のセキュリティチェックと修正

# 導入
`python manage.py check –deploy`でデプロイ時にどんなセキュリティ脆弱性があるかを示してくれる。

“`
$ python manage.py check –deploy
System check identified some issues:

WARNINGS:
?: (security.W004) You have not set a value for the SECURE_HSTS_SECONDS setting. If your entire site is served only over SSL, you may want to consider setting a value and enabling HTTP Strict Transport Security. Be sure to read the documentation first; enabling HSTS carelessly can cause serious, irreversible problems.
?: (security.W006) Your

元記事を表示

Python3.7のWikiExtractor3.0.4で起こるImportError: attempted relative import with no known parent packageを解決する

##概要
Wikipediaのデータセットから文章を抽出しようとした際に

“`
Import: attemted relative import with no known parent package
“`
上記のエラーが起こりました。
ちなみに、[Pythonのクローリング&スクレイピングの解説書](URL https://gihyo.jp/book/2019/978-4-297-10738-3)の5.1.1「Wikipediaのデータセットから文章を抽出する」をやっている最中に躓いたので、上記の本で詰まった方の参考にもなるかもしれません。

##経緯
まず、WikiExtractorをダウンロード。

“`
$ git clone https://github.com/attardi/wikiextractor.git
“`

WIkipediaのデータセットから文章を抽出

“`
$ python wikiextractor/wikiextractor/WikiExtractor.py –no-templates -o <出力先のディレクトリ> -b <分割す

元記事を表示

[デイリーコーディング]リスト内の数値の正の数、負の数、ゼロそれぞれの割合を表示する

# 今日の問題: リスト内に入っている整数の正の数、負の数、ゼロそれぞれ合計し、リスト全体から見た各割合を出せ(小数点6桁四捨五入)

“`python:回答
def plusMinus(arr):
size = len(arr)
plus = [i for i in arr if i > 0]
minus = [i for i in arr if i < 0] zero = [i for i in arr if i is 0] print('{:.6g}'.format(len(plus) / size)) print('{:.6g}'.format(len(minus) / size)) print('{:.6g}'.format(len(zero) / size)) if __name__ == '__main__': arr = [-4, 3, -9, 0, 4, 1] plusMinus(arr) ``` ```python:結果 0.5 0.333333 0.166667 ``` ベターな回答: ```python de

元記事を表示

Nintendo Switchの画像をひとつのディレクトリに集結させたい

おうち時間の増加によってさらなる売上を伸ばしているらしい[ニンテンドースイッチ](https://www.nintendo.co.jp/hardware/switch/)。

ゲーム画面のスクリーンショットをワンタッチで撮影することができるボタンを備えていて、撮影した写真をスマホに送ったり、直接SNSに投稿したりすることができます。

# 前提

## 画像のディレクトリ構成

画像は本体またはSDカードに保存されますが、SDカードをPCに差し込んで中を除くと以下のようなディレクトリ構成になっていることがわかります。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59926/7e6b0552-7058-364d-88ab-856133c730de.png)
**年 / 月 / 日 / 年月日時間_xxxxxxxxx.jpg**

### メリット

– 画像が撮影日ごとになっているのは単純にわかりやすい
– 「ああ、この時こんなソフトで遊んでたなあ」と思い出に更けやすい

### デメ

元記事を表示

paiza D「一番小さい値」でのミス例(python)

〈ミス1〉

“`python
input_line = list(map(int,input().split()))
print(min(input_line))
“`
出力 10
エラー なし

〈ミス2〉

“`python
try:
N = int(input())
a = []

except EOFError:
pass

for i in range(N):
a.append(int(input()))
print(a)
“`
出力 なし
エラー Runtime error
Traceback (most recent call last):
File “Main.py”, line 12, in
a.append(int(input()))
EOFError: EOF when reading a line

元記事を表示

Python : 入力待ち(wait for input)のsubprocessにinputを送る

# 概要

subprocessで起動したプロセスが入力待ちになったタイミングで、外部から入力を送りたい場面があります。
業務の中でPythonでこれを行うときになかなか苦戦したので記しておきます。

# 標準入出力
サブプロセスとして起動する以下のようなプログラムを想定します。

“` python:sub.py

import time

if __name__ == “__main__”:
while True:
time.sleep(5)
user_input = input(“wait for input :”)
print(f”User Input is {user_input}”)
“`

五秒ごとにユーザーからの入力を受け付けるいたってシンプルなプログラムです。
これをサブプロセスとしてメインプロセスから起動します。

“` python:__main__.py
from subprocess import Popen
import sys
import time

p = Popen(
args=[

元記事を表示

「Google Colaboratory(GPU)上でBERTのチュートリアルを行う」の2021年2月24日時点での修正点

# 本記事の目的
 @Yuu94 様の[「Google Colaboratory(GPU)上でBERTのチュートリアルを行う」](https://qiita.com/Yuu94/items/e20373ecada2afa2cb4d)に従って BERT のチュートリアルをやってみました。内容自体はわかりやすく BERT の動作を簡単に学べるのですが、執筆時点から Google Colaboratory かそこで使われている Python のバージョンかが変わったことが原因と思われるエラーが一部で発生していました。そこで、こちらで2021年2月24日に実行した際に詰まった部分とその対処方法を共有させていただきます。
(本家記事様への編集リクエストという方法も考えましたが、編集リクエスト内容が本当に正しいのかあちら側で検証する手間が発生してしまうことを鑑みて、独立した記事での投稿といたしました。読者の皆様におかれましては本記事公開後に本家記事様が更新され既にエラー箇所が修正されている可能性についてご留意ください。)

# [GoogleDriveをマウント](https://qiita.co

元記事を表示

Googleカレンダーの作業記録から出勤簿を作成したい(前編)

#はじめに

僕が所属している研究室では,自分の研究以外の活動(企業や他大学との共同研究やプロジェクト)に関わると,その時間分だけアルバイト代をもらえるようになっています.

アルバイト代を申請するためには,毎月末「出勤簿」と呼んでいる用紙を印刷し活動内容と活動日時を手書きで書いて大学に提出します.大した作業ではないのかもしれませんが,怠惰な僕には耐えられなかったのである程度自動化してみようと思います.

#どうやるか

まず何らかの形で日々の活動内容を記録しておく必要があります.そのためにGoogle Calendarを利用し,Google Calendar APIでその記録を取り出そうと思います.研究室メンバーはGoogle Calendarで予定を作ったり確認したりするのが習慣づいてるので,Google Calendarを使えば他のメンバーに布教できるし活動を記録するハードルが低くなる気がします.

次にその活動記録から出勤簿を生成します.出勤簿には決められたフォーマット(PDFとExcel)があるので,それに書き込むようにします.本当はExcelファイルに書き込みたかったのです

元記事を表示

‘DataFrame’ object has no attribute ‘ix’の解決法

#はじめに
オライリージャパンの「Pythonではじめる機械学習」の4章のp.210の以下のコードを打ち込んだ時,エラーが発生しました.

“`python
features = data_dummies.ix[:,”age”:”occupation_ Transport-moving”]
#NumPy配列を取り出す
X = features.values
y = data_dummies[“income_ >50K”].values
print(“X.shape: {} y.shape: {}”.format(X.shape,y.shape))
“`
エラー内容

“`python
‘DataFrame’ object has no attribute ‘ix’
“`
#解決法
調べてみると,2020年2月に導入されたpandas-1.0.0で,以前バージョン0.7.3まで使用できたDataFrameの.ixが廃止されたそうです.
しかし,代わりにlocを用いることで解決できます.

“`python
features = data_dummies.loc[:,”age”:

元記事を表示

GraphQLの採用についての考察

## はじめに

技術調査として前から気になっていたGraphQLを調査したので今後、新規プロジェクトにおいて採用できるかの考察をまとめておきます。
※ 今回は、REST APIと比較してGraphQLの利点と使いどろこをまとめています

## 検証環境

– OS: macOS
– python 3.9
– Web Framework: FastAPI
– Front: React.js & Material UI

## GraphQLとは
[GraphQL | A query language for your API](https://graphql.org/)
Facebookが開発元のオープンソースでREST APIと同じく特定エンドポイントにリクエストをしてレスポンスを受け取る仕組みにかわりはないのですが以下の点が違います

**・Rest API**
同一エンドポイントに対してデータ取得・登録・更新などの処理をGET・POST・PATCHなどのHTTPメソッドの使いわけによって行う。
また以下のユーザー情報に関してのリソースに対しては`/user`というパスになってい

元記事を表示

Pythonで自動予約を作る

#はじめに
予約制の施設を使うことになったが、ネット予約がいちいち面倒なので、自動化を試みる。
使うのはPython3とseleniumである。

#環境
・MacOS High Sierra ver10.13.6
・Python3

#自動ログイン
先ずは予約画面に入るための自動ログインを行う。

“`autolog.py
from selenium import webdriver
driver=webdriver.Chrome(“パス”)
url=”https://www.google.com”
driver.get(url)
#urlを開く
login_id=driver.find_element_by_xpath(“//input[@id=’txtUserID’]”)
login_pw=driver.find_element_by_xpath(“//input[@id=’txtpassword’]”)
#IDとpassの打ち込みformの取得
userid=”ID”
userpw=”PASS”
login_id.send_keys(userid)
login_pw.send

元記事を表示

AtCoder初心者によるAtCoder初心者がコケたポイント集

最近AtCoderを始めました。
3回しか参加していないのでまだ灰色です。できたら水色くらいまで行きたいな〜〜〜と思っています(願望)。
何回かやってみて、レベルの高い低いは置いといてコケた箇所を備忘録としてまとめておきました。
プログラミング上手いマンにとっては常識だと思いますが、初心者にとってはあるある(多分)なので生暖かい目で見守っていただけると嬉しいです。
使用言語はpython3です。

# 切り捨て徐算するときはint(A/B)ではなくA//Bを使うべし
[ARC112 B問題](https://atcoder.jp/contests/arc112/tasks/arc112_b)
コストをかけて整数を1引いたり-1倍したりする問題。
問題の本質的な部分ではないのですが、ある値Cを2で割った商の切り捨てを算出する必要がありました。
なので、int(C/2)としてその値を出しました。
【結果】
WA(これだけが原因ではないですが)
【原因】
浮動小数点の有効桁数。int(C/2)でははじめにC/2をfloatとして算出して、切り捨てを行う。floatは桁落ちが発生するので、Cが

元記事を表示

[実践編]discord.pyでdiscordのBotを作ってみよう!

# はじめに
**21/2/24 三部運用編を書いている途中です。**
実践編もちょっとだけ追記する予定です。

プログラミングの基礎文法は理解した。
でも、**「どう書けばいいか分からないよ!!」**という人向けの記事になります。

準備編、実践編、運用編の三部構成になっています。

一部 [準備編]discord.pyでdiscordのbotを作ってみよう!
二部 ←今ここ
三部 [運用編]discord.pyでdiscordのbotを作ってみよう!

**記事は全編通して、基本操作するOSはWindows10を使用しています。**

# Step0.

元記事を表示

図形だけで初音ミクを描く【OpenCV】

# 0. はじめに
– OpenCVの図形を描画する関数を用いて,初音ミクを描きました.
![miku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484145/699b30c8-23e0-7d7f-2912-f09170ef2bc3.png)

※ この作品はピアプロ・キャラクター・ライセンスに基づいてクリプトン・フューチャー・メディア株式会社のキャラクター「初音ミク」を描いたものです
# 1. OpenCVの図形描画関数
– [こちら](https://note.nkmk.me/python-opencv-draw-function/)のサイトを参考にさせていただいております.

### 共通引数
– `img`:図形を描画する画像
– `pt1`:始点
– `pt2`:終点
– `center`:円の中心
– `color`:色(今回はカラー画像で(Blue, Green, Red)で指定する)

元記事を表示

[準備編]discord.pyでdiscordのBotを作ってみよう!

# はじめに
**21/2/24 三部運用編を書いている途中です。**

プログラミングの基礎文法は理解した。
でも、**「何を準備すればいいのか分からないよ!!」**という人向けの記事になります。

準備編、実践編、運用編の三部構成になっています。

一部 ←今ここ
二部 [実践編]discord.pyでdiscordのbotを作ってみよう!
三部 [運用編]discord.pyでdiscordのbotを作ってみよう!

**記事は全編通して、基本操作するOSはWindows10を使用しています。**

# Step0. discordの準備
discor

元記事を表示

OTHERカテゴリの最新記事