看板 Python 關於我們 聯絡資訊
先感謝上次大家回答我的問題!! 感謝大家包容我問題都問不清楚... (因為我自己也弄得有點亂~ @@) 不過我相信我這次的問題應該很清楚 而且會是一個非常簡單的問題 (可是我怎麼改都改不出正確的來 囧) 現在問題卡在出現機率上 我現在把上次的程式import之後 >>> import decode >>> x = decode.Letter() >>> x.count_letter() >>> freqs = x.count_letter() >>> for letter in freqs: possible = freqs[letter]/sum(freqs.values()) print letter, ": ", possible 這樣寫的話 跑出來的答案都會變成0 可是我改了好久~ 還是不知道要改成怎樣才能跑出我要的機率(每個字母) 所以只好很厚顏的再跑上來跟大家求救 T^T 感謝大家 (請鞭小力點.....) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 188.74.80.167
buganini:你的那一串for大有問題 請做unit test 11/28 06:36
buganini:letters="abcdefg....wxyz" 就好了 不必用dict用那麼辛苦 11/28 06:37
buganini:for word in word.lower(): 這個就炸了 word蓋掉word.. 11/28 06:41
buganini:應該是下一層直接用word.lower().format(): 11/28 06:41
buganini:最裡面的else:似乎沒有存在的意義? 11/28 06:42
buganini:然後你檔案open了兩次 一次沒有close 11/28 06:42
buganini:你可以在迴圈最裡面把字元印出來 確定每個字都有跑到 11/28 06:43
buganini: 我好像沒有看到decode.Letter()的定義啊@@" 11/28 06:45
buganini:啊 我腦殘了 那是class自己.. 11/28 06:46
buganini:顯然是該睡了... 11/28 06:46
buganini:.split()那層應該也可以不要了 裡面的if count.has_key 11/28 06:52
buganini:也是會處理掉spaces 11/28 06:52
buganini:for c in line: 11/28 06:53
buganini:錯了= = for c in line.lower().format(): 11/28 06:53
buganini: try: count[c]+=1 11/28 06:54
buganini: except: pass 11/28 06:54
buganini:你這裡沒有需要tokenize 就直接取字元就好啦 11/28 06:55