Python

PyPIには悪意のあるソフトウェアが登録されている

いわゆるtyposquatting案件です。 skcsirt-sa-20170909-pypi | NBU Pytosquatting まずやばさを感じる一例を。 PyPIにはurllib3というサードパーティ製のHTTPクライアントがある。今回、このurllib3からわずかに名前を変更した、悪意のあるソフトウェアが登…

Pythonのどうしてこうなるの?トリッキーコード集 (part 6)

午前0時は存在しない (Python 3.5以前限定) from datetime import datetime midnight = datetime(2018, 1, 1, 0, 0) midnight_time = midnight.time() noon = datetime(2018, 1, 1, 12, 0) noon_time = noon.time() if midnight_time: print("Time at midnig…

Pythonのどうしてこうなるの?トリッキーコード集 (part 5)

連鎖演算には注意しよう >>> True is False == False False >>> False is False is False True >>> 1 > 0 < 1 True >>> (1 > 0) < 1 False >>> 1 > (0 < 1) False 解説 https://docs.python.org/2/reference/expressions.html#not-in より 形式的には、 a, b…

Pythonのどうしてこうなるの?トリッキーコード集 (part 4)

同じオペランド、異なる結果 解説 変更不能オブジェクトを変更する 解説 スコープ中に定義されていない変数を使う 解説 外側のスコープから消える変数 解説 どこでreturnしても帰ってくる! 解説 真が偽であるとき (Python 2.x系限定) 解説 同じオペランド、…

Pythonのどうしてこうなるの?トリッキーコード集 (part 3)

is not ...はis (not ...)とは異なる 解説 ループ中で定義した関数が、同じ出力しかしない 解説 ループ変数がローカルスコープ外に漏れる! 解説 ○×ゲーム、初手でいきなり勝利! 解説 デフォルト可変引数にご用心 解説 is not ...はis (not ...)とは異なる …

Pythonのどうしてこうなるの?トリッキーコード集 (part 2)

文字列 解説 でっかい文字列を作ろう! 解説 文字列連結のインタプリタによる最適化 解説 こんなところにelse節? 解説 isの不思議な挙動 解説 isと==の違い 256はすでに存在するオブジェクトであり、257はそうではない しかし、同じ値を同じ行で初期化する…

Pythonのどうしてこうなるの?トリッキーコード集 (part 1)

satwikkansal/wtfPython: A collection of subtle and tricky Python examples 原文のライセンスは煮るなり焼くなり自由なアレ 前文雑要約 Pythonはいい言語。 でも初心者には一見わかりにくい挙動をすることもある。 ここでは古典的でトリッキーな例を集め…

Pythonの起動速度問題

Reducing Python’s startup time [LWN.net] Pythonの起動時間は遅い。コア開発者もわかっちゃいる。 起動時間は特にコマンドラインプログラムの実行時間に影響する。他のスクリプト言語より遅いので困る。 Python 3.7の起動時間は2.7より2倍遅い。 基本いろ…

Pythonの裏知識:infのhash値は円周率になっている

redditから拾ってきたネタだよ。独自性もクソもないね(ヘラヘラ) www.reddit.com Pythonで無限大を表す値を得るにはfloat()を使えばよいことが知られている。 >>> float('inf') inf infのhash()を取ると、円周率を表す値になっていることが確認できる。 >>…

2系では使えないPython 3の優れた機能

Python 3で新たに導入された機能であっても、dict内包/set内包、setリテラル、そして__future__.print_functionについてはPython 2.7にバックポートされ未だに使える。 しかしながら、Python 3でしか使えない有用な機能は多く存在する。この記事はそれを紹介…

Pythonで文字列の長さに対するmax/minを取る

Pythonにおける文字列の大小比較はどのように行われるのか。それは文字列を先頭文字から順に比較して、Unicodeコードポイントが大きいほうが大きいと扱われる。 >>> max('abcde', 'efg') 'efg' 長さを比較したい場合は関数len()を用いて文字列長に変換する。…

pythonでasciiコード対応表を出力する

from pprint import pprint pprint([(i, chr(i)) for i in range(32, 128)])

ドナルド・トランプのツイートを元に株式取引を行うPythonスクリプト

ジョークプログラムだと思うがWeb APIマッシュアップとしては秀逸だと思った(こなみ maxbbraun/trump2cash: A stock trading bot powered by Trump tweets Twitter Streaming APIで発言をリアルタイム抽出 Google Cloud Natural Language APIで固有表現抽出…

文字列のパングラム(pangram)判定 in Python

パングラムは文字列に26種のアルファベットそれぞれが1回以上使われているもの。以下は文字列がパングラムならTrue,でなければFalseを返す。 import string def is_pangram(text): A = set(map(lambda x: x.lower(), text.replace(' ', ''))) B = set(strin…

整数をSI接頭辞で簡易表現(Firendly Number, by checkio)

Friendly number :: py.CheckiO - game for python coders 基数、桁精度、接頭辞、接尾辞。すべてデフォルト引数があるがオプショナルに指定できる。 提出に何度も落ちて都度失敗した入力をかわす、という感じで継ぎ足した。ひどいコードになった。最初のう…

アナグラム判定(checkio)

最初一行でall(x == y for x, y in zip(*map(...)))という書き方を試みた。zipは短い方の配列の要素が尽きたら処理を切り上げるのでverify_anagram("Hello", "Hell")のような入力で死にます。大人しく書き直したのが以下。 def verify_anagrams(w1, w2): f =…

Cipher map(checkio)

rotateして舐めてく富豪実装。 def recall_password(cipher_grille, ciphered_password): rotate = lambda x: list(zip(*reversed(x))) j = "".join r = "" for _ in range(len(cipher_grille)): for x, y in zip(j(cipher_grille), j(ciphered_password)): …

minとmaxの自前実装(checkio)

サンプルケースにはないけどgeneratorがテストケースに入ってる。 それまでは要素からもいっちょ先頭取り出す(args = args[0])という感じだったのでnot subscriptable errorで怒られた。 まぁそうだよねと思いながらiterとnextに変えた。あんまり面白くは…

整数をローマ数字に変換

冗長なのでもっと短くできる。 また別の書き方もあるんだろう。 でも自分にはこれくらいベタな書き方がわかりやすいかな…(あとあと見るぶんにも) ローマ数字は1から3999までしかないので拡張性は気にしなくていいのです。 def int2roman(n) s = [] singles…

Pythonの簡易な壊し方

r/pythonでバズったスレを垂れ流す作業。 MIT License Copyright © 2017 Adhityaa Chandrasekar adtac/destruction: Break Python programs with a simple import. builtinsの名前がPython 2か3かにより違うので、ここでは3系前提で話す。 Pythonの組み込み…

Pythonでbash風のパイプやリダイレクトが使えるライブラリ(syntax_sugar)

パイプ、リダイレクト、中置関数、関数合成演算子、俺が好きな構文糖衣をPythonで書けるようにしてくぜ!という姿勢が素敵。 GitHub - czheo/syntax_sugar_python: A library adding some anti-pythonic syntatic sugar to Python いやREADMEにはmatzのstree…

Flask 入門日誌 - ブログ構築(flaskr)編

Flask 入門日誌目次 - にっき Quickstartは、すでに他のWAF経験がある人向けの文書で、Flask特有のやりかたが書かれているという印象。まったくの初心者は読んでいってもピンと来ない部分が多いので、チュートリアルを読み進める。Flaskのチュートリアルは、…

Flask 入門日誌 ハロワ編

Flask 入門日誌目次 - にっき FlaskはPythonのWeb開発するためのマイクロフレームワークです。Pythonの極小WAFでは一番有名な子のはずなので、この子はとってもいい子だよ!的な紹介はいらんでしょう。本シリーズではチュートリアルを読んで考えたこと、つま…

Flask 入門日誌目次

Hello, World. チュートリアルでブログ作り(flaskr)

Pythonとタートルグラフィックスによる(再帰)プログラミング教育処方案

この記事のウリ Python+turtleで再帰を用い、フラクタル的なお絵描きの作例をそこそこ用意しました。 前半は初心者向けの簡単な図形から始めているので、フラクタルを見たい人は記事後半まで頑張ってスクロールしてください。もちろん調べればLOGOによるこの…

2017はありきたりな素数ではない(pythonによるたしかめ算)

ごあいさつ 今年は2017年で6年ぶりの素数年です。素数年には素数うんちくおじさんという生き物が現れて、みんなにうんちくを披露する習性があります。僕はそういう素数うんちくおじさんを観察するのを趣味としています。僕自身はおじさんを観察するだけで特…

Python 3.6の新機能f-strings(フォーマット文字列リテラル)について

今までのPythonには文字列をフォーマットする方法が標準機能で3種類あった(%, str.format(), string.Template)。pythonはたったひとつの冴えたやり方を求める言語じゃないんですか?*1などと皮肉るのは簡単だが、実際に便利だし、主観的な評価としてはこの…

anacondaでpython3.6をインストール(Windows)

追記:2016/02/02 anacondaにバンドルされているPythonインタプリタが3.6にアプデされました(01/31)。この記事は無用の長物です(元から存在価値は(ry。 2016/12/23にPython 3.6が正式にリリースされたので、インストールします。 要約 これだけ conda cr…