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

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

Python_requestでファイルをダウンロード

今日は久しぶりにパイソンを復習しようと思います。 その中でパイソンを利用してファイルをダウンロードする方法を調べてみようと思います。

##方法
方法はrequestモジュールを活用することです。

“`
pip install requests
“`

requestモジュールを使用するには、まずpip install requestsを使用してrequestsモジュールをインストールする必要があります。

“`python
import requests

url = “http://google.com/favicon.ico”//….. 接続したいアドレス…
req = requests.get(url, allow_redirects = True) // getを使ってもいいし、postを使ってもいいし、別の接続方式を使ってもいいです。
open(‘google.ico’,’wb’).write(req.content)
“`

https://2.python-requests.org/en/master/user/quickstart/

ここからより多

元記事を表示

python キャラクタをひょこひょこ動かす

python キャラクタをひょこひょこ動かすコードです
←や→キーで少し左右に動きます

“`
import pygame
from pygame.locals import *
import sys
def main():
pygame.init() # Pygameの初期化
screen = pygame.display.set_mode((800, 600)) # 800*600の画面
px=120
py=100
ph=99
pw=99
gMap = pygame.image.load(“hito.png”).convert_alpha() #勇者 50×50
ct=0
ck = pygame.time.Clock()
while True:
ck.tick(30) #1秒間で30フレームになるように33msecのwait
screen.fill((255,255,255))
ct

元記事を表示

Pythonのpygame関連のコード

pygame関連のコードです
ボールゲーム

“`
python:ballgame.py
import pygame
from pygame.locals import *
import sys

# def event(kvx):
# # イベント処理
# for event in pygame.event.get(): # イベントキューからキーボードやマウスの動きを取得
# if event.type == QUIT: # 閉じるボタンが押されたら終了
# pygame.quit() # Pygameの終了(ないと終われない)
# sys.exit() # 終了(ないとエラーで終了することになる)
# elif event. type == KEYDOWN:
# if event.key==K_LEFT:
# kvx = -1#横方向の速度
#

元記事を表示

【Python】pycryptodomeでAES暗号化/復号化

#はじめに
下記の記事を参考にAES暗号化/復号化を試みたのですが2021年6月現在pycryptoはサポートされておらず、pycryptoからフォークしたライブラリであるpycryptodomeの使用が推奨されていました。後方互換性はある程度意識されているようなのですが、参考記事のソースをそのまま使いまわすことは出来なかったため、pycryptodomeで使えるようにするための変更点をまとめておきます。(結果的に2ヵ所をbyte型に変換するだけでしたが…)

https://qiita.com/tomipetit/items/3e478d1559e13d832486

#####実行環境
windows10
python-3.9.4

#####パッケージインストール

“`
$ pip install pycryptodome
“`

#ソース
###参考記事からの変更点
2ヵ所です。

#####`def encrypt(self, raw):`1行目

“`py:変更前
raw = self._pad(raw)
“`

“`py:変更後
raw = self._p

元記事を表示

[メモ]DjangoのLogin、Logout機能

Djangoのログイン機能に少し引っかかってしまったので、メモします。
startappはDjangoで作成したアプリ内という意味です。

“`python:startapp/urls.py
from django.urls import path
from .views import homefunc, loginfunc, logoutfunc

app_name = ‘blog’

urlpatterns = [
path(”, homefunc, name=’index’),
path(‘login/’, loginfunc, name=’login’),
path(‘logout/’, logoutfunc, name=’logout’),
]
“`

“`python:startapp/view.py
from django.shortcuts import render, redirect,
from django.contrib.auth import authenticate, login, logout
from django.co

元記事を表示

pythonを便利に使おう第二回! 数学編

#初めに
問題を解くのに利用するとすれば、何が良いのか。紙には自由自在に文字を書き殴れるという利点があり、パソコンであれば、プログラムにあらゆる処理を肩代わりさせることが出来るという利点がある。それぞれの利点は、お互いの弱点にもなり得るのは、わかりやすい問題点でしょう。
ここで、どちらのほうが良いのか、という問に対して、一言で答えを出すというのは難しいことでしょう。ならば、試してみれば良いのです。
正答率が高いほうが、より優秀な手段と言えるでしょう。人類が先に、先に進むのであれば、優秀な手段でより優秀な手段を子供に学習させていくという必要があるでしょうし、教育の研究等にはきっとこういうことなのでしょう(何も知らないけど)。
###とかいう前置きはさておき!
数学の問題をpythonで解いてやろうというお話です。
問題を解く上でのレギュレーションとしては人に答えを聞きに行かないこと、それ以外であれば問題を解くための何をしてもOK!という気分でやってきます。

