Category Archives: programming

วิทย์ม.ต้น: หัดใช้ Pillow ใน Python เพื่อจัดการภาพ

วันศุกร์ที่ผ่านมาผมแนะนำให้เด็กๆรู้จัก Pillow ซึ่งมีความสามารถในการจัดการรูปภาพและใช้ได้ง่ายๆจาก Python ถ้าติดตั้ง Anaconda Python แบบที่เด็กๆติดตั้งก็จะสามารถเรียกใช้ได้เลย ไม่อย่างนั้นต้องไปโหลดที่ https://python-pillow.org

เด็กๆหัดใช้ Pillow ตามหนังสือ Automate the Boring Stuff with Python บทที่ 17 หัดเปิดภาพ และพิมพ์คำสั่งต่างๆตามหนังสือ

ผมใช้ Pillow ทำโปรแกรมตัวอย่างทำภาพอนิเมชั่น อย่างที่เด็กๆได้เล่นและหัดอธิบายการทำงานไปเมื่อวันพุธ โดยโปรแกรมจะจัดเรียงส่วนต่างๆของภาพ 6 ภาพมาต่อกันเป็นภาพเคลื่อนไหวให้ถูกต้อง

หน้าตาโปรแกรมส่วนจัดขนาดให้เหมาะสมเป็นอย่างนี้ครับ:

ส่วนที่เอาภาพหลายๆภาพมาหั่นเป็นชิ้นๆแล้วต่อกันให้ถูกต้องเหมาะที่เป็นอนิเมชั่นหน้าตาแบบนี้ครับ:

ตัวอย่างการเรียกใช้ให้จัดการภาพ 6 ภาพ (1.JPG, 2.JPG, 3.JPG, 4.JPG, 5.JPG, 6.JPG) ให้มารวมกันเป็นภาพเดียว (result3.JPG) ทำแบบนี้ครับ:

สามารถโหลด Jupyter notebook ที่มีโปรแกรมเหล่านี้ได้ที่นี่ครับ

วิทย์ม.ต้น: รู้จัก Dictionary ใน Python, รู้จักใช้ pandas ดูดตารางข้อมูลบนเว็บ

วันนี้เด็กๆมัธยมต้นเรียนรู้เรื่อง dictionary ซื่งใช้เก็บข้อมูลแบบเป็น key/value และเราสามารถใช้ key ไปหา value ได้ เด็กๆเข้าไปอ่านและทดลองเขียนโค้ดที่ https://snakify.org/en/lessons/dictionaries_dicts/

จากนั้นเด็กๆก็ได้เห็นตัวอย่างการใช้ pandas ซึ่งเป็นเครื่องมือจัดการข้อมูลต่างๆได้ง่ายๆใน Python โดยวันนี้เด็กๆได้รู้จักใช้ pandas ดูดข้อมูลที่เป็นตารางบนเว็บต่างๆมาใช้งาน ยกตัวอย่างเช่นถ้าจะหาเมืองหลวงของประเทศต่างๆในโลกก็สามารถไปดึงข้อมูลมาจากวิกิพีเดียหน้านี้:

จากหน้า https://en.wikipedia.org/wiki/List_of_national_capitals

จะเห็นว่ามีตารางเมืองหลวงและประเทศต่างๆอยู่ เราสามารถเรียกใช้ pandas เอาข้อมูลในตารางมาแบบนี้

ตัวแปร tables จะเป็นลิสต์ที่เก็บข้อมูลตารางทั้งหลายในหน้า https://en.wikipedia.org/wiki/List_of_national_capitals ที่เราดูดมา เราสามารถดูว่าได้มากี่ตารางและดูเนื้อหาของตารางแต่ละอันด้วยคำสั่งพวก len(tables) และดู tables[0], tables[1], … เพื่อเลือกตารางที่เราต้องการ ในกรณีนี้ตารางรายชื่อเมืองหลวงอยู่ที่ tables[1] เราสามารถเรียกใช้ข้อมูลหรือบันทึกเก็บเป็นไฟล์ไว้ที่เครื่องเราก็ได้ เช่นถ้าเราต้องการบันทึกเป็นไฟล์ของ Excel เราก็สามารถใช้คำสั่ง to_excel( ) แบบนี้ก็ได้:

เราจะได้ไฟล์ capitals.xls ที่มีข้อมูลเมืองหลวงไว้ใช้ได้ เปิดขึ้นมาหน้าตาแบบนี้ครับ:


ผมแนะนำให้เด็กๆไปเรียนรู้เกี่ยวกับ pandas เพิ่มเติมที่สองลิงก์นี้ครับ:

Quick Tip: The easiest way to grab data out of a web page in Python: https://medium.com/…/quick-tip-the-easiest-way-to-grab-data…

Easier data analysis in Python with pandas (video series): https://www.dataschool.io/easier-data-analysis-with-pandas/

วิทย์ม.ต้น: หัดจัดเรียงข้อมูล (sorting) ด้วย Python, หาคำที่มีสระ aeiou ครบ, หา Anagrams

วันนี้เด็กๆม.ต้นหัดใช้คำสั่ง sorted(…), sorted(…, reverse = True), sorted(…, key = …) ใน Python เพื่อจัดเรียงข้อมูลเป็นลำดับต่างๆตามที่ต้องการครับ

มีแบบฝึกหัดให้เด็กๆพยายามแก้ปัญหาครับ มีให้หาคำภาษาอังกฤษที่มีสระครบห้าตัว a, e, i, o, u

มีแบบฝึกหัดให้หาคำภาษาอังกฤษที่มีสระครบห้าตัวและเรียงกันด้วย

และมีแบบฝึกหัดให้หา anagrams หรือคำที่มีตัวสะกดเป็นอักษรชุดเดียวกันเช่น bat กับ tab หรือ colonialist กับ oscillation

ท่านสามารถกดดู notebook นี้ได้ที่ http://nbviewer.jupyter.org/urls/witpoko.com/wp-content/uploads/2018/12/จัดเรียงข้อมูล_sorting.ipynb

หรือดาวน์โหลดไปเล่นเองได้จาก https://witpoko.com/wp-content/uploads/2018/12/จัดเรียงข้อมูล_sorting.ipynb (ถ้ากดแล้วไม่โหลดให้กดเมาส์ขวา Save As… หรือ Download linked file… นะครับ) ถ้าจะเล่นเองต้องมีไฟล์คำศัพท์ภาษาอังกฤษ เช่นถ้ามี macOS ไฟล์ก็จะอยู่ที่ /usr/share/dict/words ถ้าไม่มีก็สามารถไปหาได้ที่ https://github.com/dwyl/english-words/  หรือ http://wordlist.aspell.net/12dicts-readme/ เป็นต้นครับ