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)
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’)」,這樣就可以顯示六行了。