>問題としてこちらを使わせていただきました。
https://web.math-aquarium.jp/reidai-zissuu

元記事を表示

SQLAlchemyのトランザクション処理

# はじめに

SQLAlchemy を使って `insert` 処理を実行した際にトランザクションの扱い方で処理時間に結構な差がでました。(※注)
以下、サンプルコードと自身の環境での検証結果ではありますが知見を共有したく思います。

(※注)
本記事のサンプルコードでは `insert` 処理のみを扱いますが、`update` 処理でもトランザクションの扱いによって実行時間に差が出ます。

# 環境

| 環境 | バージョン | 備考 |
| ———————————————————— | ———————– | —————————- |
| macOS Catalina

元記事を表示

pythonでInstagramの投稿を行う

#はじめに
instagramは、APIを使って記事の自動投稿ができますが、APIの審査は何かとハードルが高いです。
なら、seleniumを使えばいいじゃん、というわけで実装してみました。

#注意

  1. 悪用厳禁です。instagramの利用規約に従って利用してください。
  2. 本記事記載のコード、手法を使って損害を被っても、自己責任でお願いします。

本記事は、seleniumの可能性を紹介し、seleniumの機能を学習することが目的ですので、半自動で実行するにとどめましょう。

#コード
“`python
import time
from selenium import webdriver
import chromedriver_binary
import pywinauto

def upload_file(file_path):
pass
# https://syunkan81.hatenablog.com/entry/2020/01/28/091019
# に記載の関数
# de

元記事を表示

Macでpythonを使うときに覚えておいた方がいい備忘録

### はじめに
Macでpythonを使う時に覚えておいた方がいい備忘録について記載する
Windowsは手順が変わると思われるのであくまでMacのみということで限定する

###pyenv
pythonを複数バージョンで使いたいという時に使う
具体的にはbrewから以下の手順でインストールする

brewのインストールがまだというかたは以下のサイトを参照し
TOPページにあるとても長いコマンドをコピペしてインストールしておく

https://brew.sh/index_ja

インストールが終わったら

“`zsh
brew install pyenv
“`

とする
この時エラーが私の環境だと出たのでユーザの環境変数のファイル(私はzshを使っていたので.zshrc)に
以下の記載を追加する

“`zsh
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init –path)”
“`

pyenvのインストールが終わったらまずは自分が使いたいpytho

元記事を表示

AutoGluon 0.2.0によるAutoML環境(Docker前提)の作り方

# 1.はじめに

AutoGluonは、その性能の良さから2020年に話題になった[^1]AutoMLツールである。例えば、とあるKaggleコンペで99%の人間に勝ったという話[^2]もある。

翌2021年4月にはバージョン0.2.0が公開[^3]されたが、環境によってはマニュアル通りにインストールするだけでは十分正しい動作がなされないことがある。

本記事では、AutoGluonを実行するDockerコンテナと、それをVSCodeから利用するための手順を解説する。

[^1]: 例えば、[https://upura.hatenablog.com/entry/2020/03/18/190300](https://upura.hatenablog.com/entry/2020/03/18/190300)を参照。
[^2]: [https://twitter.com/jaguring1/status/1240108860796366853](https://twitter.com/jaguring1/status/1240108860796366853)
[^3]: [https:/

元記事を表示

成功確率の観測データにはベイズ更新が便利

# はじめに
成功 or 失敗のベルヌーイ試行において、観測データの成功回数 / 試行回数の算術平均の値を成功確率として求めることが多いと思いますが
ベイズ更新を用いるともっと便利ですよ という話です。

## 例
算術平均で成功確率を求めると、以下のようになります。

### ユーザーAさん

|試行回数|試行結果|成功確率(成功回数 / 試行回数)|
|—|—|—|
|0|–|–|
|1|成功|100%|
|2|失敗|50%|
|3|成功|66.66%|
|4|成功|75%|
|5|失敗|60%|

### ユーザーBさん

|試行回数|試行結果|成功確率(成功回数 / 試行回数)|
|—|—|—|
|0|–|–|
|1|成功|100%|
|2|成功|100%|
|3|成功|100%|
|…|(4 ~ 99はすべて成功)|100%|
|100|成功|100%|

### 困る点
– 試行回数が0の時は成功確率が入らない
– データ持ちの関係でNULLにできない場合等
– 試行回数が加味されていない
– 試行回数が1回 かつ 成功回

元記事を表示

matplotlib 3D グラフ底面に画像の貼り付け

maplotlibの3Dグラフの底面に画像を貼り付ける手順メモです。

# 環境
ubuntu 18.04

# install
私の環境のmaplotlibのバージョン(3.4.1)では“`matplotlib._png“`というモジュールがインポートできなかったため次のようにして動作するバージョンに変更しました

“`bash:install
pip3 uninstall matplotlib
pip3 install matplotlib==3.1.0
“`

# コード

picture_pathに画像の絶対パスを与えます。

“`python3:plt_picture.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatte

