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

Python3関連のことを調べてみた2021年08月26日
目次

Python 3.8: 代入式(:=)を使って、フィボナッチ数列の lambda 式を作る

フィボナッチ**数列**は単純な手続きで作れるけど、プログラムにすると以外と面倒臭い。

“`python:Python
def fibonacci_table(n):
r = []
a, b = 0, 1
for _ in range(n):
r.append(a)
a, b = b, a + b
return r
“`

これを Python 3.8 から使用可能な代入式 `:=` を使って lambda 式で作ってみる。

“`python:Python3.8
fibonacci_table = lambda n, f1=0, f2=1, f3=1: ([0, 1] + [(f3 := f1 + f2, f1 := f2, f2 := f3)[0] for _ in range(n – 2)])[:n]
“`

もっと単純になるかと思ったけど、横に長くなっただけだった。
(行末の [:n] は、n が 0 または 1 のためにあります)

“`python:実行結果
>>> fibonacci_table(

元記事を表示

blenderのbpyで、オブジェクトにキーフレームを打つ(スクリプトでリスト作成、もしくは、csv読み込みで)

###はじめに
物理シミュレーションの結果をblender上で表示させるやり方を示す。
前提として、blenderを使ったことがあり、プリミティブオブジェクトについての簡単な操作ができるレベルを前提としている。

###プリミティブオブジェクトとして、ICO球を追加しておいて、スクリプト内でリストを作成し、それを元にオブジェクトにキーフレームを打つスクリプト
下記の通りに実行すると、ICO球がxy平面上に楕円を描く

“`python

import bpy
from math import pi,sin,cos

ob2 = bpy.data.objects[‘Icosphere’]

ob2.animation_data_clear() #スクリプトを再度実行する場合を考慮して、アニメーションデータをクリア

def key_loc_set(list,obj):#リストと対象となるメッシュを受け取って、キーフレームを打つ
for i in list:
bpy.context.scene.frame_set(i[0])
obj.locatio

元記事を表示

櫻坂46メンバーの顔を分類するアプリケーションをStreamlitで作りました。

# 何したの?
櫻坂46のメンバー25人全員の顔画像をCNNモデルで分類するWebアプリケーションを作りました。画像分類のテーマはたくさんありますが、好きなもので取り組む方がモチベ出るでしょってことで櫻坂46を。~~(乃木坂・日向坂に比べるとそんな流行ってない…?)~~

# 作ったもの

