Tag Archives: ไพธอน

วิทย์ม.ต้น: วาดรูปในไพธอนด้วยเต่า (Turtle)

สัปดาห์นี้เด็กๆหัดใช้ Turtle ในไพธอนกันครับ เราค้นหาในเว็บเพื่อดูคำสั่งต่างและตัวอย่างที่เราเอามาทดลองใช้และแก้ไขกัน เด็กๆพยายามดัดแปลงให้เป็นภาพสวยๆหรือเขียนเป็นชื่อตัวเองกัน

ข้อมูลอ้างอิงว่า Turtle มีคำสั่งอะไรให้ใช้บ้าง

ตัวอย่างวิธีใช้ที่ Tutorial Points

ตัวอย่างวิธีใช้ที่ Simplified Python

คลิปวิธีใช้:

วิทย์ม.ต้น: เขียนโปรแกรมสร้างโจทย์ตัวอักษร

สัปดาห์นี้เด็กๆม.1-3 หัดเขียนโปรแกรมไพธอนเพื่อสร้างโจทย์ตัวอักษร (ต่อเนื่องมาจากสัปดาห์ที่แล้วที่เขียนโปรแกรมไล่แทนค่าตัวอักษรเพื่อแก้โจทย์ทำนองนี้)

(โค้ดต่างๆแบบ Jupyter notebookโหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่นะครับ)

เด็กๆพยายามแทนค่าตัวเลขแต่ละตัวด้วยตัวอักษร บางคนใช้ดิกชันนารี บางคนใช้สตริง วิธีที่ตรงไปตรงมาที่สุดอาจเป็นประมาณนี้สำหรับเด็กๆที่รู้จัก list comprehension แล้ว (ถ้าอยากรู้เรื่องไปดูที่ Comprehending Python’s Comprehensions หรือดูที่ส่วน “การสร้างลิสต์จาก for” ที่หน้านี้ นะครับ)

ถ้าไม่รู้จัก list-comprehension ก็ใช้ for loop ได้ประมาณนี้:

พอแปลงเลขเป็นตัวอักษรได้ ก็ใส่ตัวตั้งสองตัว x, y แล้วให้คอมพิวเตอร์คำนวณค่า x+y, x-y, x*y, x/y แล้วแปลงทั้งหมดเป็นตัวอักษร A-J แทนเลข 0-1 โดยระวังว่าถ้าผลลัพธ์มีตัวเลขที่ไม่มีอยู่ในพวกตัวตั้ง x, y เราจะต้องไม่แทนค่าตัวเลขด้วยตัวอักษร

เพื่อไม่ให้เดาคำตอบได้ง่ายเกินไป เราไม่ควรแทน 0 ด้วย A, 1 ด้วย B, …, 9 ด้วย J เสมอ เราจึงอาจสลับอักษร A-J ให้เป็นลำดับอื่นก่อนแทนค่า เราสามารถทำได้ด้วย random.shuffle( ) แล้วแทนค่าด้วย translate( ) ประมาณนี้:

หน้าตาฟังก์ชั่นสร้างโจทย์ตัวอักษรก็อาจมีหน้าตาประมาณนี้:

หน้าตาโจทย์ที่ได้ก็จะเป็นประมาณนี้:

สำหรับเด็กม. 1 ผมเอาภาพคอมพิวเตอร์ยุคแรกๆเช่น ENIAC ว่าเมื่อก่อนเขาโปรแกรมกันอย่างไร, ภาพเครื่องคำนวณสมัยกรีกโบราณ และภาพคุณ Katherine Johnson ที่เป็นนักคณิตศาสตร์ทำงานให้ NASA ที่เด็กๆรู้จักจากภาพยนต์เรื่อง Hidden Figures มาให้ดูด้วยครับ

คอมพิวเตอร์อิเล็กทรอนิกส์เครื่องแรกๆของโลกชื่อ ENIAC ครับ ใหญ่เต็มห้องเลย
ENIAC in Philadelphia, Pennsylvania. Glen Beck (background) and Betty Snyder (foreground) program the ENIAC in building 328 at the Ballistic Research Laboratory ภาพจาก U.S. Army Photo [Public domain]
เครื่องจักรคำนวณสมัยกรีกโบราณ เรียกว่า Antikythera mechanism เป็นฟันเฟืองต่อกันอยู่ พอหมุนๆแล้วคำนวณตำแหน่งดวงดาว เทศกาลโอลิมปิก สุริยุปราคา ฯลฯ ได้ครับ อายุประมาณ 2,000 ปี
คุณ Katherine Johnson ครับ
Katherine G. Johnson Computational Research Facility ribbon-cutting ceremony in the Reid Conference Center. Honored guests include Katherine G. Johnson and members of her family, Mayor Donnie Tuck, Senator Warner and Governor McAuliffe. Margot Lee Shetterly, author of “Hidden Figures,”

วิทย์ม.ต้น: หัดแก้และสร้างโจทย์ตัวอักษรแทนตัวเลขด้วยไพธอนกัน

วิทย์โปรแกรมมิ่งของม.2-3 เริ่มด้วยเฉลยการบ้านวาดกราฟด้วย PyPlot ที่เด็กๆไปหัดใช้กันมา มีการดูรูปกราฟว่าตัดแกน x แถวๆไหนแล้วใช้ bisection method หาค่า x ที่ละเอียดขึ้น:

มีการสร้างลิสต์ค่า x อย่างระมัดระวังไม่ให้เกิดการหารด้วยศูนย์ขึ้น:

กิจกรรมใหม่วันนี้ได้แรงบันดาลใจจากกระทู้พันทิพเรื่องการบ้านเด็กป.4 https://pantip.com/topic/39141834 ที่ถามว่าถ้า A-H เป็นตัวเลขโดดๆไม่ซ้ำกันและ AFBF + CGHB + DAFG +AEAB = BCDC ให้หาค่าว่า A-H มีค่าอะไรบ้าง เด็กๆ ม.1-3 เลยจะทดลองแก้และสร้างปัญหาตระกูลนี้กันด้วยคอมพิวเตอร์

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

ม.2-3 จะใช้ list comprehension ที่เคยใช้ไปในการบ้าน PyPlot ส่วนม.1 จะใช้ for loop กัน เด็กๆทั้งสองกลุ่มได้เห็นการใช้ len(set(x)) == len(x) ว่าลิสต์ x มีสมาชิกซ้ำกันหรือไม่ (อ่านเกี่ยวกับ set ได้ที่ Sets in Python หรือที่ ภาษา python เบื้องต้น บทที่ ๑๓: เซ็ต)

การบ้านของเด็กๆคือให้ไปหัดสร้างโจทย์ประเภทนี้กันมา สัปดาห์หน้าจะลองดูว่าให้คอมพิวเตอร์สร้างโจทย์ให้ได้อย่างไร

Jupyter notebook ของ ม.2-3 โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่

Jupyter notebook ของ ม.1 โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่

Jupyter notebook ไล่แก้ปัญหา AFBF + CGHB + DAFG +AEAB = BCDC โหลดได้ที่นี่ หรือดูออนไลน์ได้ที่นี่