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

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

マップの判定・縦横 Python3編やってみた(Bランク相当)

昨日公開されたPaizaのAランクセットアップ。
コーディングした内容が保存されないので記録として。
現在Bランク。

“`python:paiza_map.py

h,w = [int(i) for i in input().split()]

board = [list(input()) for i in range(h)]

for i in range(h):
for j in range(w):
#左上の場合
if i == 0 and j == 0:
if board[0][1] == “#” and board[1][0] == “#”:
print(i,j)
#右上の場合
elif i == 0 and j == w-1:
if board[0][j-1] == “#” and board[1][j] == “#”:
print(i,j)
#左下の場合

元記事を表示

bootcampのeasy100をやった記録 21-30

[AtCoderProblemsのTrainingをPython3でやる Easy編](https://qiita.com/hortensia/items/364f33a7909c169cdd45)
↑これの21-30のやつです。

#21.[ABC149-C Next Prime](https://atcoder.jp/contests/abc149/tasks/abc149_c)
全てのi(2<=i<=$\sqrt{x}$)に対してx%iが0になったらx=x+1して、ならなかったらwhileループから抜けてxを出せば良いですね。 ```python x=int(input()) while True: for i in range(2,int(x**0.5)+1): if x%i==0: break else: break x+=1 print(x) ``` #22.[AGC027-A Candy Distribution Again]() sum(a)==xのときはnが答えなのは自明です。 それ以

元記事を表示

『Effective Python 第2版』 第2章<リストと辞書>

# はじめに
* こんにちは、takadowaです。
* 前回の[『Effective Python 第2版』 第1章<Pythonic思考>](https://qiita.com/takadowa/items/44db07e227a58287b193)に引き続き、今回は第2章<リストと辞書>について、面白かったこと、大事だと思ったこと、初めて知ったことなどをまとめていきたいと思います。

# 実行環境
サンプルコードを掲載する際は、以下の実行環境で実行した結果を掲載します。
できる限りミスのない形で提供することを心がけますが、動かない、間違っているなどがありましてもご容赦ください。

* macOS 10.14.6
* Python 3.8.5

# 第2章<リストと辞書>
## catch-allアンパック(項目13より)

通常のアンパックは `a, b = [1, 2]` のように書きますが、この書き方だと値の数が一致しない場合、エラーが発生します。

“`python
# 通常のアンパックだと、左辺と右辺とで値の数が一致しない場合はエラーとなる
a, b = [1, 2,

元記事を表示

Pythonプログラミングで効率良くゴルフ場を予約

今回はゴルフの話を書きたいと思う。
ゴルフを始めたのは記憶が確かであれば、4年前程だったとは思うのだが、なかなか進歩しない。
ベストスコアは113なので、正直あまり上手い方とは言えないし、というよりもどちらかというと「下手」といえる部類だとは思うが、ゴルフのスコアの話はどうでもいい。多分ゴルフスコアをプログラミングでどうこうさせることは難しいからだ。
ということで、今回は楽天GORAからWEB APIを取得して、予約可能なゴルフ場をcsvデータにまとめたのちに、マッピングするプログラムをpythonで書いたので、それをまとめたい。

#前置き ゴルフの予約について
あなたはゴルフ場の予約をしたことがあるだろうか?
私はある。会社の人とゴルフに行く場合、年齢的に自分よりも役職が高い人と行くことが圧倒的に多く、こういう予約をする仕事は必然的に役職が低い人に回ってくることが世の常だ。
そして、ゴルフ場の予約をすることは想像していたよりも難しい。
まず、金銭的な問題がある。小遣制の云々により、個々人の懐事情というものは役職に関わらず様々だ。役職の一番低い自分が納得しているから、それでよし、とい

元記事を表示

DjangoでDateFieldにdefault=timezone.nowと書いてしまった

こんにちは、Densyakunです。

しばらく放置していたアプリケーションの開発を再開したので推測ですが、
DjangoでDateFieldにdefault=timezone.nowと書いてしまったのが原因だと思います。

###### 何がしたかったのか

– 日付のみを扱いたい
– 値を無しにできるようにしたい
– 入力しやすくするため、初期値を今日にしたい (auto_系は強制なので目的と違う)

###### 環境

– Windows 10 Pro
– Python 3.7.7
– pip 20.2.1
– Django 3.0.7

# 絶対に書いてはいけないコード

“`py
from django.db import models
from django.utils import timezone

class Production(models.Model):
first_date = models.DateField(default=timezone.now)
“`

# エラー
Django、sqlite3の内部エラーなので、バグだと思います。

`

元記事を表示

# 釣りにArduinoを導入してM5StickCで投げ釣りのアタリを判定する

M5StickC
![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232003/19548cb3-479a-a7eb-a9c7-d8192fb04c1a.png)

ADXL345(Grove接続)
![adxl345s.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232003/83c3eb1f-b392-d233-b996-2506e1289b82.png)

# 経緯

投げ釣りを久しぶりにやってみると、向こう合わせですが、竿先の動きを見てないといけないのです。
過去に見てなくて大物がかかって海に竿が飛び込んだことがあるんです。
その時は友人が奇跡的にルアーで海から拾ってくれたものの
竿先をずっと見てアタリを待つのが結構面倒でした。

そこで電子工作でどうにかできないか思い調べたところ、

**M5StickC**なるものを発見!

スイッチサイエンスで早速購入しアタリ待ちシステム構築を試みることに。

元記事を表示

ColaboratoryでGPUを使う方法

※Googleアカウントが必要です
##手順
1.[Colaboratory へようこそ](https://colab.research.google.com/notebooks/intro.ipynb#scrollTo=5fCEDCU_qrC0)にアクセス

2.[ファイル]>>[ノートブックを新規作成]

3.[編集]>>[ノートブックの設定]

4.ハードウェアアクセラレータをGPUに変更

##注意
・ハードウェアを切り替えると変数やダウンロードしたデータなどが消えます。ハードウェアの切り替えは最初に行いましょう。(これの対策みたいなのってあるんですかね。知ってたらコメントで教えてほしいです。)

・GPUに変更してしばらく放置しておくと、「おい!使ってないくせにGPU借りるんじゃねーよ!!」と警告がでます。

元記事を表示

AtCoder Beginner Contest 175 Task C – Walking Takahashi の解説(Python)

## はじめに
最近、競プロをはじめたばかりですが、AGC175-C問題で圧倒的に簡潔なPyPy3解答が提出されており驚嘆しました。
しかし、読み解くのにかなりの時間を要したので忘れないうちに投稿しておきます。

※Safariやブラウザで見るとMathjaxの数式の箇所でレイアウト崩れが起きるようです。気になる方はPC版のChromeでご覧ください。
訂正:2020/8/19 -> コメントを受けて一部文言をより正確な記述に変更

## 問題
>数直線上で暮らす高橋君は、今座標$X$にいます。これから高橋君はちょうど$K$回、座標の正または負の方向に$D$移動する行為を繰り返そうと考えています。
より正確には、$1$回の移動では 座標$x$から$x+D$または$x−D$に移動できます。
高橋君は、ちょうど$K$回移動した後にいる座標の絶対値が最小となるように移動したいです。
$K$回の移動後の座標の絶対値としてあり得る値の最小値を求めてください。
>>制約
>>
– $-10^{15}≤X≤10^{15}$
– $1≤K≤10^{15}$
– $1≤D≤10^{15}$
– 入力は全

元記事を表示

【LightGBM】はじめてのタイタニック

LightGBMで[タイタニック問題](https://www.kaggle.com/c/titanic)をやります。
開発環境はjupyter-notebookやColaboratoryを使うと便利です。

#データセットの読み込み
“`python
import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split
train = pd.read_csv(“train.csv”) # 学習用データ
test = pd.read_csv(“test.csv”) # テスト用データ
“`
データを眺めてみます

“`python
train.head() # 先頭から5つの要素を表示
“`
![Screenshot from 2020-08-19 13-19-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688672/f7c512

元記事を表示

Pythonのクラスについて意外だったこと

# 驚いた点
以下のようなコードを想定します。

“`python:sample.py
class Sample:

sample_list = []

def __init__(self, args1):
self.name = args1

def add_args(self, args2):
self.sample_list.append(args2)
“`

このコードを実行すると、以下のようにsample_listがaとbの間でシェアされてしまいます。

“`
>>> a = Sample(‘a’)
>>> b = Sample(‘b’)
>>> a.add_args(‘hoge’)
>>> b.add_args(‘huga’)
>>> a.sample_list
[‘hoge’, ‘huga’]
“`

# 解決方法
以下のようにインスタンス変数を用いてクラスを設計することで、この問題を防ぐことができます。

“`python:sample.py
class Sample:

def __init__

元記事を表示

Proofreading APIで500文字以上の文章の異常検知を行う

#はじめに
Proofreading APIは文章の異常箇所を検知してくれるAPIになります.APIキーを発行し,httpsでリクエストに引数としてAPIキーと文章を渡すだけで簡単に使えます.しかし,引数として渡す文章が500文字以上の場合

“`
{‘status’: 1500, ‘message’: ‘server error’}
“`
上記のようなリクエストがAPIから返されます.本記事の内容はProofreading APIで500文字以上の文章の以上検知をする手法についてになります.そのため,APIのわかりやすい使い方などは[参考サイト](https://sinyblog.com/django/proofreading/)を参照してください.

#参考サイト
・[文章の異常箇所を検知するLSTMを利用したAPIをDjangoで実装](https://sinyblog.com/django/proofreading/)

こちらのサイトでProofreading APIのわかりやすい使い方が紹介されています.本記事でも基本的な使い方はこちらを参考にしています.

#準備
[

元記事を表示

Paizaのスキルチェック過去問「みんなでしりとり」を解いた話

がんばりました。
こちらは公開OKのやつです。
##書いたコード
“`python:shiritori.py
# coding: utf-8

N,K,M = [int(i) for i in input().split()]
d_dict = {input() for i in range(K)}
m_list = [input() for i in range(M)]
n_list = [i+1 for i in range(N)]

n = 0
flg = 0

for i in range(len(m_list)):
z = “”
if m_list[i] in d_dict:
d_dict.remove(m_list[i])
if m_list[i][-1:] == “z”:
z = n_list[n]
flg = 0
elif flg == 1 and m_list[i-1][-1:] != m_list[i][:1]:
z = n_li

元記事を表示

「ゼロから作るDeep Learning」自習メモ(その7)

「ゼロから作るDeep Learning」(斎藤 康毅 著 オライリー・ジャパン刊)を読んでいる時に、参照したサイト等をメモしていきます。 [その6](https://qiita.com/slow_learner/items/5589a95081d30f82fbbd)←

そんなもんだよね、でわかったつもりでいればそれで済むことが、どうにも気になり、ひっかかって先に進めません。損失関数について、あれこれいじってみました。

##4.2 損失関数

数式とか、よくわからない時は、実際に数字をあてはめてみるのが理解への近道です。
何回もやってみれば、理解できなくても納得くらいはできます。

ということで、まずは2乗和誤差から。

##2乗和誤差

(P88)
![p88.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686010/cfe7e11d-4107-5b2b-c209-f972ea9911a6.jpeg)

y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1,

元記事を表示

WEBページの国別アクセス数の可視化

ストックではなくLGTMしてね(・∀・)

## 目的
明らかな海外からの攻撃的アクセスをわかりやすくする

## 概要
### 事前準備
– apache or nginxのログを1日ごとになるように設定しておいてください。
(やり方はいくつかあるので、自分で調べてやってみてください)

– GeoLite2-City.mmdb
を使用します。
[GeoIP](https://www.maxmind.com/en/home)を使うので登録してください。
ライセンスと取得方法が昨年末に変更があったので、[ここ](https://kitkatayama.hatenablog.com/entry/2020/01/09/223403)などを参考にしてみてください

### 環境


サーバ: クラウド(AWS lightsail)
OS: CentOS 7.8
Webサーバ: apache 2.4.6
Python: 3.6.4
apacheRoot: /var/www/html/
apacheログ: /var/log/httpd/

“`
[root@fishkil

元記事を表示

Herokuでscikit-learn,pandas,numpyなどの特定のPythonライブラリを使うのが楽になっていた話

#はじめに
以前までは,scikit-learnやpandas,numpyなどのPythonライブラリは,他のライブラリとの依存関係が多いため,Heroku上にデプロイするにはひと工夫が必要でした.
そのひと工夫がいらなくなっていたという話です.

#以前までは
ひと工夫としては,[buildpackの設定](https://elements.heroku.com/buildpacks/projetoeureka/heroku-buildpack-python-sklearn)もしくは[Dockerの利用](https://devcenter.heroku.com/articles/container-registry-and-runtime),もしくはPipfile,Pipfile.lockの生成が必要でした.

自分はrequirements.txtを書いたあとに,以下のコマンドを実行して,Pipfile,Pipfile.lockの生成を行っていました.

“`
pipenv install
“`

#現在
他のライブラリをインストールするのと同様に,requirements.

元記事を表示

Pandas 列名×行番号で要素を抽出する

### はじめに
loc,ilocなど、行名/列名,行番号/列番号を基に要素抽出は出てくるものの、
列名×行番号による抽出方法が上手く探せなかったため、メモ投稿です。

## やりたかったこと
大元のデータフレーム(列名有り,行名無し)から、特定の要素を持つグループに分け、
各データフレームに対して1行ずつ参照して処理をしていく必要があった。

その際、列の指定は出来るが行の指定が思うようにできないため、行番号で処理を試みた。
(reset_indexも考えたが、きっと列名×行番号での指定も出来るはず…)

## 結論
atとindexを組み合わせ、df.at[df.index[行番号],’列名’] で抽出できる

(↓の記事をきちんと読めば良かった…)
https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

### お試し

“`python:DataFrame
# 列名のみのデータフレーム作成
df = pd.DataFrame({‘person’:[‘a’,’b’,’c’,’a’,’b’,’c’],\

元記事を表示

RuntimeError: DataLoader worker (pid(s) ~) exited unexpectedlyの原因と解決法

# 実行環境
– Windows10 Home
– torch 1.1.0

# PytorchでDataLoaderを使おうとしたところ以下のエラーが発生

“`:実行したプログラム
torch.utils.data.DataLoader(
dataset = dataset,
batch_size = 100,
shuffle = True,
num_workers = 8)

“`

“`:エラー文
RuntimeError: DataLoader worker (pid(s) ~) exited unexpectedly
“`

# 原因
メモリ不足が原因

# 解決策
num_workersをエラーが出ない値まで小さくする
ex) `num_workers = 0` 等

元記事を表示

AttributeError: module ‘torch.utils’ has no attribute ‘data’の解決法

# 実行環境
– Windows10 Home
– torch 1.1.0

## PytorchでDataLoaderを使おうとしたところ以下のエラーが発生

“`:実行したプログラム
import torch

torch.utils.data.DataLoader(
dataset = dataset,
batch_size = 100,
shuffle = True,
num_workers = 0)
“`
“`:エラー文
AttributeError: module ‘torch.utils’ has no attribute ‘data’
“`

# 解決策
`import torch`ではなく、`import torch.utils.data`とすると解決する。

元記事を表示

Pythonのスクリプトを実行するための環境構築(for mac)

最近Instagramをやっていて思うこと、

「いいね、自動化できんかな〜」

を現実化するために調べたところ、[この記事](https://ang.tokyo/insta_auto_likes/)を見つけました。
しかしPythonワカラナイ私は環境構築がキツかったので、やったことを残しておきます。

## 手順
(1) pipのアップグレード

“`
$ python3 -m pip install –upgrade pip
“`

(2) seleniumのインストール

“`
$ pip3 install Selenium
“`
(3) chromedriverのインストール

“`
$ brew tap homebrew/cask
$ brew cask install chromedriver
“`

これで、`python3 <ファイル名.py>`が実行できるようになりました〜:v_tone1:

元記事を表示

Lake Counting(POJ NO.2386)をPython3で解く

#蟻本の練習問題初級編
競プロの勉強中の者です。
探索問題で有名なLakeCountingをPythonを使って解いたので載せます。
再帰関数で解く方が多いのですが、僕はスタックを使って解きました(再帰がまだできない…)
以下が実装したコードです。
テストケースを2通りしか試していないので、処理できないパターンがあったら申し訳ありません。

“`lakecounting.py
n,m=map(int,input().split())
field=[list(input()) for i in range(n)]
visited = [[0 for i in range(m)] for j in range(n)]
move = [[0,1],[1,0],[1,1],[0,-1],[-1,0],[-1,-1],[1,-1],[-1,1]]

cnt=0

for i in range(n):
for j in range(m):
if field[i][j] == “W” and visited[i][j]==0:
sx,sy=i,j

元記事を表示

OTHERカテゴリの最新記事