元記事を表示

AtCoder Beginner Contest 193 C問題

AtCoderを始めましたが、ABCのA・B問題はほぼ解ける、C問題は運が良ければ解けるというレベルです。
まずはC問題を難なく解けるというの目標に、まずは過去問のC問題までをどんどんやっていってます。

自力では解けなかった問題を、解説を見て、理解した内容の整理とその結果のコードを書いていきたいと思います。

#問題

https://atcoder.jp/contests/abc193/tasks/abc193_c

>整数 N が与えられます。 1 以上 N 以下の整数のうち、 2 以上の整数 a,b を用いて $a^b$ と表せないものはいくつあるでしょうか?

#解けなかった原因
問題文を素直に説こうとすると、2〜Nまで総当たりで試して数えていくことになるが、計算量が多すぎてTLEになってしまう。

#解き方
・表せないものよりも表せるものの方が数が圧倒的に少ないので、表せるもの一覧を作り、Nから一覧の個数を引いて答えを出すようにする。
・累乗なので、Nまで試行する必要はなく、Nの平方根までで十分。
・$2^4=16$と$4^2=16$など別の組み合わせで同じ数になることを考

元記事を表示

【AtCoder】ABC206をPython3で解説

ABC206の解説。

https://atcoder.jp/contests/abc206

## A – Maxi-Buying
### 解説
`N`の消費税込みの値段を、206円と比較してどうなるかという問題。

`N`にそのまま1.08をかけると、0以下の数字が表示されてしまうため、`p = N * 108 // 100`として、表示させないようにすれば良い。

あとは`if`で場合分けをすると完成。

### コード

“`python
N = int(input())

p = N * 108 // 100

if p < 206: print('Yay!') elif p == 206: print('so-so') else: print(':(') ``` ## B - Savings ### 解説 i日目の朝にi円を入れるという問題。 `while`を用いて、`day`を`total`に足していく。足していく中で`total`が`N`以上となれば、`while`ループを抜け、`day`を出力する。 また、`while True:`とし

元記事を表示

pythonを便利に使おう第一回!

#初めに
試験というのは自分の実力を試すためのものですが、それは問題解決能力を問われていると言い換えても良いかもしれません。社会に出たときに必要なのは結局の所、個人での問題解決能力ですから。
 しかし、だとすれば、自分の実力の限りを尽くして、取れる手段のすべてを尽くして、問題を解決させるのが、試験の正しいあり方なのではないかと思いました。
###とかいう言い訳はさておき!
数学の問題をpythonで解いてやろうというお話です。
問題を解く上でのレギュレーションとしては人に答えを聞きに行かないこと、それ以外であれば問題を解くための何をしてもOK!という気分でやってきます。

>問題としてこちらを使わせていただきました。
https://web.math-aquarium.jp/reidai-sikinotennkaitoinnsuubunnkai.pdf

#式の展開と因数分解
数学においても何にしても、ルールというものは覚えるしかなく、その覚える作業は苦手にする人が多いところです。かく言う私もその一人ですが、pythonのsympyだったらそんな心配する必要はない!というところを見せつ

元記事を表示

GASとPython3で日照時間の履歴を記録する

# 1.はじめに
## 1.1 きっかけ