[櫻坂46メンバー顔分類アプリ](https://share.streamlit.io/rukaeto/sakurazaka_face_detect_app/main/main.py)
[ソースコード](https://github.com/rukaeto/sakurazaka_face_detect_app.git)

# はじめに

[「[第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践」](https://www.amazon.co.jp/%E7%AC%AC3%E7%89%88-Python%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%

元記事を表示

Python3: UDP を受信

こちらの記事を参考にしました。
[UDPでデータを受信する最も単純なPythonコード(Jupyter notebook版)](http://www.ams.eng.osaka-u.ac.jp/user/ishihara/?p=1942)

次のバージョンで確認しました。

>“`text
$ python3 –version
Python 3.7.3
“`

“`py:receive.py
#! /usr/bin/python3
#
# receive.py
#
# Aug/25/2021
#
import socket
import sys

udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.bind((“0.0.0.0”,8092))

sys.stderr.write(“*** start ***\n”)

while True:
try:
rcv_byte = bytes() #バイトデータ受信用変数
rc

元記事を表示

Python + SendGrid APIでとりあえずメールを送ってみる

# はじめに
この記事は、
**「SendGrid APIを使ってPythonからメールを送ってみたい」**
という願いを持つ方に向けて執筆しています。

既に既出の内容ではありますが、
私の環境では以下の記事の通りにコードを打ってみても
メールが送信できずに、少しハマったので備忘録として残しておきます。

https://qiita.com/takuma-jpn/items/8acc7d3bcbe6ec606e0d

https://qiita.com/Dalice/items/cb51687aae4dba3b2b1e

# サクッと結論
※SendGridのAPI Key発行&pipでのsendgridのインストールは済んでいる前提で説明します。
 済んでいない方は、上記の記事を参考にしてください。

インストールしている**SendGridのverが6.8.0であれば**、
以下のように記述すればOKです。

“`python:send_email.py
# using SendGrid’s Python Library
# https://github.com/sendgri

元記事を表示

【AtCoder】ABC215をPython3で解説(ABCD)

ABC215のA-D問題の解説。

https://atcoder.jp/contests/abc215

## A – Your First Judge
### 解説

条件分岐の問題。
問題文のとおりに`if`を書いてあげると`AC`。

### コード

“`python
s = input()

if s == ‘Hello,World!’:
print(‘AC’)
else:
print(‘WA’)
“`

## B – log2(N)
### 解説

$2^k \leq N$となる最大の$k$を求める問題。

$k$に1ずつ足していき、$N$を超えたら、`break` でループを回す。

### コード
“`python
n = int(input())
k = 0

while True:
if 2 ** k > n:
print(k-1)
break

k += 1
“`

# C – One More aab aba baa
### 解説

文字列Sの各文字を並べ替えて、作成可能な文字列を辞書順

元記事を表示

Pygame de game~インストールと実行~(Part1)

#はじめに
LINEのbotについて書いている僕ですが,Pygameもやっているのでお伝えできたらと思います。
#Pythonのインストール
Pygameを使うためにはPythonが必要です。Python3.9を使用していきます。
##MacOS
MacにはデフォルトでPython3.9がインストールされています。ターミナルで
>
“`
python3
“`

でPythonが起動することを確認してください。
##WindowsOS
[Pythonホームページ](https://www.python.org/)からご自身のOSにあったPython3.9をインストールしましょう。
>
“`
python3
“`

を行い、起動を確認してください。
#Pygameのインストール
ここからはMac,Windows共通です。
>
“`
pip install pygame
“`

を実行します。
##Pygame確認
Pythonを起動して
>
“`python
import pygame
“`

でImportErrorが出なければPygameがダウンロードできました。
##

元記事を表示

pip 全部削除

`pip freeze | xargs pip uninstall -y`
で全削除

元記事を表示

大量にyahooメールを送信する

下記サイトを参考に大量にメールを送信するプログラムにしました。
アカウントで1日最大500通送付できます(ヤフーの仕様でそれ以上はできない)
https://cercopes-z.com/Python/tips-mail-py.html#yahoo-36

send_yahoomail_jp_3_6.pyとyahoomail.pyを同じフォルダに入れます。
yahoomail.pyを実行すればOKです。

基本yahoomail.pyのヤフーアドレスとパスワード、メールの内容を編集するだけで使えます。

セーフティアドレスを使う場合send_yahoomail_jp_3_6.pyのコメントアウトしているところをいじってください。

“`send_yahoomail_jp_3_6.py
# send_yahoomail_jp_3_6.py
# Yahoo!メール 送信 (Python 3.6 以上)

import mimetypes
import os
import smtplib
from email.message import EmailMessage

# Yahoo!メール

元記事を表示

BeautifulSoupで最上層/最下層のタグを選択的に抽出する方法(暫定)

# 概要
– divのみで情報が収納されているhtml(一部分)からtextを抽出したい
– div群の深さ・並列数など構造が可変であり位置指定は難しい
– かろうじて「最上層のdivは大項目」「最下層のdivは個別要素」というルールは信頼できそう
– 最上層divの内部にいくつの最下層divがあるかはまちまち
– 各最下層divのdiv深さは3だったり4だったりまちまち
– ~~このクソ構造を作ったのは誰だァ!~~
– Beautifulsoupで最上層divおよび可変深さの最下層divを抽出する方法のメモ

# 詳細

## 最上層div
– `soup.find_all(‘div’, recursive=False)` で最上層のdivのみ抽出できるらしいが、私の環境では機能しなかった
– htmlの一部分からsoupを作成する際にはbodyタグが全体を囲うように付与される
– `divtops = soup.select(‘body>div’)` でbodyタグ直下のdiv(必然的に最上層)のみを抽出できた

## 最下層div
– 最上層divをdiv

元記事を表示

【WebエンジニアのAtcoder記】入緑しました!

先日行われたABC215にて,ついに入緑しました!!
かれこれ,1年以上かかった結構長い道のりになったので,これまでの勉強過程と現時点の自身のスペック等をまとめます.

image.png

# 自己紹介
– Webエンジニア2年目
– Web系の企業で開発運用業務に従事
– 学部は機械系,研究室配属(学部4年時)以降と修士の2年間では情報検索,NLPの研究
– 修士在学中,JASSO奨学金免除達成(半額)
– 学部が情報系のバックグラウンドではない※1
– ※1:そもそも思い出すと大学2年に進級するとき主専攻振り分けがあるのですが,情報系を選ばなかったのははじ

元記事を表示

Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSからニュースアクセスランキングを取得(スクレイピング)してみた

# はじめに

GPU搭載Windowsを購入して、PyTorchのコンテナイメージ(from NGC Catalog)を使えるようして、、、

それは、流行りの**自然言語処理(NLP; Natural Language Processing)**に取り組みたかったからです。
直近の投稿記事の全ては、この記事のためと言っても過言ではない。

目下、以下の記事を参考に試そうとしています。
[text2text-japaneseによる要約のファインチューニング](https://note.com/npaka/n/nfd1762c42f9d)

が、ivedoor NEWSを収集するところで最新※の記事も使ってみたいなと思ったり。
というわけで、Pythonプログラムで[ニュースアクセスランキング](http://news.livedoor.com/ranking/)を取得(スクレイピング)する処理を実現してみようと思います。

※本稿執筆時点(2021/08/23)の情報に基づき、Code紹介と実行例を示します。

## 本稿で紹介すること

– ニュースアクセスランキング(livedo

元記事を表示

【Python】日付を入力してもらうプログラムができました

Pythonの標準ライブラリのみを使って
ユーザーに入力してもらった日付を `[”2021″,”01″,”01″]` みたいに扱えるようにするプログラムができました。
一度Qiitaに投稿してみたかったので、自分の運営しているサイトから誰が使うねん的な記事を持ってきてみました:)

1. ユーザーに日付を入力してもらう
2. 入力した日付をチェック
– 整数であるか
– 桁数に問題がないか
– 入力した日付が未来の日付になっていないか
– 存在しない日付となっていないか
3. 問題がなければリスト形式で日付が返ってくる(例:`[”2021″,”01″,”01″]`)

といったプログラムのコードを書きました。

“`py
import datetime

def input_year():
# input_year では、年の入力をしてもらう
inputyear = input(“年(例:2021)を入力し、エンター “)

“””strptimeで入力した数値にエラーが発生するかどうかで、正しい形式の年が
入力されたか確認を行う””

元記事を表示

Python 3 エンジニア認定基礎試験 対策 (超初心者向け)

#1. Pythonエンジニア基礎認定試験について

2017年度から始まった民間資格です。

ExcelとかWordのMOS試験を実施している試験会場で受けられます。
例えば
オデッセイ テスティング センター
https://otc.odyssey-com.co.jp/index.html

試験内容などは下記になります。

試験名:Python3 エンジニア認定基礎試験
(英名:Python 3 Certified Engineer Basic Examination)
資格名:Python3 エンジニア認定基礎試験合格者
(英名:Python 3 Basic Grammar Certification)
概要:文法基礎を問う試験
問題数:40問(すべて選択問題)
試験時間:60分
合格ライン:正答率70%
出題範囲:主教材であるオライリー・ジャパン「Pythonチュートリアル(2021年9月1日より第四版に対応します)」の掲載内容を出題範囲として、以下の比率で出題いたします。また、一般的な知識からも出題されます。
※詳細の比率は下記HPをご確認ください。
参考 : http

元記事を表示

代入式を使って CRC32 を一つの lambda 式にする (Python 3.8 以降)

zlib などで使われている CRC32 は以下のような計算になっています。

“`python:Python3
def crc32(data, P=0xedb88320, v=0):
v = v ^ 0xffffffff
for d in data:
v = v ^ d
for b in range(8):
v = (v >> 1) ^ ((v & 1) and P)
return v ^ 0xffffffff
“`

これを、一つの lambda 式にしようとしたとき、data に応じた変数 v の更新が必要ですが、 Python 3.7 以前では v を更新する方法を見つけられませんでした。しかし、Python 3.8 から代入式 `”:=”` が使えるので、それが可能です。

“`python:Python3.8
crc32 = lambda data, P=0xedb88320, v=0xffffffff: 0xffffffff ^ [v := ((v ^ (0 if b else d))

元記事を表示

JavaユーザーがPythonを使って印象的だった点

# はじめに
最近Pythonを用いてLambdaを開発する機会がありました。今までJavaを中心に開発してきた自分にとっては新鮮な経験で、Javaと違ってPythonだとこのように書く・書けるのかと感じたところがありました。

今回はJavaを中心に使用している開発者目線でPythonに触れて印象的だった点を書いてみようと思います。

ちなみにPythonのバージョンは3.8です。

## クラスとメソッド、アクセス制限
オブジェクト指向に慣れるとクラスにデータとメソッドをカプセル化したくなります。

例えばJavaの場合だと

“`Java:PersonName.java

public class PersonName {
private String firstName;
private String lastName;

public PersonName(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

元記事を表示

AWS利用して栃木県コロナデータのレポート出力を自動化する構成を考えてみた

## はじめに
栃木県のコロナのデータは以下サイトにデータの公開と可視化がされています.
しかし, データはいつ公開されているかはわからず比較的全体的な
データの可視化しかされていません.
そこで, コロナの感染状況のデータを自動的に取得してレポートとして公開する方法を考えましたので
ご覧いただけると幸いです.
※あくまでも, レポートとして公開することを目的としているので内容等の考察は行いません.

また, 今回は栃木県のコロナデータをもとにノートブックアウトプット資料の自動化を行っていますが,
他の形式データでも応用可能なので栃木県のコロナの状況には興味のない人にも適応できる内容かな
と思います.

※これはあくまでも個人で作成したものです.

## データセット
https://www.pref.tochigi.lg.jp/e04/welfare/hoken-eisei/kansen/hp/coronakensahasseijyoukyou.html

上記, URLのExcelデータを使用しています.

## 使用技術
開発環境

* macbook air (2020) in

元記事を表示

ipwhoisを使ってwhoisで得られる情報を得る

“`
ykishi@dezembro X-Forwarded-For % cat whois_test.py
#!/usr/bin/env python3

from ipwhois import IPWhois
import json
import sys

def get_info(ip):

obj = IPWhois(ip)
whoisInfo = obj.lookup_whois()

# print(type(whoisInfo))

name = whoisInfo[“nets”][0][“name”]
country = whoisInfo[“nets”][0][“country”]

return name, country

if __name__ == “__main__”:

result = get_info(“51.103.36.90”)
print(type(result))
print(result)
print(“,”.join(result))
print(result[0])
print(re

元記事を表示

concurrent.futuresによる非同期並行処理

# 単純な数値演算を、シーケンシャルに実行した場合と、別途非同期で並行して実行した場合の差異の確認

“`
ykishi@dezembro concurrent.futures-test % cat test2.py
#!/usr/bin/env python3

import concurrent.futures
import urllib.request
import datetime

TOKENS = [“a”, “b”, “c”, “d”, “e”]

def calc(token):
# ————————————-
# Execute some simple calculation
# ————————————-

total = 0
for i in range(100):
print(token, i)
total += i

return token, total

if __name__ == “__main__”:

元記事を表示

Pythonでオリジナルのドット絵エディタを作る(4) – ベクター出力機能の追加

#はじめに
[前回の記事](https://qiita.com/Hisan_twi/items/219eb88c535f9a6171bd)で作成したドット絵エディタに、描いたドット絵をベクター画像(SVG形式)で出力する機能を追加します。。
搭載する機能の仕様は以下の通りです。

– ドットの角ばった形状を保ったままの形で書き出す。
– 色別に複合パスとして書き出す。
– 同じ色が隣接したドットは連結した形状として扱う。
– 白のドットは透明色として扱う(パスとして書き出さない)。

事前にこの機能を実装するためのアルゴリズムを調べたところ、[DEFGHI1977さんのサイト](http://defghi1977.html.xdomain.jp/tech/dotrace/dotrace.htm)で公開されている『ドット絵SVG化スクリプト:dotrace.js』に行き着きました。node.jsのコードとアルゴリズムが公開されているので参考にしようと思いましたが、Javascriptに不慣れなこともありうまくPythonで記述することができませんでした。
そのため、SVG形式への変換は独

元記事を表示

OTHERカテゴリの最新記事