Python(簡單圖形和檔案處理)程式設計

Charzueus發表於2019-07-30

Python確實是一門很簡潔而且功能有強大的語言,我覺得開始學習很容易理解,說到熟練和精通還是不容易的,還需不斷學習。

從最基礎的語法學習,有些部分各種語言是相同的,讓人很好理解。程式設計也是從最簡單語法開始的,之後深入到資料結構和演算法,程式語言就此大同小異。

早上翻到書裡面的一道程式設計題目,感覺很有興趣,於是我就開始琢磨怎樣解題,算是自己練習一下。

題目如下:

編寫一個程式來繪製學生考試成績的水平柱狀圖。你的程式要求從檔案輸入。檔案第一行包含檔案中學生數量的計數,後續每行包含學生的名字,後跟一個0~100範圍內的分數。你的程式應為每個學生繪製一個水平柱型,其中柱形長度表示學生的分數。柱形應該對齊左邊緣排列。(提示:使用學生的人數來確定視窗的大小和座標。)

下面是我的解題過程:

首先,題目有幾個要求實現:(1)利用檔案輸入資料 (2)利用分數繪製柱形 (2)把檔案資料呈現為直觀圖

幾個知識點結合的一道題目,我覺得值得練習一下

infile = open('read_write.txt','r') #開啟檔案,屬性是“讀”

first = infile.readline() #讀取檔案第一行,學生數量
sum = int(first) #得到資料是‘str’,需要轉化為‘int’

from graphics import * #匯入模組graphics
win=GraphWin("學生考試成績水平柱狀圖",400,400) #新建一個400*400畫素的視窗

t = 100 # 繪製圖形時用到一個座標變數
for i in range(sum):
    line = infile.readline() #讀取檔案中一行資料
    name,score = line.split() #將一行資料分割為兩個資料,name和score
    score = int (score)

    Text(Point(60, (2 * t + 20) / 2), name).draw(win) #圖形中的Text方法,把name列印到視窗
    Rectangle(Point(100, t), Point(3 * score,t+20)).draw(win) #根據每個學生分數繪製一個水平柱型(確定座標,柱形長度)
    Text(Point(3 * score+20, (2 * t+20)/2), str(score)+"").draw(win) #把score列印到柱形後面,直觀看到分數對應的柱形長度

    t = t+20 #座標下移,準備繪製下一行

infile.close() #關閉檔案

 

題目不是很難,我的方法很直接,用到的語法也很簡單,從最基礎練習,這些知識有實際的運用會更加深刻地牢記和理解,python的學習很多,涉及到的知識豐富廣泛,需要不斷學習。請大家多多指教!

 

相關文章