Python3関連のことを調べてみた2022年07月24日

Python3関連のことを調べてみた2022年07月24日

Atcoder ABC261

# ABC261
## A – [Intersection](https://atcoder.jp/contests/abc261/tasks/abc261_a)
memo:
空白区切りの入力をmapをもちいて変数に代入する
“`
a, b, c, d = map(int, input().split())
“`
反省点:
大小関係を場合分けするだけの問題だったが時間がかかってしまった考えられる場合を丁寧に数え上げることが大切

“`python:ans.py
a, b, c, d = map(int, input().split())

if a < c: l_1 = min(b-c, d-c) if l_1 >= 0:
print(l_1)
else:
print(0)
elif a == c:
print(min(b-a, d-c))
else:
l_2 = min(d-a, b-a)
if l_2 >= 0:
print(l_2)
else:
print(0)
“`

## B – [Tournament

元記事を表示

python3 和集合と積集合

# set型を使う
set型を使って和集合と積集合をもとめます。set型を作るときは{}で囲います。
“`python
s = {1,2,3}
“`
set型の特徴は順番と重複が無視されます。
# 集合演算子
set型に集合演算子を使うと和集合や積集合が求められます。
| 和集合
& 積集合
# コード
まずは和集合から
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}

union = s|t#集合sとtの和集合
print(union)
“`
出力
“`
{1, 2, 3, 4, 5}
“`
積集合
“`python
s = {1,2,3,4,5,5}#重複は無視される
t = {2,3}

intarsection = s & t#sとtの積集合
print(intarsection)
“`
出力
“`
{2, 3}
“`

元記事を表示

AtCoder Beginner Contest 復習用(随時更新)

# 2022/07/23
https://atcoder.jp/contests/abc261
## B – Tournament Result
“`python
N=int(input())
A=[input()for i in range(N)]

for i in range(N):
for j in range(N):
if i==j:continue
if A[i][j]==”W”:
if A[j][i]!=”L”:
print(“incorrect”)
exit()
elif A[i][j]==”D”:
if A[j][i]!=”D”:
print(“incorrect”)
exit()
elif A[i][j]==”L”:
if A[j][i]!=”W”:
print(“incorrect”)
exit()
print(“correct”)
“`

# AtCoder Beginner Contest

元記事を表示

巡回セールスマン問題at国立

# はじめに
私が通ってる一橋大学は国立市にあるのですが、国立市は街が碁盤の目のように整備されています。
![2022-07-22 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1488423/741b174c-bec0-26a5-e731-1e040e581706.png)
(Google Mapより引用)
これを見た瞬間思いました。巡回セールスマン問題にぴったり!
(試験勉強の一環なので暖かい目で見てください)
# 巡回セールスマン問題とは
巡回セールスマン問題とは、セールスマンがいくつかの都市を一回ずつすべて通って出発点に戻ってくる最短経路を求める組み合わせ最適化問題です。都市の数をnとすると組み合わせは(n-1)!/2通りあるので、nの値が大きくなると莫大な計算量になります。ということで厳密解ではなく近似解を求めようというわけです。
# 実践
## 問題設定
今回はスタート地点は特に設定せず、国立市の10か所を巡ります。
![2022-07-22 (2).png](https://qii

元記事を表示

【Python】ワイルドカードを使ってローカルファイル郡を取得しよう

globモジュールを使ってローカルに存在するファイル郡を取得する方法を記載します。

## globモジュールとは

Unixシェルが使用する規則に従って、指定されたパターンに合致するパス名をすべて見つけることができます。

## 使い方

まずglobをimportします。glob自体は最初から含まれているため、pipでインストールする必要はありません。

“`python
import glob
“`

.pdfと記載されたファイルを取得するには、以下のように記載します。

“`python
import glob

