Python3関連のことを調べてみた2021年09月06日

Python3関連のことを調べてみた2021年09月06日

python3 辞書型

##辞書の基本
“`
n = int(input())

zaisan = {}

for i in range(n):
[s,a] = input().split()
zaisan[s]= a

S = input()

print(zaisan[S])
print(zaisan)
“`
・zaisan = {} とすることで辞書を初期化して 変数 zaisan に代入できます。
・zaisan に s に対応する値 a を追加するには zaisan[s] = a とします。(重要)
・zaisan における S に対応する値にアクセスするには zaisan[S] とします。

入力例1
2
Kirishima 1
Kyoko 2
Kirishima

出力例1
1


“`
n = int(input())
dmg = {}

for i in range(n):
s=input()
dmg[s]=0
#kirishima:0,kyoko:0を作る

m = int(input())

for i in range(m

元記事を表示

matplotlibで多軸(2軸~4軸)グラフ作成

###はじめに
COVID-19の感染者の推移グラフはNHKやその他のサイトで参照できますが単一グラフです。このようなグラフは時間軸であるx軸に対して、y軸として「感染者数」、「死者数」、「要入院治療者数」、「重症者数」等を同時にグラフ化すると傾向がわかりやすくなります。
そこで、そのようなグラフをmatplotlibで作成するため、多軸(2軸~4軸)グラフ作成のプロトタイプを作成してみました。
その際、「フォントサイズ」、「多軸の数」、「多軸のスケール幅」に応じて多軸の幅をプログラムで調整しているのがこのプログラムの肝です。

###プログラム
プログラムは以下の通りです。

“`python
# matplotlib 多軸(2軸~4軸)グラフ
import matplotlib as mpl
import matplotlib.pyplot as plt
import japanize_matplotlib

def main():

