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

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
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 
<< August 2018 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE