NAKED WETWARE

「わがままになるのが怖い奴に宇宙は拓けねェさ」

2020-01-01から1年間の記事一覧

Pythonで二次元配列の初期化では「参照渡し」に気をつけないといけない

問題 先日、プログラミングコンテストで、バグチックな変な問題に足元をすくわれました。 それは、初期化した二次元配列の一部の値を更新したら、ほかの値も更新されるというものです。 以下のようなコードです。 # /usr/bin/python3 # coding: utf8 INF = 1…

PowerShellの設定

PowerShellの設定 WSLが使えない現場で、bashに似たコンソールはないかと調べてたらPowerShellに行き当たった。 コマンドプロンプトよりもかなり使いやすく、いじればbashにかなり近い使い方ができた。 今回は、そのPowerShellの設定方法をメモしておく。 実…

会社メールをGmailで送受信する方法

SMTP/POP3形式のメールをGmailで送受信できるようにした。 このエントリーは、その手順のまとめ。 TL;DR 設定 > アカウントとインポート > 他のアカウントのメールを確認/メールアカウントを追加する > 後はよしなに 設定 > アカウントとインポート > 名前/…

【Python】トラップした例外がロギングされない。

TL;DR Pythonで例外処理、それもエラーメッセージをログ出力するときは、例外クラス名も一緒に出しましょう。 発端 作ったスクリプトが異常終了するという報告を受けた。 聞いた挙動からして、どうもメモリ不足じゃないかと思い、ログを見てみる。 すると、 …

【Python/openpyxl】openpyxlで遭遇したMemoryErrorへの対処方法

TL;DR openpyxlはxlsxファイルをメモリ内に展開してあれこれする 書き込み専用モードにすれば、メモリへの展開をいい感じにしてくれる とりまwb = openpyxl.Workbook(write_only=True)を使っとけばOK 環境 Tools Versions openpyxl 3.0.3 Python 3.6.9 発端 …

【Python/スニペット】コードリーディングで知ったことをまとめる

個人的なまとめ。 他人のコードを読んでいて勉強になったと感じる部分を記述していきます。 math.ceilを使わない天井関数のような処理 math.ceil(A/B) == (A+B-1)//B == int((A+B-1)/B) 理由 いま、非負整数に対してとする。 (1). BがAを割り切るとき、なの…

なぜ -~n = (n+1) となるのか

Pythonゴルフテク(AtCoder)を読んだ。 目から鱗のテクニックが目白押しだった。 その中で個人的に引っかかった -~n = (n+1)について調べた。 なぜビット反転したものに-1をかけると(n+1)と等しくなるのか ここが一番の謎だった。 結論から言うと、 ビット反…

現状で自己最速の素数チェッカーを作った

去るABC149のC問題で、素数に関する問題が出た。 過去問を解いてただけだけど、久々に素数判定の関数を書いた。 一応そこそこの素数チェッカーは書けたけど、改めて自分にどれくらいの素数チェッカーが書けるのか挑戦してみようと思う。 言語はPython3 ソー…