x = [1, 2, 3, 4] # ※1
y = [[2, 3, 1, 6],
[350, 200, 5

元記事を表示

python3 sort 昇順・降順 (記録)

#重要なところは、a.sort(reverse=True)の箇所

# 昇順
“`python
n = int(input())
a = [0]*n

for i in range(n):
a[i] = int(input())

a.sort()

for i in range(n):
print(a[i])
“`

#降順

“`python
n = int(input())

a = [0]*n

for i in range(n):
a[i] = int(input())

a.sort(reverse=True)

for i in range(n):
print(a[i])
“`

https://note.nkmk.me/python-list-sort-sorted/

#辞書型のソート

“`
n = int(input())
ab = [None]*n

for i in range(n):
[a,b] = input().split()
a = int(a)
b = int(b)
ab[i

元記事を表示

PyUSB USBError: [Errno 16] Resource busy への対処療法かもしれないメモ

# 結論

入出力実行(USBデバイスに制御データ・データを送る)前にis_kernel_driver_activeがTrueならdetach_kernel_driverする。

入出力実行後に、usb.util.dispose_resourcesしてからattach_kernel_driver

例。これは手元にあるデバイス用なので、各自適宜変更してください。

“` python3
if dev.is_kernel_driver_active(intf.bInterfaceNumber):
dev.detach_kernel_driver(intf.bInterfaceNumber)
writes = dev.ctrl_transfer(bmRequestType=0x21,
bRequest=0x09,
wValue=0x0200,
data_or_wLength=[1 << 6]) data = dev.re

元記事を表示

Python : 指定した順序で辞書を並び替える

特定の順序で辞書のキーを並べ替える方法が調べても出てこなくて、ようやく見つけたので記事を書こうと思いました。調べ方が悪かったのかもしれないですが、、、

## 早速並び替える
“`
d = {‘B’: 5, ‘C’: 3, ‘A’: 2, ‘D’: 4, ‘E’: 1}
“`
このdictを

“`
[‘A’, ‘C’, ‘D’, ‘E’, ‘B’]
“`

の順に並び替えたい場合

“`
d = {‘B’: 5, ‘C’: 3, ‘A’: 2, ‘D’: 4, ‘E’: 1}
order = [‘A’, ‘C’, ‘D’, ‘E’, ‘B’]
sorted(d.items(), key=lambda i:order.index(i[0]))
-> [(‘A’, 2), (‘C’, 3), (‘D’, 4), (‘E’, 1), (‘B’, 5)]

“`

参考:[Custom Sorting Python Dictionary](https://stackoverflow.com/questions/12031482/custom-sorting-python-dic

元記事を表示

Pythonで強力なパスワードを作る

Pythonで強力なパスワードを作る方法を簡単に解説した。
パスワードの文字数を入力すれば複雑な文字列を生成できる関数を作って実装する。

自力でランダムに文字を組み合わせてパスワードを生成することもできるが、機会で無作為に作成したほうがはるかに効率的だろう。

# 半角英数字だけのパスワードを生成

Pythonなら次の10行近くのコードだけで複雑なパスワードを簡単に生成できる。

“`python
import secrets
import string

def get_random_password_string(length):
pass_chars = string.ascii_letters + string.digits
password = ”.join(secrets.choice(pass_chars) for x in range(length))
return password

print(get_random_password_string(10))
print(get_random_password_string(13))
p

元記事を表示

【Python】emojiモジュールについて

##インストール

“`
pip install emoji
“`

##動作環境

“`
python3 –version
# Python 3.9.6

pip3 show emoji
# Version: 1.4.2
“`

##絵文字の正規表現の取得 – get_emoji_regexp()
get_emoji_regexp()メソッドで絵文字判別のための正規表現を取得することができます。
これを利用することで文章中の?みたいな絵文字を消し去ることができます。

“`python
import re
import emoji

faces = ‘???ლ(´ڡ`ლ)???( ◜ω◝ )???’
print(re.sub(emoji.get_emoji_regexp(), ”, faces))

# ლ(´ڡ`ლ)( ◜ω◝ )
“`

YouTubeやTwitterなどから取得してきたテキストを色々いじくる前の処理として使うことができます。

##文字列内の絵文字の個数をカウント – emoji_count()

“`python
print(emoji.

元記事を表示

1から123の約数の和 python

####numを1から36までの自然数で割り算し、余りが0の場合に出力していきます。

“`
num = 123
a = []
for i in range(1, num+1): #1~123まで
if num % i == 0:
a.append(i) #配列に入れる

b = sum(a) #配列の総和
print(b)
“`

元記事を表示

leetcord python3 9. Palindrome Number(回文数)

###整数xが与えられた場合、xが回文整数の場合はtrueを返します。という問題

・回文数 「しんぶんし」のようにさかさに読んでも同じ文になる文を回分といいますが、12321のように逆さから読んでも同じ数になる数を回文数といいます。

####問題(翻訳)
整数は、前方と後方で同じように読み取られる場合、回文です。 たとえば、121は回文ですが、123はそうではありません。
例1:

入力:x = 121
出力:true
例2:

入力:x = -121
出力:false
説明:左から右に、-121と表示されます。 右から左に、121-になります。 したがって、それは回文ではありません。
例3:

入力:x = 10
出力:false
説明:01を右から左に読み取ります。 したがって、それは回文ではありません。
例4:

入力:x = -101
出力:false

制約:

-231 <= x <= 231-1 ####回答 文字を反対にしてもマイナスじゃないかを判定するということ。 一番重要なのは、[::-1]で後ろからに変換してくれる。 ``` class Soluti

元記事を表示

Python で半角スペース区切りの整数を受け取るときの典型的な書き方

#### Python で半角スペース区切りの整数を受け取るときの典型的な書き方

“`
N, M, K = map(int, input().split())
“`
・Python ではいくつかの変数を、リストを使ってまとめて初期化することができます。今回のように N, M, K = hoge と書くと、代入されるのが長さ 3 のリストであるとき、そのリストの 0, 1, 2 番目の要素がそれぞれ N, M, K に代入されます。

・N, M, K = map(int, input().split()) は Python で半角スペース区切りの整数を受け取るときの典型的な書き方のひとつです。右辺では input().split() の各要素に int関数 を適用しています。

“`
N, M, K = map(int, input().split())

for i in range(N):
a = [int(j) for j in input().split()]
ans = 0
for j in range(M):
if a[j]

元記事を表示

python3 多重ループ(記録)

##多重ループ
Cの配列の中からsの中で該当するものを判定する。
今回はforの中にforがあることと、inで文字列を確認することがポイント。

“`
m = int(input())

#[“”]文字列の配列を作成するため
c = [“”]*m

for i in range(m):
c[i] = input()

n = int(input())

s = [“”]*n

for l in range(n):
s[l] = input()

for i in range(m):
for l in range(n):
if c[i] in s[l]:
print(“YES”)
else:
print(“NO”)
“`

入力例2
2
c
d
2
cat
dog

出力例2
YES
NO
NO

元記事を表示

pythonフラグ管理 (記録)

##Python3の場合
“`python
n = int(input())

flag = False

for i in range(n):
a = int(input())
if a == 7:
flag = True
“`
まずは flag を False にしておき、a_1, …, a_n の中に 7 が見つかったときにはこれに True を再代入します。こうすることで、7 がひとつでもあった場合には最終的に flag の値は True となり、そうでない場合には False となります。

“`
if flag:
print(“YES”)
else:
print(“NO”)
“`

flag の値に応じて条件分岐し、flag が True のときには YES を、そうでないときには NO を出力するようにすれば OK です。なお、if文の条件文はそのブール値だけが見られるので、if flag == True: などとせずとも、 if flag: と書けば「flag が True のとき」という意味になります。

元記事を表示

OpenCV(python)をLambdaで動かす

すでに他の人が記事で書いているのですが、そもそもSAMについてよくわかっていなかったので自分の備忘録としてリンク集貼っておきます。

https://note.com/rooxim/n/n8631eb634167

AWSのインストール系リンク

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html

そもそもSAM使ってDeployすることを丁寧に書いてくれている記事

http://hack-note.com/infra/aws-sam-lambda-deploy/

元記事を表示

LeetCord(記録)python3

##1. Two Sum

“`
nums = [2,7,11,15]
target = 9
result = []
for i in range(len(nums)):
for j in range(i,len(nums)):
if nums[i] + nums[j] == target:
result = [i, j]
break;

print(result)
“`

##7. Reverse Integer
符号付き32ビット整数xが与えられた場合、桁を逆にしてxを返します。 xを逆にすると、値が符号付き32ビット整数の範囲[-231、231-1]の外に出る場合は、0を返します。

環境では64ビット整数(符号付きまたは符号なし)を格納できないと想定します。

“`python
x = 123

s = (x > 0) – (x < 0) #1(true)-0(false) r = int(str(x*s)[::-1]) y = s*r * (r < 2**31) #321*1(true) print (s)#1 print (r)#

元記事を表示

Python 3 UTCエポックから日本標準時変換

とある通信機器からUTCエポックを受信する機会があった。Python3での日本標準時への変換方法をPythonライブラリーリファレンスで調べた。

# 方法
変換方法は1つではないが、`datetime` モジュールとサードパーティーライブラリー `dateutil` パッケージを使用する方法がある。 `dateutil` は標準では無いので実行環境にない場合はインストールが必要。

# `dateutil` パッケージのインストールコマンド

“`
pip install python-dateutil
“`

# 変換コード

“`py

from datetime import datetime
from dateutil import tz

utc_epoch = 1630557969 # UTCエポックの一例
time_zone = tz.gettz(‘Asia/Tokyo’)
jst_time = datetime.fromtimestamp(utc_epoch, time_zone)
“`

UTCエポックは少数部も含むが、ここでは`etc_epoch` に整数

元記事を表示

python3 記録

##配列から数値に変換

“`python
n = int(input())

a = input().split()

print(a)
for i in range(n):
print(a[i])

“`

“`
print(a[i])
“`
これでリストから対象の番号を参照して1つずつ表示してくれる

##任意の文字列を含むか判定: in演算子

“`
a = input()
b = input()

if a in b:
print(“YES”)
else:
print(“NO”)
“`

元記事を表示

pythonのdataclassまとめ

# はじめに

dataclassの知見が溜まったので、書きたいと思います。

# dataclassとは

通常の場合

“`python
class DataClass:
def __init__(self, name, num):
self.name = name
self.num = num

dc = DataClass(‘tom’,3)
print(f’私の名前は{dc.name}、IDは{dc.num}です。’)
“`

“`console
私の名前はtom、IDは3です。
“`

dataclassの場合

“`python
from dataclasses import dataclass

@dataclass
class DataClass:
name: str
num: int

dc = DataClass(‘tom’,3)
print(f’私の名前は{dc.name}、IDは{dc.num}です。’)
“`

“`console
私の名前はtom、IDは3で

元記事を表示

python3 例外処理 (記録)

“`python
class MyExcepiton(Exception):
pass

def div(a,b):
try:
if (b < 0): raise MyExcepiton("not minus") print(a/b) except ZeroDivisionError: print("not by zero!") except MyExcepiton as e: print(e) else: print("no exception!") finally: print("計算が終了しました") div(10,-2) ``` https://uxmilk.jp/39845

元記事を表示

seabornのload_datasetを認証付きproxy環境下で読み込む場合

## はじめに
seabornには、機械学習や統計分析で有名なサンプルデータを簡単にロードするスクリプトが用意されていますが、proxy環境下ではうまく動かず、いちいちgithub等からダウンロードして手動で読み込ませなければならない場合があり、その時点で挫折してしまいそうになります。
もっと簡単にproxyを突破してダウンロードできるようにならないかと思い調べましたが、簡単に見つからなかったので自分のメモとして記載します。(こんなのにこまるようなヤツは自分しかいないから情報を見つけられなかっただけかもしれませんが…

## 解決方法
以下を冒頭に入れるだけです

“`py
import urllib.request
proxy = urllib.request.ProxyHandler(
{‘http’: “http://:@:“,
‘https’: “http://:@:“})
opener = urllib.reque

元記事を表示

AtCoder参加記録No.4ーABC216

#ABC216
今回参加したABC216についての参加記録

2021年8月29日(日)のAtCoder Beginner Contest 216でした。

https://atcoder.jp/contests/abc216

##結果

A,B問題を正解
レート:42→49 (+7) Highest!
順位:6145/ 7377
時間: A問題16:40 B問題25:41
パフォーマンス:101

##詳細

###A問題
[問題](https://atcoder.jp/contests/abc216/tasks/abc216_a)
今まで普通に解けていたので慢心したのが仇となった
提出コード(RE)

“`python:A問題_1.py
S=str(input())
ans=[]
Y=0
for i in range(4):
if S[i]==’.’:
Y=int(S[i+1])

if 0<=Y<=2: V='+' elif 3<=Y<=6: V='' elif 7<=Y<=9: V='+'

元記事を表示

OTHERカテゴリの最新記事