- 1. 整数配列と整数ターゲットが与えられた場合、2つの数値の合計がターゲットと同値になり、indexを返却する
- 2. cv2.VideoCapture(0)をしても内蔵カメラの動画が取得できない時の対処法
- 3. python pyenv 切り替え
- 4. Pythonでwebスクレイピング 環境構築からスクレイピングまで2
- 5. Python3: Lambda で DynamoDB を使う
- 6. 【備忘録】Yahoo!ローカルサーチAPIで牛丼チェーン店の位置情報を取得してdeck.glで表示してみました
- 7. Pythonで「年」と「月」の情報を抽出する。
- 8. 競技プログラミング時に便利なスニペット(python3版)
- 9. [Python3] 初心者の初心者による「ユーザー定義関数」解説
- 10. 【随時更新】プログラム初心者に伝えたい、これだけはやっておいてくれというポイント [#Python 編]
- 11. 【競プロ典型90問】012の解説(python)
- 12. ABC219 D問題解説 (python)
- 13. [Python] Tweepyモジュールで、Tweeterのツイートを自動でretweetするBOTを超簡単に作成する方法
- 14. イントロスペクションについて(オブジェクトの調査)
- 15. Python で OpenWeather API へアクセスして気象情報を取得する
- 16. pyenvでpython環境構築時、PythonPATHが/usr/bin/pythonから切り替わらない時の対処法
- 17. 環境変数の設定(Mac)
- 18. Flaskでバックグラウンド実行
- 19. かの有名なFrog問題に奮闘する
- 20. pythonのbottleでちょっとしたAPIサーバを作る
整数配列と整数ターゲットが与えられた場合、2つの数値の合計がターゲットと同値になり、indexを返却する
####趣向
ターケットの値と配列の中のいずれかの値を足した数が同値の場合のindexを
返却する必要があり、結構悩みました。####例
nums = [2,7,11,15], target = 9の場合[0,1]
nums = [3,2,4], target = 6の場合[1,2]
nums = [3,3], target = 6の場合[0,1]
nums = [3,0,3], target = 6の場合[0,2]“`python:python3
def twoSum(self, nums: List[int], target: int) -> List[int]:
stay = {}
for index, number in enumerate(nums):
difference = target – number
if difference in stay:
return [stay[difference], index]
el
cv2.VideoCapture(0)をしても内蔵カメラの動画が取得できない時の対処法
## やりたいこと
macの内蔵カメラの動画を取得したい## コード
“`
capture = cv2.VideoCapture(0)while(True):
# フレームのキャプチャ
ret, frame = cap.read()# 結果のフレームを表示
cv2.imshow(‘frame’,frame)
“`
## 問題“`
Traceback (most recent call last):
cv2.imshow(‘frame’,frame)
cv2.error: OpenCV(4.5.3)
error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘imshow’
“`ネットの記事などを探し回ったところ、どうやらcv2.VideoCaptureがうまくいいっていないらしい。
これはopenCVで画像取得をしようとして、URL誤字をしたなどでも同じエラーになる。## 解決方法
openCVのdocを見たとこ
python pyenv 切り替え
Djangoを入れようとしたら、pythonのversionが合わないと言われpythonのversionを変えようと思った。
しかし、versionの切り替えに詰まったのでまとめます。環境:
mac big sur
zsh 使用zshに以下を記述。
`if which pyenv > /dev/null; then eval “$(pyenv init -)”; fi
`これで、macの標準のpythonを使わせることを取りやめ、pyenvのpathを読ませる記述らしい。
参考:
https://teratail.com/questions/289984
Pythonでwebスクレイピング 環境構築からスクレイピングまで2
# Webスクレイピングの基礎2
前回は`Beautiful Soup 4`を使用したスクレイピング方法について紹介しました。https://qiita.com/hiroshima-bank/items/70471572bcc6bad9d026
`Beautiful Soup 4`はログイン不要なWebサイトのスクレイピングに適したライブラリとなっています。
今回は、ログイン処理までを行うスクレイピングに適しているライブラリである`Selene`について紹介していきます。## 1. Seleneについて
### [Selene](https://github.com/yashaka/selene) とは?
`Selene`は、`Selenide`というJava用のライブラリの`Python`用のラッパーです。
これらのライブラリはすべて、Webブラウザを自動操作させたUIテストツールを実現するものとして開発されてきました。
しかし、実際にはUIテストツールとしてではなく、Webスクレイピング目的としても非常に有用なライブラリとなっています。### `S
Python3: Lambda で DynamoDB を使う
こちらのプログラムを Lambda で使えるように書き換えました。
[Python3: DynamoDB を使う](https://qiita.com/ekzemplaro/items/e7e566a079c677d4e0fc)city という名前のテーブルを作成
“`py:dynamo_create_table.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# dynamo_create_table.py
#
# Sep/20/2021
# ——————————————————————–
import sys
import json
import boto3
#
# ——————————————————————–
def create_table_proc(name_table):
dynamodb = boto3.resource(‘dyn
【備忘録】Yahoo!ローカルサーチAPIで牛丼チェーン店の位置情報を取得してdeck.glで表示してみました
# はじめに
– [Yahoo!ローカルサーチAPI](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html)で牛丼チェーン店の位置情報を取得して[deck.gl](https://deck.gl/)で表示してみました。
– Yahoo!ローカルサーチAPIでは牛丼店で絞り込み、位置情報を取得しています。
– 取得した牛丼店の位置情報はエクセル等で「すき家」「吉野家」「松屋」で抽出して、牛丼チェーン店の位置情報をdeck.glで表示しています。# アウトプットイメージ
YahooローカルサーチAPIで牛丼チェーン店の位置情報を取得して https://t.co/j5x1odcLvTで表示してみた。すき家:赤色、松屋:橙色、吉野家:緑色。吉野家はデータに抜けがあるため参考。すき家は郊外型、松屋は
Pythonで「年」と「月」の情報を抽出する。
## やりたいこと
2021-04-01のような日付の表記から「年」や「月」の情報を抽出する## 環境
Google Colaboratoryを使用しました。## 使用した関数
・pandas.Series.apply()
→Pandasの各要素に関数を適用する・str.split()
→Pandasの文字列を区切り文字で分割## コード
###Step1:DataFrameの作成
“`python:
#日付型のカラムの作成
import pandas as pdlist1=[“2021-04-01″,”2021-04-01″,”2021-04-01”]
columns1=[“日付”]
df=pd.DataFrame(data=list1,columns=columns1)
df
“`###Step2:-(ハイフン)で日付を分割し、「年」と「月」のカラムに代入する。
“`python:
df[‘年’]= df[‘日付’].apply(lambda x: x.split(‘-‘)[0])
df[‘月’]= df[‘日付’].apply(lambda
競技プログラミング時に便利なスニペット(python3版)
はじめまして、とあるIT会社の2年目社員です。
入社して一年半が過ぎ、仕事にも慣れてきたため自己学習に時間と体力を割く余裕が出てきており、
最近[Paiza](https://paiza.jp/challenges)にてアルゴリズムの勉強を行っています。
そこで思ったのですが、どうやら競技プログラミングの問題には* アイディアレベルで処理の流れを考える力
* 上記を実際にプログラムに落とし込む力の二つが必要なようです。
特に競技中に後者の部分で詰まって時間がかかってしまうのはもったいないと思われます。
そこで今回は、競技プログラミング時に便利なコードをまとめてみました。
言語についてはpython3を対象としています。#入力
###一行の入力全体を文字列として受け取る
input“`python
# helloを標準入力にて渡す
a = input()
print(a) # helloと出力される
“`### スペース区切りの複数入力の受け取り(受け取り変数を分ける)
split(区切り文字)“`python
# hello worldを標準入力にて渡す
[Python3] 初心者の初心者による「ユーザー定義関数」解説
#ユーザー定義関数とは
繰り返し使用する処理や、コード全体を見やすくするために使用します。
また、**「自作関数」**とも呼ばれ、自分で作成する関数です。#ユーザー定義関数の書式
“`python:書式
def 関数名(引数):
# インデント(半角空白4個)が必要
処理1
処理2
処理3
return 戻り値# 戻り値の取得
変数 = 関数名(引数)
“`上記が、ユーザー定義関数の書式です。
では、実際の使用方法について説明いたします。
# 使用方法
randomモジュールを使用し足し算の計算問題を10個作成するプログラムのコードを作成しました。
以下のコードを使用し説明いたします。“`python:例
# randomモジュールをインポートする
from random import randint# ユーザー定義関数の作成
def getnum():
num = randint(1,100) # random関数を使用し、値を取得
return num
【随時更新】プログラム初心者に伝えたい、これだけはやっておいてくれというポイント [#Python 編]
## 前提
データサイエンス・機械学習にあこがれてプログラミングを始めた人に、これだけはやっておいて欲しいという計算研究者からの願いを書いておきます。前職のラボ後輩たちが研究成果を外部公開できる形にまとめられていないのがもったいないなと思ったことがあるので、私の思いつくTipsをまとめます。開発時から実践しておくと開発時間が短縮されるものもあるので試してください。なおVisual Studio Codeの利用は網羅できていません。
### `logging` を最初から使ってログを出しておく
デバッグ作業をするときにログは重要です。
どこまでの処理が走っていて、どこの処理で躓いているのかを明らかにできます。pythonでは少なくともバージョン3.7以降標準ライブラリとして`logging`があり、`import logging`でいつでもログ出力のライブラリが利用できます。関数やクラスを書いたら`logging`を仕込んで置くのが無難です。`logging`のログレベルをいじれば、出力したいログの種類を制限できます。これにより開発環境と本番環境でloglevelを変えれば見せ
【競プロ典型90問】012の解説(python)
## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。## [問題012-Score Sum Queries](https://atcoder.jp/contests/typical90/tasks/typical90_l)
### 問題概要
白で塗られたH×Wのマス目に対して、以下の2パターンのいずれかのQ個のクエリを処理する。
1. 白いマス(r, c)を赤で塗る
2. (r1, c1), (r2, c2)の2点が与えられた時、以下の条件をどちらも満たしているか判定する
– 2点が共に赤く塗られている
– 2点が赤いマスを辿っていけば、連結している### 解き方
この問題は、**Union-Find**を知っているか知らないかの問題です。
一応、簡単に説明すると、Union-Findとは、グループ分けの管理を非常に高速に実装できるデータ構造で、
ある集合のグルー
ABC219 D問題解説 (python)
## 概要
AtcoderのABC219のD問題が(おそらく)あと一歩のところで解けず、非常に悔しい思いをしたので、
忘れないよう記事にまとめました。### 問題文
> N 種類の弁当が、それぞれ 1 個ずつ売られています。
i=1,2,…,N について、i 種類目の弁当には Ai個のたこ焼きと Bi個のたい焼きが入っています。
高橋君は、 X 個以上のたこ焼きと Y 個以上のたい焼きを食べたいです。
高橋君がいくつかの弁当を選んで買うことで、 X 個以上のたこ焼きと Y 個以上のたい焼きを手に入れることが可能かどうか判定して下さい。また、可能な場合はそのために高橋君が購入しなければならない弁当の個数の最小値を求めて下さい。
各種類の弁当は 1 個しか売られていないため、同じ種類の弁当を 2 個以上購入することは出来ないことに注意して下さい。### 制約
>$1≤N≤300$
$1≤X,Y≤300$
$1≤Ai,Bi≤300$
入力はすべて整数引用元:[Atcoder-ABC219 D問題](https://atcoder.jp/contests/abc219/tasks
[Python] Tweepyモジュールで、Tweeterのツイートを自動でretweetするBOTを超簡単に作成する方法
Tweeterで、自動リツイートするBOTを作る方法です。
(今後、徐々に肉付けしていきます。多分。。。とりあえず、R1と言う事で。)
皆様のお役に立てると嬉しいです!<はじめに>
自分はPython使いなので、コードに関して詳しく説明しようと思ったのですが、書いている途中で、「pythonのコードを全く知らない人」でも、見よう見まねでBOTが作れる様な記事にしようと思い直し、大幅に書き直しました。
プログラムの事を知らなくても、PCヘビーユーザー以上なら設定可能と思います。
(勿論、Python学習者に人にも少しは役に立つと願いたいです。)<全体のイメージ/状況>
私自身は、TweeterではアカウントAとBを保有しております。
Aの方が本アカウントで、現在、フォローワー1万人を目指し、活動中です。(笑)
そこで、Bの方をBOTアカウントとして、本アカのツイートをひたすらリツイートさせようと思っております。(Bは、サブアカウントです。)
イメージとしては、こんな感じです。
![全体イメージ.jpg](https://qiita-image-store.s3.ap-northe
イントロスペクションについて(オブジェクトの調査)
**pythonの本を読んでいたら、イントロスペクションという単語が急に出てきたので、ネットで調べたものをまとました。**
#イントロスペクションの意味
英語ではintrospectionと書かれ、日本語で「内省」と訳されます。あまり生活にはなじみのない単語ですが、辞書を引いてみると内省は「自分自身の思考や振る舞いについて深く考えること」と書かれています。プログラミング言語においてのintrospectionは、**プログラムの実行時にオブジェクトの性質や型を調べること**です。
プログラミング言語で書かれたオブジェクトについて内省することだと私は解釈しています。
イントロスペクションは多くのプログラミング言語に実装されています。
#リフレクション(reflection)との違い
似たような意味としてリフレクションが存在します。
リフレクションは、プログラムの実行時にオブジェクトの値、メタデータ、性質、関数を操作することです
#例(python)
pythonは全てがオブジェクトなので、イントロスペクション機能を持つ関数を使うことで多くの事を調べることができます。
イントロスペクシ
Python で OpenWeather API へアクセスして気象情報を取得する
## Goals
* OpenWeather API へ Python からアクセスできるようになる
* 取得した JSON データを整形して出力できるようになる## Back ground
仕事で Python を書く機会がありそうなので、
Python の素振りがてら、API を叩くコードを書いてみようと思いました。## OpenWeather
OpenWeather は気象情報を閲覧するモバイルアプリなどを公開しているサービスです。
別途、 API も無料で (※) 公開されているため、そちらを今回は利用します。
https://openweathermap.org/※ 確認はしていませんが、この手の API は商用利用等では有料となる可能性があるため、よく確認の上使用してください。
## API の仕様
今回は現在の気象データを取得するため、以下の API を使用します。
[Current weather data](https://openweathermap.org/current)## API Key の取得
API へアクセスする
pyenvでpython環境構築時、PythonPATHが/usr/bin/pythonから切り替わらない時の対処法
pyenvでのpython3環境構築で、
pyenv globalをしてもpythonのpathが変更されない問題でちょっと詰まったので、
解決手法をメモしておきます。基本的には[こちらの記事]( https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a )を参考に、pyenvのセットアップを行いました。
## 問題点
“`pyenv versions“`では変更されているのに
“`
~ ❯❯❯ pyenv versions
system
3.8.12
* 3.9.7 (set by /usr/local/var/pyenv/version)
“`“python –version“で確認したところディフォルトバージョンから変更できていない。
python のpathも変更されていない。“`
~ ❯❯❯ python –version
Python 2.7.16
~ ❯❯❯ which python
/usr/bin/python
“`## 解決方法
“`
環境変数の設定(Mac)
# はじめに
環境変数とは、OS上で設定できる変数。tokenなどのファイルに記述したくない情報を、OSに保存しておくことで機密性が保たれる。pythonの場合, osライブラリを用いることで環境変数を呼び出すことができる。
以下、利用例及び設定方法を説明する。# 利用例
– tokenを環境変数で設定。ファイルに記述すると、情報が漏洩してしまうので良くない。
# 設定方法
## 一時的なセッションの間、環境変数を有効にしたい場合
仮想環境(pyenvなど)をactivateしてから、ターミナルで以下を実行。
`export “YOUR_TOKEN”=”xxxxxx”`
OS全体に環境変数を設定すると、重複の判別が困難になるので、仮想環境ないだけで利用する環境変数を設定する。
なお、**同じ環境変数名に異なる値を入れた場合、上書きされる**。
## 永続的に有効にしたい場合
シェルに応じて、.zshrcファイルや.bashhrcファイルなどを作成して、そこに同様にexport文を記述。
以下のように、シェルスクリプトを実行。
`source .zshrc`
Flaskでバックグラウンド実行
[PythonでThreadを使うflaskサンプルを作ってみた \- Qiita](https://qiita.com/juri-t/items/5cec3822e168215aff49)
の練習とブラウザで操作できるようにstart,stopボタンをつけてみた。uwsgiなどで並列プロセス化するとjobs変数共有できないので、別途ジョブキューのceleryなどを使ったプロセス作る必要がある。
“`py:app.py
from datetime import datetime
from flask import Flask, make_response
from time import sleep
import threadingapp = Flask(__name__)
class MyThread(threading.Thread):
def __init__(self):
super(MyThread, self).__init__()
self.stop_event = threading.Event()
かの有名なFrog問題に奮闘する
#Topic
– 前の記事に引き続き,お世話になっている「問題解決能力を鍛える!アルゴリズムとデータ構造」関連の話.
– Frog問題(AtCoder Educational DP Contest A – Frog 1)の別解を考えたい## 別解??
Frog問題は,[AtCoder Educational DP Contest A – Frog 1](https://atcoder.jp/contests/dp/tasks/dp_a)を参考されたい.
ここでは,自分の考え方を記述しておく.(実装はまだできていない)“`Python
#xはコスト,iは段数
func(x,i):
if i == n-1: return
func(x + abs(h[i+1] – h[i]), i+1)
func(x + abs(h[i+2] – h[i]), i+2)#初期値は0で,段数は0段目から始まるからx,iに0を代入
func(0,0)
“`実現したいこととしては,再帰で0段目からN段目までのコストを全て計算させること.
ただ,分かってもらえるとおりこ
pythonのbottleでちょっとしたAPIサーバを作る
ちょっとしたAPIサーバがほしいとき、pythonで手軽に作ることができます。
“`requirements.txt
bottle==0.12.18
“`“`app.py
# -*- coding:utf-8 -*-
from bottle import (get, HTTPResponse, default_app)
from wsgiref.simple_server import WSGIServer, make_server
from socketserver import ThreadingMixIn
import jsonclass ThreadingWSGIServer(ThreadingMixIn, WSGIServer):
“””
マルチスレッドなWSGIServer
“””
pass@get(‘/active’)
def is_active():
return ‘OK’@get(‘/testget’)
def test_get():
dummy_response = {
‘v