- 1. python3 辞書型
- 2. matplotlibで多軸(2軸~4軸)グラフ作成
- 3. python3 sort 昇順・降順 (記録)
- 4. PyUSB USBError: [Errno 16] Resource busy への対処療法かもしれないメモ
- 5. Python : 指定した順序で辞書を並び替える
- 6. Pythonで強力なパスワードを作る
- 7. 【Python】emojiモジュールについて
- 8. 1から123の約数の和 python
- 9. leetcord python3 9. Palindrome Number(回文数)
- 10. Python で半角スペース区切りの整数を受け取るときの典型的な書き方
- 11. python3 多重ループ(記録)
- 12. pythonフラグ管理 (記録)
- 13. OpenCV(python)をLambdaで動かす
- 14. LeetCord(記録)python3
- 15. Python 3 UTCエポックから日本標準時変換
- 16. python3 記録
- 17. pythonのdataclassまとめ
- 18. python3 例外処理 (記録)
- 19. seabornのload_datasetを認証付きproxy環境下で読み込む場合
- 20. AtCoder参加記録No.4ーABC216
python3 辞書型
##辞書の基本
“`
n = int(input())zaisan = {}
for i in range(n):
[s,a] = input().split()
zaisan[s]= aS = 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_matplotlibdef 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]*nfor 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]*nfor 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 stringdef get_random_password_string(length):
pass_chars = string.ascii_letters + string.digits
password = ”.join(secrets.choice(pass_chars) for x in range(length))
return passwordprint(get_random_password_string(10))
print(get_random_password_string(13))
p
【Python】emojiモジュールについて
##インストール
“`
pip install emoji
“`##動作環境
“`
python3 –version
# Python 3.9.6pip3 show emoji
# Version: 1.4.2
“`##絵文字の正規表現の取得 – get_emoji_regexp()
get_emoji_regexp()メソッドで絵文字判別のための正規表現を取得することができます。
これを利用することで文章中の?みたいな絵文字を消し去ることができます。“`python
import re
import emojifaces = ‘???ლ(´ڡ`ლ)???( ◜ω◝ )???’
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 = [“”]*mfor 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 = 123s = (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 tzutc_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 = numdc = 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: intdc = DataClass(‘tom’,3)
print(f’私の名前は{dc.name}、IDは{dc.num}です。’)
“`“`console
私の名前はtom、IDは3で
python3 例外処理 (記録)
“`python
class MyExcepiton(Exception):
passdef 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='+'