glob.glob(‘*.pdf’)
“`

出力結果は以下です。

“`python
[‘1.pdf’, ‘3.pdf’, ‘2.pdf’]
“`

.pdfとついたファイルが全て取得できました。
リスト型で取得されるため、1つずつ処理したい場合は、for文で処理する必要があります。

“`python
import glob
files = glob.glob(‘*.pdf’)
for file in files:
print(file)
“`

元記事を表示

GAE + Python(Flask)でHello Worldまの3ステップ

# GAE + Python(Flask)でHello Worldまの3ステップ
前提条件
・GAEをホストするプロジェクトが存在する
・請求先アカウント作成済み
・Cloud SDKインストール済み

## ①AppEngineアプリを初期化
### GCPコンソールで操作する場合
・リソースリストの中からAppEngineを選択する。
・アプリケーションを作成ボタンを押す。
・画面に従ってリージョンを選択する

### コマンドラインで操作する場合
・gcloud app create –project=[YOUR_PROJECT_ID]
を実行
・表示された指示に従ってリージョンを選択する

## ②ローカル環境でアプリを作成する
今回はPythonのフレームワークFlaskを使います。
以下のような構成で作成
root
│ .gcloudignore
│ app.yaml
│ main.py
│ requirements.txt

└─templates
| index.html

“`app.yaml
#GAEの設定ファイル。
#インスタン

元記事を表示

Numbaは爆速だが、Dict(辞書型)は遅い

Numbaの高速ぶりには感謝しております。

下記サイトでもNumba使われてますが、Numbaが断然速い。本PCでもJavaScriptコードでは約3秒。Numbaは掲載記事通りのパラなら3.5秒程度。fastmathやparallelパラ付けで0.7秒位。断然速い。
https://itnext.io/compare-c-js-python-python-numba-php7-php8-and-golang-in-prime-number-calculation-55e82b6f82a9

PythonのコードをよりNumbaへ置き換えたいのですがDictがあると高速化はできていません。
わかる方がいらしたら教えて頂けると幸いです。

### キーは数字/Numba有り
– NoPythonモードでビルドできます

“`python
import numpy as np
from numba import njit
import time
start = time.time()

@njit(cache=True, parallel=True, fastmath=True)
d

元記事を表示

python3 思い出しメモ

# 本記事について
私自身がpython3について思い出したり、基本構文を参考にするためのメモです。

# おまじない
“`python:おまじない
# coding: utf-8
“`

# コメントアウト
“`python:コメントアウト
# コメントアウトできます

”’
複数行のコメントアウトが可能
複数行のコメントアウトが可能
”’
“`

# print
“`python:print
# 数値
print(数値)

# 文字列
print(“文字列”)

# 改行しない
print(xxx, end=””)

# 改行
print()

#********************************** f文字 **********************************
# 参考サイト:https://note.nkmk.me/python-f-strings/
# 記述方法 「123 and abc」と表示
# 「””」「”」どちらでもOK
num = 123
word = ‘abc’

