第9類:檔案與異常處理

TQC+ 程式語言Python 907 詳細資料顯示

題目說明:

請撰寫一程式,要求使用者輸入檔名read.txt,顯示該檔案的行數、單字數(簡單起見,單字以空白隔開即可,忽略其它標點符號)以及字元數(不含空白)。

範例輸入

read.txt

範例輸出

6 line(s)
102 word(s)
614 character(s)
 

檔案下載:
read.txt


程式碼:

f_name = input()
f_line = f_word = f_char = 0

with open(f_name, 'r') as file: # 或用 file = open(f_name, 'r') 也可以,但最後要 close file 。
    for line in file:
        f_line += 1
        f_word += len(line.split())
        f_char += sum([len(c) for c in line.split()])

print('%d line(s)' %f_line)
print('%d word(s)' %f_word)
print('%d character(s)' %f_char)

TQC+ 程式語言Python 第9類:檔案與異常處理





如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝

可以多點幾次喔~~

第一次點讚需使用 Google 或 Facebook 帳號註冊

3 則留言

  • 金來宏

    python_907的read.txt下載後,內容有7行,最後一行是空白,在計算過程中會輸出7 line(s),無法如範例輸出是6 line(s)

    另外您給的範例程式碼中的file是一個IO物件,沒辦法用FOR迴圈讀取,不知是否是因為版本不同?

    我的程式如下:
    #file=input()
    file=’read.txt’
    with open(file,mode=’r’) as f:
    data=f.read()

    f_line=len(data.split(‘\n’))
    w_num=len(data.split())
    ch_num=0
    for i in data.split():
    ch_num+=len(i)
    print(f_line,’line(s)’)
    print(w_num,’word(s)’)
    print(ch_num,’character(s)’)

    • JamesBang

      金同學你好,
      我之前在寫這一題的時候,Python 的版本是 3.6,剛剛用最新版的測試,也是可以執行的,你可以參考一下:
      https://drive.google.com/drive/folders/11xxgNAt7BufyvEHcAEV0S_v74vss8w18?usp=sharing

      你如果是從網站直接複製過去,要改一下單引號的部分,像是 ‘r’,不知道為什麼直接複製到編輯器會變成「‘r’」,還有注意執行的時候是否有「IndentationError: expected an indented block」錯誤,有的話記得 for 的前面要有縮排。

      至於範例的 read.txt,當初測驗平台給我的就是這樣了!你把你程式碼的「f_line=len(data.split(‘\n’))」,加上一個「.strip()」 –> 「data.strip().split(‘\n’)」,這樣就可以顯示六行了。

發表迴響