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

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

AtCoder Beginner Contest 177 C問題「Sum of product of pairs」解説(Python3,C++,Java)

注意)解答例はPython3のみ出来ております。C++,Javaの方は「全ての提出」からコードを見て実装することをおすすめします。

皆さんこんにちは(コンテスト後の方はこんばんは!)Ruteです!

AtCoder Beginner Contest 177 C問題の解説をこれから始めます!
A問題,C問題の解説は以下のリンクより見ることが出来ますのでご確認下さい!!

##各問題の解説
|A問題|B問題|C問題|
|—|—|—|
|準備中|準備中|この記事です|

#問題概要
$N$個の整数$A_1,…A_N$で構成された数列が与えられる。
$1 \leq i < j \leq N$を満たす全ての組$(i,j)$についての$A_i×A_j$の和を$mod(10^9+7)$で求めよ。 問題URL :https://atcoder.jp/contests/abc177/tasks/abc177_c ##制約 ・$2 \leq N \leq 2×10^5$ ・$0 \leq A_i \leq 10^9$ ・入力は全て整数 #解説 $A_1,...A_N$

元記事を表示

PythonでAtCoder Beginner Contest 177 E – Coprime

# AtCoder Beginner Contest 177に参加しました
D完。E問題で詰まったので復習としてまとめをします。

# [E – Coprime](https://atcoder.jp/contests/abc177/tasks/abc177_e)
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667032/a167b076-1e53-422b-1049-f17f9ac6ab93.png)

## 本番中に考えたこと
実質「pairwise coprimeをどう判定するか?」という問題。
愚直にpairwiseで判定すると当然時間がかかるので素数ベースで考えるしかない。
要するに「すべての$A_i$について素因数が全くかぶらない」ということなので、$A_i$を素因数分解して出てきたものをカウント(p_cnt[$A_i$] に+1)していけばよさそう。
例:12→2・3、16→2、35→5・7なので、2が2回以上ありpairwiseではない
p_cntの最大値が1ならpai

元記事を表示

bootcampのeasy100をやった記録 31-40

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

#31.[ABC063-B Varied](https://atcoder.jp/contests/abc063/tasks/abc063_b)
各文字のcountが1以外ならnoを出せば良い。
(Yes|No)と(yes|no)みたいな部分が作問者で変わるのやりづらいので統一してほしいと思った。

“`python
s=input()
t=True
for i in s:
if s.count(i) != 1:
t=False
print(“yes” if t else “no”)
“`

#32.[ABC052-B Increment Decrement](https://atcoder.jp/contests/abc052/tasks/abc052_b)
N回操作しながら各xをリストにぶち込んで、最大値を取り出せば良い。

元記事を表示

ABC177参戦記

古戦場帰りで頭がグルグルになってたのか何もわからなくなった。
もうだめだ……おしまいだ……。

#[A – Don’t be late](https://atcoder.jp/contests/abc177/tasks/abc177_a)

普通。
$T×S≧D$ならYes、そうでないならNoを出せば良いですね。

“`python
d,t,s=map(int,input().split())
print(“Yes” if d<=t*s else "No") ``` #[B - Substring](https://atcoder.jp/contests/abc177/tasks/abc177_b) メダパニゾーン なんかとち狂った解法にたどり着いてしまった気がする。 というかどういう考えでこのコードに至ったのか思い出せない。 ```python s=input() t=input() res=float("INF") if t in s: res=0 else: for i in range(len(s)): for j in range(len

元記事を表示

#1 Djangoのwebアプリケーションをデプロイするまで(AWSのEC2でインスタンス構築編)

## インスタンスの作成の仕方
###ステップ1
AWSのEC2を選択し、この画面に移動します。
画面右上の矢印がある所をクリックします。(ここはリージョンというものを選択する所です。)
*特にこだわりが無ければどこでもいいですが、EC2を使用する前はここを必ずチェックしましょう。
「インスタンスの作成」をクリックします。
![インスタンス作成画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/9d4f1e6a-2db9-45e8-51b8-c1a62b789d69.png)

