iT邦幫忙

0

#python 問 成績用檔案讀入

  • 分享至 

  • xImage

這邊請各位幫幫忙,這是我唯一的作業了,以後都不會再用py了,請各位就救我,真的拜託了!

題目:修改程式,讓成績是從檔案讀入。

原本的程式如下:
成績分析系統(基本題,要使用while及串列):
設計一個程式,由使用者連續輸入成績(成績輸入-1 以結束輸入)
結束輸入後,程式立即輸出 100分?人 90分~99分?人 80分~89分?人....0分~9分?人
https://ithelp.ithome.com.tw/upload/images/20221204/20155683fNlcewL4zM.jpg

這是我目前做的,要修改以上的程式,讓成績是由檔案讀入
請幫幫我!

alexvan iT邦新手 5 級 ‧ 2022-12-05 02:56:35 檢舉
請給我們一個幫您做作業又不會害到您的理由。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2022-12-04 19:07:03

原本

while (inputscore!=-1 and inputscore>=0 and inputscore<=100)
   count = count + 1
   inputscore = int(input(f"請輸入學生{count}的成績"))

換成

file1 = open('myfile.txt', 'r')
Lines = file1.readlines()
  
for line in Lines:
    count = count + 1
    inputscore = int(line)

參考資料來源

試試看

看更多先前的回應...收起先前的回應...
re.Zero iT邦研究生 5 級 ‧ 2022-12-04 20:29:03 檢舉

保險起見,如果 open() 不搭配 with 敘述使用的話,最好記得使用:file1.close()關閉檔案存取,避免檔案鎖死等意外。

alexvan iT邦新手 5 級 ‧ 2022-12-05 02:54:01 檢舉

強烈建議open()要搭配with使用:

with open('myfile.txt', 'r') as file1:
    lines = file1.readlines()
    ...

with ... as ...:語法稱為context manager,請多利用。

請問,那lines = open('myfile.txt', 'r').readlines()這種語法,系統不會要求close,就不會有當機的危險了吧?

re.Zero iT邦研究生 5 級 ‧ 2022-12-10 12:11:14 檢舉

@iiuu:
在作業系統中,打開檔案就會占用系統資源(視狀況還可能會鎖定);如果不明確關閉以釋放,可能會產生意外後果。
例如,lines = open('myfile.txt', 'r').readlines():開啟檔案,讀完所有行後將結果 list 指派給 lines
這行敘述執行完,此時的 myfile.txt 是 "被開啟而指標位於檔尾" 的狀態;
沒被要求關閉且 GC (Garbage Collector) 沒有去回收(關閉)的話,myfile.txt 的開啟就一直占用系統資源。
而沒有變數能參照 myfile.txt 時,基本上後續流程就無法動它了(除非想挑戰極限、搞得更麻煩?)。
至於會不會出現檔案系統的異常,就要看作業系統與 Python 的 GC 等機制能否在執行期間閃掉各種可能狀況並回收處理掉,不然就有機會增長見識了~(我倒是不想再增長這類見識了~)
另:

  1. GC 機制與檔案操作的討論可看這邊
  2. 關閉檔案的重要性可參考這篇

感謝大哥!
第二篇寫的很清楚了。

我要發表回答

立即登入回答