1. print(‘{} and {}’.form

元記事を表示

PyenvとVSCodeでpython3.6のコードをデバッグしようとしたらできなかった

# 症状
PyenvでPython3.6.8にした上で、VSCodeでデバッグしようとしたが、一瞬デバッグのツールバーが出ただけで動かなかった

# 対処法
一番楽なのはPyenvで使うPythonのバージョンを3.7.0以上に上げることです
~~試してないですが、[pdb](https://docs.python.org/ja/3.6/library/pdb.html#module-pdb)を使う方法も多分いけるはず(注意:バージョンに合ったドキュメントを読んでください)~~
追記:[pdb](https://docs.python.org/ja/3.6/library/pdb.html#module-pdb)を試したらいけました(バージョンに合ったドキュメントを読んで下さい)

他にも方法はありそうですが、具体的には言えません(理由は後述)

# 原因考察
完全には判明していないので考察です
だらだらと書き連ねるだけなので、上の対処法で済む人は読まなくていいと思います

まず、Pyenvに問題がありそうだと思ったので、3.6.8を再インストールしたり(治らなかった)、色々なバー

元記事を表示

Python3: DynamoDB の scan

次に記述してある制約条件を回避する方法です。
[scan(**kwargs)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.scan)

“`text
If the total number of scanned items exceeds
the maximum dataset size limit of 1 MB,
the scan stops
“`

“`py:scan_id.py
#! /usr/bin/python
#
# scan_id.py
#
# Jul/22/2022
# ——————————————————————–
import sys
import json
import boto3

# —————————————————-

元記事を表示

AWS S3のCSV(Shift JIS)をLambda+pandasで読み込んでみた

windowsユーザー経由で上がるファイルはsjisなことが多く、csvの文字コードがUTF-8じゃないが故に
“`
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x83 in position 0
“`
といったあるあるエラーをS3ファイル->Lambda pandasで解決してみました。

問題はCSVがUTF-8でないことはもちろんですが、もう1つはS3のレスが“`StreamingBody“`なところ。
既存ファイルをUTF-8で上げなおしてくれなんて言えないのでシステムで読み込む方法を模索。
今回のケースでは、
“`python
pandas.read_csv(response, encoding=”shift-jis”)
とか
pandas.read_csv(response, encoding =”cp932″)
“`
と単純にぶっ込んでも同じエラーになりました。

そこで、
“`python
with codecs.open(“file/to/path”, “r”, “Shift-JIS”, “i

元記事を表示

Django Formクラスのprefixの紹介

# はじめに

DjangoでFormを使ったviewを作ってて以下のような不便を感じたことはありませんか?
「1つのviewに2つのFormを表示してるんだけど、同じname属性を持ったinputが2つできちゃって、POSTがわかりずらい」
こんな時に役に立つのが、Formのインスタンス作成時に指定できるprefixです

# コードの紹介

## サンプルとして定義したmodels.pyとforms.py

今回はModelFormでサンプルを示すので、事前にmodels.pyとそれに基づいたforms.pyを定義しますね

“`python:models.py
from django.db import models

# Create your models here.
class TestModel(models.Model):
name = models.CharField(max_length=100)

class SampleModel(models.Model):
name = models.CharField(max_length=100)

元記事を表示

Raspberry Pi におけるネットワークの設定とnumpyとsounddeviceを利用するまでの設定

# はじめに
Raspberry Piの環境がぶっ壊れたので新しく環境を構築しました。
# IPアドレスの設定
`/etc/dhcpcd.conf`というファイルに書き込むことで設定できます。
1. `sudo nano /etc/dhcpcd.conf`で内容を編集
1. `sudo reboot yes`で再起動
### 例
“`
interface eth0
static ip_address=
static routers=
static domain_name_servers=
static domain_search=
noipv6
“`

オプションの意味は`dhcp-options`と基本的には同じだそうなので、下記リンクを参考にしてください。例えば`domain_name_servers`について知りたい場合は`domain-name-servers`の項を見てみると情報を得ることができます。

https://linuxjm.osdn.jp/html/dhcp/man5/dhcp-op

元記事を表示

DynamoDB のデータを web で表示

DynamoDB のデータを web で表示する方法です。
JSON に変換してから、web で表示します。

## JSON への変換 ##

“`py:dynamo_scan.py
#! /usr/bin/python
#
# dynamo_scan.py
#
# Jul/21/2022
# ——————————————————————–
import sys
import json
import boto3
from decimal import Decimal

# ——————————————————————–
def decimal_default_proc(obj):
if isinstance(obj, Decimal):
return float(obj)
raise TypeError
# —————————-

元記事を表示

pythonでutf-8の文字コードを使って正規表現で特定の文字(文字コード)が含まれるか判定

### タイトルの内容を実現しようとした背景から書きます

## 背景
#### やりたかったこと
例として、『ゼロ幅スペース』(UTF-8 :「E2 80 8B」)などがファイル中に含まれているかチェックしたかった

“あ”のような通常の文字であれば、ソースコードに書けますが
『ゼロ幅スペース』の場合は書いてしまうと(たとえコメントを書いていても)
わかりにくいと思い、「この文字コードを指定している」と明示しようと
考えた次第です。

それに加えて、入力データ中でチェックしたい文字コードは『ゼロ幅スペース』だけではないと判断できたので、文字コードの範囲を指定して**正規表現**でチェックをしようと考えました。

#### なぜ文字コード(utf-8)で指定しようとしたか
想定していない文字コードが文字化けをしたときに、xddコマンドで調べると表示されるのはutf-8のコードだった。

文字化けした
 -> xxdコマンドで原因となる文字コードを特定
  -> utf-8で表示された文字コードをpythonでチェックしたい

#### ネックになった部分
・utf-8を

元記事を表示

threadingをやめてasyncio&aiohttpで楽にPythonスクレイピングを行う

効率的なスクレイピングを行うにはリクエストとレスポンス間の待ち時間をなくすこと。これを実現するためにはthreadingモジュールでマルチスレッドか、asyncモジュールで並列処理をするかだ。

マルチスレッドは気軽に実装できる反面、デバッグが困難になる。asyncの非同期処理はコード量がやや増えるが、デバッグが楽。

この記事を呼んで我に返った

https://qiita.com/Toyo_m/items/992b0dcf765ad3082d0b

よし、threading使うのやめて、async使おうってことで試作したコードが以下

やっていることは、リクエストをしてスリープを1秒間を5回実行する(※スリープの理由は逮捕は嫌なので)

ネット環境によるのだろうけど、5回で2秒近くの処理時間の差が生まれる

“`python3
import aiohttp
import asyncio
import time
import requests

url = ‘https://qiita.com/osorezugoing/items/4ea5249c43c0ba8b89aa’
st

元記事を表示

NumPyのインポートエラーでつまづいた

#### 概要
最近Pythonを学び始めた初心者です。
学習を進めるにあたってnumpyというライブラリを利用しようとした際に躓いたので、解決に至ったまでを書き残そうと思います。同じような状況の方は試してみてもらえればと思います。

#### 環境
Windows 11
vscode: 1.69.2
Python: 3.9.12
Anaconda:4.12.0

#### 1.インストールされているか確認した
VSCodeを使って NumPyを使うには、Python Extension Packをインストールする必要があるとのこと。Extension MarketPlaseから入手可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/8076527b-30a4-118d-51b5-cb832e111968.png)

#### 2.環境変数の確認
VScodeを開き、ファイル→ユーザー設定→設定に行き、Python.PythonPathと入力すると、、、あれ、何も

元記事を表示

3の倍数・3のつく数字だけアホになるプログラム①(小学生高学年向け・python)

この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
[アクセルキャンプ(フリースペースプラウド)のリンク](https://freespaceproud.com)
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。

# (小学生)アクセルキャンプ高学年クラス7/20
# 「3の倍数と3のつく数だけアホになる」プログラム
(参考動画:[世界のナベアツ](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=video&cd=&cad=rja&uact=8&ved=2ahUKEwixldHDoYb5AhUTAYgKHcjhDxkQtwJ6BAgLEAI&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS3sxqexw6pU&usg=AOvVaw1aczeZv8yXkUjdpGJOyQK7))
プログラムの使用は以下の通りです。
>①まず、1から30までの数字を連続で出力す

元記事を表示

Zoomミーティング予定をSlackに流し、Zoom APIを用いて通知しようとしたけどうまくいかなかった話

## はじめに

 山形大学大学院修士1年のHagianです。この記事は[Qiita Engineer Festa 2022 「Zoom API/SDKを使ってみよう!」](https://qiita.com/official-events/86d8555146e1b14fef24)に参加するつもり(つもり)で執筆しました。

## やってみたかったこと

 コロナ禍になってから、大学の講義も一気にオンライン(ミーティングツールを用いたリアルタイム形式)やオンデマンド(資料を参照しながら講義を決められた時間内に受ける形式)等によるものが増えました。最近では講義ごとにPDFファイルなどにまとめられて、ミーティング予定が提示されるようになりました。しかし、毎回開いて確認するのが少し ~~面倒~~ 手間だなと感じていました。

 そこで、このミーティングの予定をSlackに流し、スマホ等の別端末でも確認できるようにしたいと思いました。まとめますと以下の通りです。

* PDFの情報をCSVに変換、保存
* ミーティングID・パスコード抽出
* Slackに予約投

元記事を表示

Pythonでアーキテクチャ図を書いてみた:備忘録

# 概要
アーキテクチャ図のツールがいろいろある中で、Pythonコードを使って簡単に書けるというので試しにしてみました。その備忘録です。

# 準備
環境を整えます。
MacBookを使用していて既に`Python3`はインストール済みです。
それで追加インストールを以下の通り`ターミナル`から実行しました。
`Diagrams`を使用します。これは`graphviz`に依存しているので以下のように両方ともインストールします。
“`zsh:zsh
$ pip3 install diagrams
“`
“`zsh:zsh
$ brew install graphviz
“`

# ソースコード:アプリケーション
アプリケーションのアーキテクチャ図を描いてみるサンプルコードです。
“`Python3:aplication.py
# アーキテクチャ図:アプリケーション
from diagrams import Cluster, Diagram
from diagrams.programming.framework import React
from diagrams.progra

元記事を表示

OTHERカテゴリの最新記事