###ステップ2
「インスタンスを作成」をクリックすると、この画面に移動すると思います。
ここで仮想サーバを決めます。
今回はUbuntu Server 18.04 LTS (HVM), SSD Volume Type – ami-0bcc094591f354be2 (64 ビット x86) / ami-0bc556e0c71e1b467 (64 ビット Arm)を使います。
![ステップ1マシンイメージ.pn

元記事を表示

pythonコマンドでpythonはpython3.8を指す

linuxでPythonコマンドを入力するとデフォルトで指すのは/usr/bin/python2.7です。
使いやすいのため、[シンボリックリンク]を作成して、pythonコマンドはpython3を指す。
[シンボリックリンク]:https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%83%AA%E3%83%B3%E3%82%AF

##健忘症患者のメモ:head_bandage:
“`shell
#pythonのバージョンを表示
$ python -V
Python 2.7

#元のシンボリックリンクを削除
$ sudo rm -rf /usr/bin/python

#python関連ファイルを検索
$ whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python3.6.5 /usr/bin/python3.8.5

#シンボリックリンクを作成
$ sudo ln -s /usr/bin/python3.8 /usr/bin/p

元記事を表示

ABC177 B問題メモ Python

# 概要
– 難しく考えすぎてごちゃごちゃした実装してたらコンテスト中はWA
– Tに含まれる文字列すべてのパターンについて調べるようなやり方
– その文字列がSの何番目に含まれるかを調べていき、前後の文字列に余りがあるかを判定するなど
– 他の人の実装見てACにできたので以下にメモ

# 解き方メモ
– S, Tが小さいので全探索
– 探索の仕方は以下(これが思いつかなかった)
S = ‘abcdef’
T = ‘acd’
の時、
S -> ‘abc’, ‘bcd’, ‘cde’, ‘def’
のように、Tの文字列分(今回なら3文字)の全パターンを用意。パターン数は、(Sの文字数) – (Tの文字数) + 1。
あとはTと一文字ずつ比較して、変更が必要な文字数調べるだけ。

“` Python
S = str(input()) # ‘abcdef’
T = str(input()) # ‘acd’

N = len(T)

s_list = []
for i in range(len(S) – N + 1):
s = S[i:i

元記事を表示

AtCoder Beginner Contest 177 B問題「Substring」解説(Python3,C++,Java)

皆さんこんにちは(コンテスト後の方はこんばんは!)Ruteです!

AtCoder Beginner Contest 177 B問題の解説をこれから始めます!
A問題,C問題の解説は以下のリンクより見ることが出来ますのでご確認下さい!!

##各問題の解説
|A問題|B問題|C問題|
|—|—|—|
|準備中です|この記事です|準備中です|

#問題概要
文字列$T$が$S$の部分文字列となるように、$S$のいくつかの文字を書き換えます。
少なくとも何文字書き換える必要があるでしょう。
ここでの部分文字列は連続する部分列のことを指します。
例) `’xxx`’は`’yxxxy’`の部分文字列であるが、`’xxyxx’`の部分文字列ではない。

問題URL : https://atcoder.jp/contests/abc177/tasks/abc177_b

##制約
・$S$,$T$は$1$文字以上$1000$文字以下
・$T$の長さは$S$の長さ以下
・$S,T

元記事を表示

AtCoder Beginner Contest 177 A問題「Don’t be late」解説(Python3,C++,Java)

皆さんこんにちは(コンテスト後の方はこんばんは!)Ruteです!

AtCoder Beginner Contest 177 の解説をこれから始めます!

##各問題の解説
|A問題|B問題|C問題|
|—|—|—|
|この記事です|準備中です|準備中です|

この記事では主にA問題「Don’t be late」の解説をします!!

#問題概要
高橋君は青木君と待ち合わせをしています。
待ち合わせ場所は高橋君の家から$D$メートル離れた地点であり、待ち合わせの時刻は$T$分後です。
高橋君が今から家を出発し、分速$S$メートルで待ち合わせ場所にまっすぐ移動するとき、待ち合わせ場所に間に合うかどうかを判定しなさい。

##制約
・ $ 1 \leq D \leq 10000$
・ $ 1 \leq T \leq 10000$
・ $ 1 \leq S \leq 10000$

#解説
待ち合わせ場所に間に合うかどうかを判定すれば良いです。
つまり分速$S$メートルで$T$分移動した距離が、$D$メートル以上になるかどうかを判定すれば良

元記事を表示

【Python3エンジニア認定基礎試験】受験・合格体験記

# はじめに
Python3エンジニア認定基礎試験を受験し、合格しました。
合格のための勉強法や受験して思ったことをまとめていきたいと思います。

# そもそもPython3エンジニア認定基礎試験って?
[一般社団法人Pythonエンジニア育成推進協会](https://www.pythonic-exam.com/pythonic)が実施している民間資格試験です。
「Pythonic」(Pythonらしい簡潔で読みやすいコードを書こう、という思想)の理解促進を目標の1つとしています。
[2019年7月時点で受験者数が5000人を超え](https://www.pythonic-exam.com/archives/news/python5000)、現在は受験者数は1万人に迫るそうです。

受験方式はCBTで全国の試験センターでいつでも受験でき、受験料は1万円(税別)。

# 筆者のレベル
* プログラミング歴3ヶ月
* paiza、progate、Udemyで基礎を勉強した程度
* DjangoでWebアプリを1つ作成
* 実務未経験

# 出題範囲
オライリー・ジャパン「Python

元記事を表示

ゆっくりに青空文庫を読んでもらう: もっと精確に

[前回](https://qiita.com/Mechanetai/items/6bdc2710d3a507703ef1)はPythonを使って、ゆっくりに青空文庫を読んでもらうことに成功しました
しかし、ルビを考慮せず読ませてしまったので、読み上げの精度がかなり低いという難点がありました
今回はその点を修正していきます

#今回の流れ

やりたいことは
**青空文庫のURLを投げると、読みの辞書登録を済ました上でゆっくりが読み上げてくれる**ことです
そこで、以下の流れを作っていきます

![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349064/40c261fe-2873-a925-3445-be37e6a8478b.png)

# 図書カードのURLからファイルのURLを取得

青空文庫には図書カードというページがあり、そこから本文が記載されたWebページに飛んだり、各種ファイルをDLできたりします

![tosyoka-do.PNG](https://qii

元記事を表示

RSSを読み込んで自動的に定期ツイートしてくれるDockerImageを作って公開した。

# はじめに

RSS定期ツイートをiftttで実装してやっていたのですが、制限が厳しかったため自作しました。

# 完成品

https://hub.docker.com/r/hashito/tweetrss

“`sh
docker run -it –rm \
-e RSS_URL=https://news.google.com/rss/search?hl=ja&gl=JP&ceid=JP:ja&q=twitter \
-e CONSUMER_KEY=x \
-e CONSUMER_SECRET=x \
-e ACCESS_TOKEN=x \
-e ACCESS_TOKEN_SECRET=x \
-e ‘ADD_TEXT=”#rss2tweet”‘ \
hashito/tweetrss

“`

上から

* RSSのURL
* TwitterのCONSUMER_KEY
* TwitterのCONSUMER_SECRET
* TwitterのACCESS_TOKEN
* TwitterのACCESS_TOKEN

元記事を表示

factorization machineでレコメンドエンジンを作成する①

## レコメンドエンジンとは
例えばNetflixを開くと、自分が見たい映画をトップページで表示してくれる。
例えば僕は、「君の名は」、 「ドラえもん」などが表示される。

これはユーザー協調フィルタリングレコメンドエンジンの働きのおかげだ。
ユーザー協調フィルタリングレコメンドエンジンとは、多数のユーザーの行動履歴から、あるユーザーの行動を予測し、レコメンドすると言うものだ。

例えば、30代女性に人気の俳優が、登場する映画Aがあるとする。そうすると、ユーザー協調フィルタリングレコメンドエンジンは、30代の女性ユーザーには映画Aをレコメンドする。

話に聞くと簡単でしょう。
でも、実際に作るとなると、性別、年齢、言語など、考慮しなければならない事が多すぎて、通常のif-elseをしようしたプログラミングでは、あまり精度の高いレコメンドエンジンを作成する事が出来ない。

そのため、factorization machineと言うフレームワークを使用して、精度の高いレコメンドエンジンを作成する。

## factorization machenとは何か?
レコメンドエンジンを作成しようと

元記事を表示

mapはよくわからないけど、list(map(int, input().split()))だけ理解する

#プロローグ
mapはよくわからないけど、よく目にするlist(map(int, input().split()))だけ理解するゾ

#list(map(int, input().split()))の動き
とりあえず動かしてみるとわかりますが、複数の数字の入力から数値のリストを作成します。

“`python
>>> list(map(int, input().split()))
1 2 3
[1, 2, 3]
>>>
“`

#分解して理解する
##input().split()について
input().split()はインプットの文字列を分割します。

“`python
>>> input().split()
ホップ ステップ ジャンプ
[‘ホップ’, ‘ステップ’, ‘ジャンプ’]
“`

#map(int, input().split())について
mapは第一引数を第二引数に適用して、mapオブジェクトを返すらしい。
なので、戻りは、よくわからないmapオブジェクト

“`python
>>> map(int, input().split())
ホップ ステップ ジ

元記事を表示

初めてのDjangoチャレンジ

Django触ってみたので自分用にやったことまとめ

# 参考サイト
こちらを参考に実施
https://docs.djangoproject.com/ja/3.1/intro/tutorial01/

# プロジェクトの作成
下記コマンドでプロジェクト作成

“`
django-admin startproject mysite
“`

## 作成されるファイル
– manage.py
– コマンド操作のためのファイルっぽい
– settings.py
– プロジェクト全体の設定ファイルっぽい
– urls.py
– ルーティング定義のファイルっぽい
– asgi.py
– プロジェクトを提供する ASGI 互換 Web サーバーのエントリポイントと書いていたけどあまりイメージできず…
– あとで調べておこう
– https://docs.djangoproject.com/ja/3.1/howto/deployment/asgi/
– wsgi.py
– こちらもよくわからず…

元記事を表示

Arduinoでオシロスコープらしきものを作った話 → 実用性なくお蔵入り

# Arduinoでオシロスコープらしきものを作った話

## はじめに

本記事はテレワークで組み込みソフトウェアのドライバ開発を行う際に、オシロスコープが不足しており、ArudinoのADCを使って模擬オシロスコープを作れないかと試行錯誤した過程とその結果をメモに残す。

## 構成

大まかな構成は以下の通り

1. 対象のGPIO等をArduinoに接続
2. ArduinoがADCで電圧値を取得し、電圧値をSerialで出力
3. AnacondaがCOMポートから受信したデータをデータに変換し、Matplotlibでグラフを表示

かかった費用は数百円程度。

“`text
| ——– | | ———————– | | ————————————–|
| | | Arduino | | Windowns 10 |
| 対象 |

元記事を表示

pyautoguiを【超適当に】マルチディスプレイ環境に対応させる Part2

前回の記事:[pyautoguiを【超適当に】マルチディスプレイ環境に対応させる Part1](https://qiita.com/kznSk2/items/a6833c095aec3b8ce72e)

# 目的
pyautogui.locateOnScreen()で得た座標を、そのままpyautogui.click()に渡したい。

# 環境
python 3.8.5
pyautogui 0.9.50
pyscreez 0.1.26
OS windows限定
[win32api](https://github.com/mhammond/pywin32/releases)
上記はpipからインストールできないので、リンクから自分の環境にあったものをダウンロードしてインストールする必要がある。

# 調査
locateOnXXX()系の関数は大体locateOnScreen()を呼び出しているので、この関数を修正する。

~~~python:pyscreez\__init__.py

def locateOnScreen(image, minSearchTime=0, **kwargs)

元記事を表示

[Python]randrange()とrandint()の違い

#環境
・Python 3.8.5
・osx10.15.6

#はじめに
`Python`で初めてランダムな数を用いるとき同じような表記があったので違いを記した。

#randrange()とは
`random.randrange(a, b)`は『a』から『b-1』までの整数を返す。
引数が1つの場合は『0』から引数マイナス1の整数を返す。

#random.randint()とは
`random.randint(a, b)`は『a』から『b』までの整数を返す。

#違いは
最後の数を含むか含まないかの違い!
`random.randrange(a, b)`の方は最後の値を含まないので`len(配列)`と組み合わせて
配列の繰り返し処理の便利です!

#参考
random関数について
・https://www.lifewithpython.com/2013/04/random.html

元記事を表示

Cloud DataflowでBigQueryにストリーミングインサートする時のちょっとした注意

# 問題
Dataflowで、[Build-in I/Oのライブラリ](https://beam.apache.org/releases/pydoc/2.23.0/apache_beam.io.gcp.bigquery.html)を使って、BigQueryにストリーミングインサートでデータを挿入しようとすると思わぬエラーに見舞われた。

# こういうコード

“`pubsub2bigquery.py
import argparse
import logging
import json

from past.builtins import unicode

import apache_beam as beam

from apache_beam.io.gcp.pubsub import ReadFromPubSub
from apache_beam.io.gcp.bigquery import WriteToBigQuery
from apache_beam.options.pipeline_options import PipelineOptions
from apache_beam

元記事を表示

pyautoguiを【超適当に】マルチディスプレイ環境に対応させる Part1

# 目的
pyautoguiをマルチディスプレイ環境下でも使いたい、より正確にはマルチディスプレイ環境下のサブディスプレイ内で画像認識させたい。
# 環境
python 3.8.5
pyautogui 0.9.50
pyscreez 0.1.26
OS windows限定
# 調査内容
参考:[pyautoguiのlocateOnScreen()がマルチディスプレイ非対応な理由](https://qiita.com/tatmius/items/b6ff8fa81d09c95374bd)
上記記事にて、以下の記述を発見。
>PILのimageGrab.grab()がデュアルディスプレイに対応していない

これを読んでおや?と思い、imageGrab.grab()の定義を確認してみた。

~~~python:imageGrab.py
def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None):
~~~
~~~python:grab()
all_screens=False
~~~

元記事を表示

OTHERカテゴリの最新記事