裏表(Phinloda のもう裏だか表だか分からないページ)

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
久しぶりに書評を投稿するスクリプトを実行してみたのだが

スクリプトといっても大したものではなくて、HTML タグとかをちょろっと付けるだけのものである。 ちょろっとでも手で付けるのは大変なので、markdown 的な処理を再生産するのもどうかと思ったのだが、とりあえずちょろっと書いてしまったプログラムがあるのでそれを使っている。

ところが、そのスクリプトが作るファイルが一体どこにあるのか分からなくなった。つまり、原稿となるファイルをそのスクリプトにかけると、どこかに temp というファイルができるのだが、どこだか分からない(笑)。

プログラムを解析して解決。

JUGEMテーマ:python

| Python | 21:43 | comments(0) | trackbacks(0)
python に range という関数があるのだが

最近話題にしていた、ファイルを日別に分ける処理を書く時に、例えば 31 日まである月だと range(1,32) と書くわけである。これで1から31までの値を生成してくれる。32は含まない。half-open という概念はよく分かるのだが、直感的に1から31まで順に作りたいときに、(1,32) というのはちょっと違和感がある。

in_range のような名前で両端を含むような関数を作ればいい、という意見もあるかもしれないが、個人的にはそこまで拘っていないので、31日まで処理するときは range(1, 31+1) と書いている。これはこれで拘り過ぎのような気がしないでもないが。

JUGEMテーマ:python

| Python | 20:00 | comments(0) | trackbacks(0)
django をインストールしようとしたのだが
conda create -n django

を実行したら、

WARNING: A newer version of conda exists.

とか言われた。4.6.8 が出たらしい。

conda update -n base -c defaults conda

して、という指示だったのでその通りやって解決。

JUGEMテーマ:python

| Python | 19:43 | comments(0) | trackbacks(0)
Jupyter Notebook でマークダウンのテキストを書いているのだが (2)

先日書いた、ドル記号 ($) で画面表示がおかしくなる件。 結局解決してないのだが、消極的対応をするようになったので、追記しておく。つまり、どうしても何とかしたい場合は、

<!--- $ -->

のような行を適当なところに追加してしまうのだ。一度 $ が出現してから、その行まではダメだが、その後は状態がリセットされる。 コメント行になっているので、Run させたときに画面に出てこないのがミソ。コメント開始で「--」ではなく「---」とするのは何か理由があったはずだが忘れた(笑)。

JUGEMテーマ:python

| Python | 13:35 | comments(0) | trackbacks(0)
Jupyter Notebook でマークダウンのテキストを書いているのだが

Cell type を markdown と指定すると、編集中の画面である程度リアルタイムに状態を反映して色や文字サイズで表現してくれるのでとても便利なのだが、途中にドル記号「$」が出てくると、その後うまく状態表示してくれないことがある。次に「$」が出てきた後は普通に表示されたりする。

いろいろ調べてみたが、エスケープする程度では全く改善されなかった。

ただ、これは編集中の画面だけの話で、生成したデータはちゃんと思惑通り修飾されているので、いまいち解決意欲がわかないのである。

JUGEMテーマ:python

| Python | 20:48 | comments(0) | trackbacks(0)
Python のバージョンアップがあったのだが

12月24日に、Python 3.7.2 と 3.6.8 がリリースされた。私が使っているのはなぜか 3.6.4 と少し古い。古いまま使う理由はないので、年末年始に update しようと思っている。

JUGEMテーマ:日記・一般

| Python | 21:48 | comments(0) | trackbacks(0)
You are using pip version 9.0.1, however version 18.1 is available.

ちょっとバージョン空きすぎてない? という疑問を感じたのは確かだが…とりあえずサクっとバージョンを上げた。 コマンドは画面に表示されていた通りで問題なかった。

JUGEMテーマ:日記・一般

| Python | 21:00 | comments(0) | trackbacks(0)
45問の四択のテストで適当に選んで30問以上正解する確率は

計算したら約 0.000000475% になった、多分合っていると思うのだけど、これがうまくプログラムで書けない。

import scipy.misc as scm
import numpy as np

p = 0
n = 45
for i in range(30, n + 1):
    p += scm.comb(n, i, 1) * np.power(1/4, i) * np.power(3/4, n - i)

print(p)
4.75006548988e-09

numpy 使うのだから、ループさせないで一撃で計算できそうな気がするけど、vectorize とか使って定義した関数を要素毎に呼び出して sum 取ったりしているとあまり見た目は変わらない(笑)。もうちょっと真面目に numpy 勉強しないとダメっぽい。

JUGEMテーマ:日記・一般

| Python | 18:12 | comments(0) | trackbacks(0)
「いつか読んだ本」に1日2投稿したのだが

原稿のテキストを書いて、投稿するときにタグを突っ込んだりするのが面倒なので Python で原稿に HTML のタグをちょっとだけ突っ込む処理を作って、それを確認するために書いてたら2つ原稿ができたので投稿したのである。

大したコードじゃないので全部出してみる。

import codecs

filename = 'D:/tmp/books.tmp'

f = codecs.open(filename, 'r', 'utf8')
in_p = False
in_quote = False

def start_p():
    global in_p
    if in_p == False:
        in_p = True
        print("<p>")

def end_p():
    global in_p
    if in_p:
        in_p = False
        print("</p>")
        
def start_quote():
    global in_quote
    if in_quote == False:
        in_quote = True
        print("<blockquote>")
    else:
        print("<br />")     

def end_quote():
    global in_quote
    if in_quote:
        in_quote = False
        print("</blockquote>")

for line in f:
    if len(line) < 3:
        end_p()
        end_quote()
        continue

    if line.startswith('>'):
        end_p()
        start_quote()
        print(line[1:].rstrip())
        
    else:
        end_quote()
        start_p()            
        print(line.rstrip())
                
f.close

直指定の /tmp/books.tmp を開いて、「>」が付いているところを blockquote で囲む、そうでないのは空白で区切って p で囲む、その程度の処理しかしてない。

これで気になってるのが、rstrip して print しているところ。 rstrip は空白含めて改行を削除している。そして print で改行を付けて表示する。 だったら何もしないで改行を追加しない出力関数を使えばいいような気がしたのだが、このあたり、Python 慣れしてないのでどんな書き方がエレガントなのかいまいち把握できていない。 まあ行末の空白もカットできているからいいか、程度の感じで書いている。

JUGEMテーマ:python

| Python | 12:34 | comments(0) | trackbacks(0)
 1/1PAGES 
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 
<< May 2019 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE