Re: [問題] 有關for迴圈
像推文說的一樣
.read() 只會是將整個檔案的內容取出,因此只會執行一次
for i in ftr:
for i in ftr.read().split('\n')
這兩種方式才是依行執行
另外這個問題用regular expression 做很快
import re
r1 = re.complie('(國[^學]+學)')
l = r1.findall(ftr.read())
d = {}
[d.update(k,l.count(k)) for k in l]
大概像這樣
※ 引述《ya790206 (殘雲奪月)》之銘言:
: 標題: [問題] 有關for迴圈
: 時間: Wed Aug 8 22:02:12 2007
:
: 感覺起來這個問題很蠢
: 這是讀取榜單
: 然後計算該校多少人進這間大學的程式
: 不過我遇到一個問題
: 他for迴圈只會執行print string 這行
: 等迴圈執行完後才執行print 'ss'
: 為什麼會這樣呢?
: 我所學告訴我應該print string和print 'ss'
: 執行次數應該一樣
: 以下是程式碼
: --------------------------------------------------------
:
: #coding=big5
: forCount={}
: ftr=open('abcd.txt')
: try:
: for string in[ftr.read()]:
: print string
: print 'ss'
: a=string.index('國')
: b=string.index('學')+3
: string=string[a+1:b-a-1]
: print string+'x'
: if string in forCount:
: forCount[string]+=1
: else:
: forCount.update({string:1})
: except Exception:
: print "ERROR"
: finally:
: ftr.close()
: print forCountfor (key,value) in forCount.items():
: print key+':'+str(value)raw_input()
:
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 59.116.129.56
: ※ 編輯: ya790206 來自: 59.116.129.56 (08/08 22:03)
: 推 subook:我猜 [ftr.read()] 裡只有一個東西,也就是整個檔案內容 08/08 22:29
: → subook:因此 for 也只執行了一次 08/08 22:32
: → subook:你可能是要用 readline 之類的... 08/08 22:32
: → subook:readlines 08/08 22:34
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.110.216.37
※ 編輯: Lucemia 來自: 140.110.216.37 (08/08 23:12)
推
08/08 23:19, , 1F
08/08 23:19, 1F
推
08/09 04:07, , 2F
08/09 04:07, 2F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章