- 1. 変数への累算代入とオブジェクトへの累算代入の違いを図で理解する
- 2. Python – str型からint型に変換するときの注意
- 3. 初心者がPythonでウェブスクレイピング(1)改良版
- 4. Python – pyinstallerの使い方
- 5. Poetry Django Docker Pycharm で開発環境構築する
- 6. GitHubにある Poetry プロジェクトのサンプル
- 7. C++上でPythonのコードを実行する(Boost.Pythonの利用)
- 8. django makemigarations createsuperuser
- 9. 【Python】LINE BOTに天気予報を答えさせてみた
- 10. Docker始めました
- 11. Django Rest Authでjwt token generatorをsimplejwtに変えてみた。
- 12. Python3 ctypesでWindowsの特殊フォルダを開く関数のコードと学んだこと
- 13. 自動要約API「summpy」を使って、いろんな文章を要約してみた
- 14. Pythonで参照という概念が一瞬ゲシュタルト崩壊したので、少し実験した
- 15. Codeforces Round #668 (Div. 2) バチャ復習(9/7)
- 16. 【Python】Openpyxlで書き込んだ値が指数表示(E)にされた
- 17. xgboostで桜開花予想をしてみる
- 18. TrelloAPIをpythonで使う
- 19. xserverにpythonをインストールしてpipを使えるようにする
- 20. Python – pyautoguiによるマウス、キーボード操作
変数への累算代入とオブジェクトへの累算代入の違いを図で理解する
Pythonでは、数値、関数、クラス、メソッド、モジュールなど **すべて** が **オブジェクト**(何らかのクラスのインスタンス)に **変換** されます。
**変数** は **オブジェクトへの参照値** である **オブジェクトid** を **保持** します。どんなオブジェクトでも **代入** できます。違う型のオブジェクトを **再代入** することもできます。
**リスト** は **オブジェクトid** の **配列** です。配列要素毎に違う型のオブジェクトを 代入・再代入 することもできます。## 変数代入
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/0d12c9d5-d0a5-fc27-8ea3-0335dc3b39dd.png)
“`py
>>> id(1)
15812500000
>>> type(1)
>>> 1 .__class__ # 小数点に解釈されないようにドットの前に空白を入れる
Python – str型からint型に変換するときの注意
#はじめに
str型からint型に変換することは、簡単に見えて意外とエラーが起きやすいところです。
この記事では、str型からint型に変換するときに注意するべき点と、どう対処すればよいのかをまとめました。#エラーが発生しない例
“`python:sample.py
data=int(“1”)
print(data)
“`#エラーが発生する例
“`python:sample.py
data=int(“1.0”)
print(data)
“`#解決策
“`python:sample.py
data=int(float(“1.0”))
print(data)
“`とすれば解決できます。
#最後に
初めてエラーが出たときは頑張って検索しましたが、なかなか情報が出てきませんでした。
なので、少しでも情報を増やそうと思い、この記事を書きました。
初心者がPythonでウェブスクレイピング(1)改良版
この記事は前回記事[初心者がPythonでウェブスクレイピング(1)](https://qiita.com/inoken0926/items/bc18035925549c85727f)のソース改良版です。
bs4メソッドの使い方を変えて、Yahooニュースのヘッドラインニュース抽出時の最後に余計なものが出てしまうのを改善できたので、そのメモです。
※環境:MacOS Catalina Python3.7.3#Pythonでのウェブスクレイピング学習のロードマップ
(1)ローカルでとりあえず目的のブツのスクレイピングに成功する。 ←まだココ
(2)ローカルでスクレイピングした結果をGoogleスプレッドシートに連携する。
(3)ローカルでcron自動実行を行う。
(4)クラウドサーバー上での無料自動実行に挑戦する。(Google Compute Engine)
(5)クラウド上で、サーバーレスでの無料自動実行に挑戦する。(たぶんCloud Functions + Cloud Scheduler)#サンプルPGM(1)の機能
・r
Python – pyinstallerの使い方
#はじめに
皆さんは、Pythonで書いたプログラムを、exeファイルにしたいと思ったことはありますか?
今回は、pyinstallerを使ってPythonプログラムをexeファイルにする方法をご紹介します。#pyinstallerのインストール
ターミナルで、“`text
pip install pyinstaller
“`と入力します。
そうすると、インストールが開始されます。#サンプルソースコード
“`python:sample.py
print(“Hello!”)
name=input(“What’s your name?”)
print(“Nice to meet you “+name+”!”)
“`今回はこのソースコードを使用します。
#ソースコードのexe化
ターミナルで、“`text
pyinstaller sample.py
“`と入力します。
これだと一つのファイルにはなりませんが、“`text
pyinstaller sample.py –onefile
“`のようにすれば一つのファイルだけで動くようになりま
Poetry Django Docker Pycharm で開発環境構築する
# はじめに
pythonを始めて1年経ちますが、Pythonの環境構築はまだ慣れません。
特にパッケージマネージャは数ある言語の中でも最弱のように感じます。
なぜかmacで開発環境を構築しようとするとなぜか OpenSSL がらみのエラーが発生していました。そんな悩みの解決に開発環境をdocker上に構築する方法をまとめました。
ソースは [Github](https://github.com/va034600/python-dev-on-docker) にあげてあります。
# ディレクトリ構成
“`
├── pyproject.toml
└── docker
└── Dockerfile
└── docker-compose.yml
└── mysite/*
“`# ファイル
メインどころのファイルのみ記述します。
Djangoが作成したファイルは置いておきます。“`:pyproject.toml
[tool.poetry]
name = “python-dev-on-docker”
version = “0.1.0”
descript
GitHubにある Poetry プロジェクトのサンプル
# はじめに
PipenvとPoetryの一番の大きな違いはPipenvはライブラリプロジェクトでは使えないが、Poetryは使えるところではと思い、Poetryを勉強しました。
mainプロジェクトとlibraryプロジェクトの2つのプロジェクトをGithub経由でインストールしてlibraryプロジェクトの関数をmainプロジェクトから実行するサンプルです。
ソースは [mainプロジェクト](https://github.com/va034600/poetry-main)と [libraryプロジェクト](https://github.com/va034600/poetry-lib) にあげてあります。
# ディレクトリ構成
“`:poetry-lib
├── pyproject.toml
└── poetry_lib
└── aaa2.py
“`“`:poetry-main
├── pyproject.toml
└── main.py
“`# ファイル
## poetry-lib
“`:pyproject.toml
[tool.poetr
C++上でPythonのコードを実行する(Boost.Pythonの利用)
# はじめに
Boost.Pythonは、C++を使ってPython用ライブラリを作る際に使われることが多いですが、逆にPythonのコードをC++側から利用するいわゆる”埋め込み”(Embedding)の用途でも使用できます。PythonのコードをC++から利用する需要はあまり多くないのか、”boost python”等で検索しても逆の用途(PythonからC++のコードを使用する場合)についての記事ばかり引っかかります。
その場合は”embed”(埋め込み)という検索キーワードを含めると、C++にPythonを埋め込む場合の記事がヒットしやすいです。# 最もシンプルなコード例
“`cpp:main.cpp
#include
namespace py = boost::python;int main()
{
Py_Initialize(); // 最初に呼んでおく必要ありtry
{
// Pythonで「print(‘Hello World!’)」を実行
py::obje
django makemigarations createsuperuser
それでは、前回作成したmodelsで最後に記載した
“`python:models.py
def __str__(selef):
return selef.name
“`この部分ですが、まだ完全に理解できていません。
管理画面で、各レコードを一覧表で表示したときに、
IDがならんでいると分かりにくいので代わりに、社員名を表示してってことだと思います。“`
def __init__
“`なんかまだチンプンカンプン…
作成しながら学んでいきたいと思っています。
私は、少しの知識の組み合わせでなんとか最後までいこうとするので、
便利機能を知らないものがたくさんあるかもしれないです。それでは、スタッフモデルのテーブルを作成しようと思います。
“`django:tarminal
python3 manage.py makemigrations
“`“`django:tarminal
Migrations for ‘staff’:
staff/migrations/0001_initial.py
– Create model Sta
【Python】LINE BOTに天気予報を答えさせてみた
#はじめに
tenki.jpをスクレイピングして天気予報をlinebotに組み込んでみました。
https://tenki.jp/*linedeveloperは登録されている前提でお話します!
#環境
windows
python 3.6.4#先に完成図
![IMG_3332.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705524/f747663e-a469-fc38-cc87-f42358bf693c.jpeg)#まずはスクレイピング準備
“`
#対象のサイトURL
url = “https://tenki.jp/forecast/6/30/6200/27100/”
#インスタンス作成
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, ‘html.parser’)
“`
‘html.parser’はスクレイピングに必要なフィルターみたいなもの。#classごとのスク
Docker始めました
作ったツール類をコンテナにまとめてしまえばいろいろ便利と耳にしたので、以前から気になっていたDockerを使い始めることにしました。
今回は、pythonのflaskで作ったwebサーバをコンテナ化し、コンテナの起動・停止だけでwebサーバを管理できるようにしてみようと思います。使用した環境はこちら
“`
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
$ docker –version
Docker version 19.03.12, build 48a66213fe
“`※ 余談ですが、CentOS 8でDockerをインストールしようとすると `containerd.io` が無いぞって言われることがあるようです。私の場合は[こちら](https://vexpose.blog/2020/04/02/installation-of-docker-fails-on-centos-8-with-error-package-containerd-io-1-2-10-3-2-el
Django Rest Authでjwt token generatorをsimplejwtに変えてみた。
# djangorestframework-jwtを使わない理由
理由としては大きく2つがありました。
– 理由1:もうサポートしてない。(2017年が最後のrelease.)
– securityに問題が発生する。(CVE-2018-0114など。)
– 理由2:refresh_tokenとaccess_tokenを同時に得られない。
– これがきっかけ`Django-simplejwt`は access_tokenとrefresh_tokenを同時得られる。
# djangorestframework-jwt → djangorestframework-simplejwt
まず、djangorestframework-simplejwtからinstallする。
“`bash
pip install djangorestframework-simplejwt
“`[django-rest-auth](https://django-rest-auth.readthedocs.io/en/latest/installation.html)のdirecto
Python3 ctypesでWindowsの特殊フォルダを開く関数のコードと学んだこと
Python3でctypesを使ってWindowsの特殊フォルダを開く関数のコードとそれを書く過程で学んだことです。
“`py:フォントフォルダを開く
import os
import ctypes
from ctypes import oledll, wintypesdef getshellfolderpath(csidl: int) -> str:
if not isinstance(csidl, int):
raise TypeError
SHGetFolderPathW = oledll.shell32.SHGetFolderPathW
SHGetFolderPathW.argtypes = [
wintypes.HWND, ctypes.c_int, wintypes.HANDLE,
wintypes.DWORD, wintypes.LPWSTR]
path = ctypes.create_unicode_buffer(wintypes.MAX_PATH)
SHGetFolder
自動要約API「summpy」を使って、いろんな文章を要約してみた
# summpyとは
リクルートテクノロジーズさんが公開している文章の自動要約APIです。
入力した文章を指定した行数で要約してくれます。公開されているGitHub
https://github.com/recruit-tech/summpy今回は、こちらのAPIに色々な文章を投入し、
結果がどうなるかを検証してみました。# 検証環境
EC2(Amazon Linux release 2)
python2.7# インストール
pip, summpy, mecab-python3をインストールしますmecab-python3については、バージョン0.996.5を指定しないと、
「no such file or directory: /usr/local/etc/mecabrc」エラーが出てしまうため、バージョン指定しています。“`
$ sudo easy_install pip
$ sudo pip install summpy
$ sudo pip install mecab-python3==0.996.5
“`併せて、networkxのバージョンを1
Pythonで参照という概念が一瞬ゲシュタルト崩壊したので、少し実験した
– あってるかは自信ない
– まじで自信ない![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/2d6ce403-2b6d-23cc-96ee-495b9d39a116.png)
Codeforces Round #668 (Div. 2) バチャ復習(9/7)
#今回の成績
![スクリーンショット 2020-09-07 20.03.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/278c327c-bf9b-7806-b5ac-cc308fb8b85f.png)
#今回の感想
今回は悪くない集中力でバチャコンに臨めていたと思います。
しかし、D問題は自分の持ってない知識が問われましたが、**知っておくべき知識であったので反省**しています。
また、バチャコン中に検索していればわかっていた問題でもあるので、時には検索を活用するのも良いかもしれません。#[A問題](https://codeforces.com/contest/1405/problem/A)
ギャグだった。気づかんかったら発狂する気がします。**変に実験はせずに**$p\_1,p\_2,…,p\_n$のまま考えると良いです。
$p\_1+p\_2,p\_2+p\_3,…,p\_{n-1}+p\_n$なので、逆にすれば$p\_n+p\_{n-1},…,p\_3+
【Python】Openpyxlで書き込んだ値が指数表示(E)にされた
#発生した問題
Pythonのライブラリopenpyxlで書き込んだ値がEを用いた指数表示の表示形式にされた“`python:sample_code.py
import openpyxlwb = openpyxl.open(‘./Book1.xlsx’)
sh = wb[‘Sheet1’]sh.cell(row=1, column=1).value = 308985489249593041
wb.save(‘./result.xlsx’)
“`
**結果**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705535/d2e008ea-57f4-5023-8024-c7fb3fe5a624.png)
指数関数を取り除いた表示にしても末尾がいくつか0に置き換えられてて困る#原因
openpyxlでなくExcelの仕様上の問題
>Excel のセルに15桁を超える数字を入力すると、15桁を超える数字はすべて0に変更されます。[Excel のセルに長い数値を入力する
xgboostで桜開花予想をしてみる
xgboostで桜開花予想をしてみる
昨年の3月から今年の2月までのデータを利用
Python
初心者
機械学習#1.目的
AIさくら予想というのがあり、xgboostを使っているという記事があったので、xgboostでさくら開花予想をしてみた。
https://www.businessinsider.jp/post-186528#2.結論
微妙な結果でした。上記AIさくら予想が優秀なことがわかりました。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341706/7f6be762-8e28-90e4-1241-b4013bd6f9d5.png)
開花時期に影響が大きい要素として、年間平均気温、7月の日照時間、8月の雨量、10月の最低気温とされました。
年間平均気温はわかりますが、7月の日照時間、8月の雨量、10月の最低気温あたりは意外でした。#3.データソース
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php
上記気象庁のデー
TrelloAPIをpythonで使う
TrelloAPIをpythonで使う機会があったので、まとめておきます。
## 準備
“`.py
from trello import TrelloClient
import requestskey = ‘***********’
token = ‘***********’
trello = TrelloClient(key, token)
“`
##ボード(名前、ID、URL)を取得“`.py
boards=trello.list_boards()
for board in boards:
print(board.name)
print(board.id)
print(board.url)
print(“—————“)
“`## 特定のボードの情報を取得
“`.py
#知りたいボードのIDを以下に代入
BOARD_ID=”***********”board=trello.get_board(BOARD_ID)
#リスト一覧取得
lists = board.all_lists()
#リスト名、リストID
xserverにpythonをインストールしてpipを使えるようにする
# 目的
Xserverは管理者権限がないので– Python2.7.x /usr/bin/python
– Python3.4.x /usr/bin/python3.4
– Python3.6.x /usr/bin/python3.6が入っているが、パッケージ管理のpipがない&インストールできない
# やったこと
Linuxbrewをインストールしてbrewでpythonを入れる## Linuxbrewをインストール
適当なディレクトリで“`
sh -c “$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)”
“`以降 XXXXX は Xserverでの自アカウントと置き換えてください
“`
…
==> Select the Homebrew installation directory
– Enter your password to install to /home/linuxbrew/.linuxbrew
Python – pyautoguiによるマウス、キーボード操作
#はじめに
皆さんは、マウスやキーボードを自動で操作できることを知っていますか?
pyautoguiを使えば、簡単にマウスやキーボードを操作することができます。#pyautoguiの基礎
##moveTo
moveTo関数はマウスのポインターを動かすための関数です。“`python:sample.py
pyautogui.moveTo(x座標, y座標)
“`##click
click関数はPCの画面の特定の位置をクリックさせるための関数です。“`python:sample.py
pyautogui.click(x座標, y座標)
“`##rightClick
rightClick関数はPCの特定の位置を右クリックさせるための関数です。“`python:sample.py
pyautogui.rightClick(x座標, y座標)
“`##position
position関数は現在のマウスの位置を取得するための関数です。“`python:sample.py
place=pyautogui.position()
print(“x座標”,