Link Code - https://github.com/poklonas/Python-GPA-cal
what you have done/learned
- ควรกำหนดรูปแบบการเก็บข้อมูลที่จะนำไปใช้ภายหลังได้ง่ายกว่านี้
- การทำให้ สามารถ Print ไทยได้ ถึงแม้จะมีปัญหาเรื่องการสระ และ วรรณยุกต์ อยู่บ้าง
- ฝึกฝน การแยกข้อมูล (ทบทวนการเขียน python)
any problem/solution
- รูปแบบเดิมที่ได้ทำเอาไว้ในงานแรก ไม่เหมาะสมกับการทำ งานนี้ หากไม่ทำการเปลี่ยนรูปแบบ ก็จำเป็นต้องหาทางแก้ไขเพิ่มเติม , รูปแบบไม่เหมาะสมเนื่องจาก ข้อมูลใน บาง column ไม่เป็นข้อมูล ชนิดเดียวกัน ( เช่นรหัสวิชา และ หัวข้อย่อยในแต่ละชั้นปีและเทอม ) และ ยังไม่สามารถใช้ หัว column เพื่อ แทนเรียกแบบไม่กำหนดเลข index column ได้ ( เช่น column.grade จะไม่สามารถทำได้ ต้องกำหนดเป็น column[index ที่ มีเกรด อยู่] แทน ) โดยวิธีการแก้ไขปัญหานี้ คือ จะทำการ แยก ข้อมูลในแต่ละเทอม ออกมาก่อนโดยใช้เงื่อนไข ดัง commit นี้
https://github.com/poklonas/Python-GPA-cal/commit/fca89089bf1a50b2652af9d5d4534aa3d17b7f22
จะได้ข้อมูลมาดังนี้
โดยเป็น array ที่มี หลายมิติ โดยจะมีเงื่อนไขดังนี้
record[ index ] โดย index จะหมายถึง เลขเทอม ที่มี เทอมเป็นเลข ไล่ตั้งแต่ 0 คือ ปี 1 เทอม 1 และ 1 ปี 1 เทอม 2 ไล่ไปเรื่อยๆ และ record[index] นี้จะเก็บ array 3 ตัวคือ record[index][index_2][index_3] index 2 จะหมายถึง ว่าต้องการจะเข้าถึงข้อมูลตัวไหน โดย 0 1 2 จะหมายถึง ชื่อวิชา น้ำหนัก และ เกรด ตามลำดับ โดย ลำดับข้อมูลในแต่ละ index 3 ที่อยู่ในแต่ละ index 2 จะมีความสัมพันกัน กับทุกๆ index 2 อื่นๆ
เช่น หากต้องการ ข้อมูลรายชื่อวิชาของ ปี1 เทอม 1 อันดับแรกก็อ้าง ได้ดังนี้
record[0][0][0] หากต้องการรู้ weight ของ วิชานั้น ก็ record[0][1][0] หากต้องการเกรดก็ record[0][2][0] เป็นต้น
จากขั้นตอนข้างบนนี้เราจะได้ข้อมูล อาเรย์ ที่ประกอบไปด้วยข้อมูลต่างๆของแต่ละวิชาในแต่ละเทอม เอาไว้แล้ว เราจะทำการสร้าง ฟังก์ชั่น เพื่อนำ ข้อมูลนั้นไปแสดงผล และคำนวน ค่า GPA ทั้งสะสม และ ต่อเทอม ได้
- Python ไม่สามารถ อ่านไทยได้ โดยจะขึ้นเตือนว่า
UnicodeDecodeError: 'charmap' codec can't decode byte 0x82 in position 8: character maps to <undefined>
แก้ โดย เพิ่มในส่วน encoding เข้าไป ใน argument ของ open function
with open('db1.csv','r', encoding="utf8") as f:
จะได้ผลลัพธ์ ดังนี้ เวลาอ่านไฟล์และ Print row
- ได้ ข้อมูลมาแล้ว จะทำฟังก์ชั่นรองรับเพื่อนำไปคำนวน GPA ยัง ไง ?
คำตอบคือ ดัง commit นี้
https://github.com/poklonas/Python-GPA-cal/commit/b35336924357b34e7a0c893b5614e2455d047cd6
ก็คือนำไป คำนวนหา ปี และเทอม ในแต่ละช่วงข้อมูล หา GPA GPAX ( gpax = gpa สะสมหลายเทอม) จะได้ผลลัพธ์ ดังนี้
decision
- ไม่กลับไปแก้ไข รูปแบบการเก็บข้อมูลในงานแรก และพยายามหาทางแก้ปัญหาจากการ กำหนดรูปแบบ ในงานแรกไม่ดีแทน
- แยกข้อมูลให้อยู่ในแบบที่ใช้งานได้ง่ายก่อนเริ่มหา GPA
related info/link/reference
การใช้งาน CSV library https://docs.python.org/2/library/csv.html
อ่านไทยใน open https://stackoverflow.com
ไม่มีความคิดเห็น:
แสดงความคิดเห็น