屋根に太陽光パネルが乗っていると日射量や日照時間が気になってくる(賃貸の我が家には乗っていないが)。おそらく太陽光パネルの発電量に一番重要な情報は日射量の情報だと思うが、実は全天日射量の計測は全国で49カ所でしか行われていない。
[全天日射量の観測地点一覧 (2017年3月時点)](http://k-ichikawa.blog.enjoy.jp/etc/HP/htm/jmaP1.html)

日射量のデータベースはNEDOのものが有名で、アメダスで観測された日照時間などから日射量への換算を行って提供されている。アメダスは全国に約800拠点あるので各地での太陽光発電のシミュレーションにはこのデータが使われることが多いらしい。
[NEDOの日射量データベース](https://www.nedo.go.jp/library/nissharyou.html)

しかし、アメダスの拠点だって自分の住んでいるところからは結構遠い場合も多い。
自分の家の真上の日射情報、Web経由で取得できないだろうか?と思ったのがきっかけ。
結論から言えば、日射量の情報

元記事を表示

月初エクセル集計処理を完全自動化し、100人日掛かっていた作業を一秒で処理した話。【完成版】

Githubに、全コード(Phase1~Phase3)をアップしております。
Github → https://github.com/Revolution2021/Auto_Calc_program
(尚、pz31.pyの19行目のメールアドレス部分だけを本物に差し替えれば動作します。)

下記に、本プロジェクトの全体像を記載します。

********************

営業情報を元に、顧客別に請求金額を確定した上で(Phase1)、報告書を記載し(Phase2)、その報告書をメール送信する(Phase3)と言う一連の処理を完全自動化するプログラム開発に成功した。
必要なスキルは、主に、Python OpenpyxlとWin32com。

あなたは、本作業を行う担当者とする。

■処理の説明

1)あなたには、各月の製品ごとの顧客別販売記録が、下記の様な.csvファイルで、営業担当者から送付されてくる。(この例では、9社の購入情報データがあったと仮定)
=====================================
XXA12345612_m

元記事を表示

温度センサーDS18B20をラズパイに接続して温度を測定する!

#1.温度センサー DS18B20

モジュール付きの温度センサDS18B20をラズパイ4モデルBにつないでみたので紹介します。内容の利用については自己責任でお願いします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280313/55a9081d-cb12-2eda-eb0c-bf6a0095807b.png)

技術的なつくりはこちらを参照。

#2.結線例
ラズパイ  ーーーー DS18B20
5V Power ② ーーーー +
GPIO4 ⑦ ーーーー OUT
Ground(39など) ーーーー ー

#3.「1-Wire」の有効化
ラズパイの設定ウィンドウを開いて1-Wireを無効(デフォルト)から有効にします。

![image.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

python小ネタ帳

### はじめに
pythonの学習を進める上で役に立ちそうなネタを見つけたらメモ代わりに残しておいて、
今後どんどん使っていくのを目的とする

###文字列型のリストを簡単に作る方法

– rangeそのままだとint型になってしまうためmap関数でstrに置換してやるところがミソ

“`python
list(map(str, range(10)))
“`

“`:実行結果
[‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]
“`

###ランダムな数字のリストを作る方法

– 0~100までの数字でランダムに20個のリストを作る

“`
import random
random.sample(range(101), 20)
“`

元記事を表示

csvデータの形がいびつでpandasで読み込みにくい場合の対処法

#csvデータの形がいびつで読み込みにくい場合の対処法

pandasを利用したcsvデータの読み込みで躓いてしまったことがありました。
ちょびっと時間を溶かしてしまったので備忘録としてここに残します。

計測器のメーカーや種類によって、大量のヘッダーやフッター、計測条件などが計測したcsvデータの中に入っていることが多いです。
計測条件は用途によって形が変わり、何行、何列で記載されているかは、csvデータを開いてみないとわからないです。
開ける場合は開いて解決で良いのですが、システムを作ってどんなcsvが来てもエラーで止まらずにとりあえず読み込みたい場合もあります。

なにも考えずにpandasに流し込むとこんなエラーで叱られて中身が確認できない場合があります。

“`
[code]
import pandas as pd
path = “test.CSV”
df = pd.read_csv(path,encoding=’shift-jis’)

[output]
ParserError: Error tokenizing data. C error: Expected 2 fi

元記事を表示

OTHERカテゴリの最新記事