1. มีเฉลยการบ้านที่รุ่นพี่เอาไปทำสัปดาห์ที่แล้วครับ
โจทย์ 1: เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยของตัวเลขที่รับเข้าไป (ใช้ while และ list)
เฉลยแบบที่ 1: คำนวณค่าเฉลี่ยโดยบวกเอง และยังไม่มีการจัดการข้อยกเว้นต่างๆที่ทำให้โปรแกรมพังได้ (ยังไม่มี error handling)
#เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยของตัวเลขที่รับเข้าไป (ใช้ while และ list) #พังได้หลายแบบมาก เช่นถ้าสิ่งที่พิมพ์เข้าไปไม่ใช่ตัวเลขและไม่ใช่คำว่า END #เราจะเรียนรู้เรื่อง exception handling ต่อไป numbers = [] x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") while x != "END": numbers.append(float(x)) x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") print("ตัวเลขคือ ",numbers) sum = 0 for x in numbers: sum = sum + x average = sum / len(numbers) print ("ค่าเฉลี่ยคือ", average)
เฉลยแบบที่ 2: คำนวณค่าเฉลี่ยโดยใช้ฟังก์ชั่น sum() ในไพธอน และยังไม่มีการจัดการข้อยกเว้นต่างๆที่ทำให้โปรแกรมพังได้ (ยังไม่มี error handling)
#เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยของตัวเลขที่รับเข้าไป (ใช้ while และ list) #พังได้หลายแบบมาก เช่นถ้าสิ่งที่พิมพ์เข้าไปไม่ใช่ตัวเลขและไม่ใช่คำว่า END #เราจะเรียนรู้เรื่อง exception handling ต่อไป #ใช้ฟังก์ชั่น sum() ในไพธอน numbers = [] x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") while x != "END": numbers.append(float(x)) x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") average = sum(numbers) / len(numbers) print ("ตัวเลขคือ ", numbers) print ("ค่าเฉลี่ยคือ", average)
โจทย์ 2: เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของตัวเลขที่รับเข้าไป (ใช้ while และ list)
เฉลยแบบที่ 1: ใช้ฟังก์ชั่น sum() ในไพธอน คำนวณค่าเบี่ยงเบนมาตรฐานเอง, ไม่มี error handling
#เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ # #ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของตัวเลขที่รับเข้าไป (ใช้ while และ list) #พังได้หลายแบบมาก เช่นถ้าสิ่งที่พิมพ์เข้าไปไม่ใช่ตัวเลขและไม่ใช่คำว่า END #เราจะเรียนรู้เรื่อง exception handling ต่อไป import math numbers = [] x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") while x != "END": numbers.append(float(x)) x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") average = sum(numbers) / len(numbers) sum_sq = 0 for x in numbers: sum_sq = sum_sq + (x-average)**2 SD = math.sqrt(sum_sq / (len(numbers)-1)) print("ตัวเลขคือ", numbers) print("ค่าเฉลี่ยคือ", average) print("ค่าเบี่ยงเบนมาตรฐานคือ ",SD)
เฉลยแบบที่ 2: ใช้ฟังก์ชั่น mean() และ std() ใน numpy, ไม่มี error handling
#เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ # #ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของตัวเลขที่รับเข้าไป (ใช้ while และ list) #พังได้หลายแบบมาก เช่นถ้าสิ่งที่พิมพ์เข้าไปไม่ใช่ตัวเลขและไม่ใช่คำว่า END #เราจะเรียนรู้เรื่อง exception handling ต่อไป #ใช้ฟังก์ชั่น mean(),std() ใน numpy import numpy as np numbers = [] x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") while x != "END": numbers.append(float(x)) x = input("ใส่ตัวเลขเข้ามา พิมพ์ END เพื่อหยุด: ") average = np.mean(numbers) SD = np.std(numbers, ddof=1) print("ตัวเลขคือ", numbers) print("ค่าเฉลี่ยคือ", average) print("ค่าเบี่ยงเบนมาตรฐานคือ ",SD)
2. โจทย์รุ่นพี่วันนี้คือเขียนโปรแกรมไพธอนเพื่อแก้ปัญหาเหล่านี้ ข้อที่ทำไม่เสร็จไปทำต่อเป็นการบ้าน:
-เขียนโปรแกรมรับค่าตัวเลขไปเรื่อยๆ ถ้าจะหยุดให้ใส่คำว่า END แล้วโปรแกรมจะคำนวณค่ามากที่สุด น้อยที่สุด (ใช้ while และ list)
-เขียนโปรแกรมรับจำนวนตัวเลขที่จะป้อน แล้วรับตัวเลขไปเรื่อยๆเท่ากับจำนวนครั้งนั้น แล้วโปรแกรมจะคำนวณค่ามากที่สุด น้อยที่สุด (ใช้ for และ list)
-เขียนโปรแกรมรับจำนวนตัวเลขที่จะป้อน แล้วรับตัวเลขไปเรื่อยๆเท่ากับจำนวนนั้น แล้วโปรแกรมจะเรียงลำดับตัวเลขเหล่านั้นจากมากไปน้อย (ใช้ for และ list)
-เขียนโปรแกรมรับจำนวนตัวเลขที่จะป้อน แล้วรับตัวเลขไปเรื่อยๆเท่ากับจำนวนนั้น แล้วโปรแกรมจะเรียงลำดับตัวเลขเหล่านั้นจากน้อยไปมาก (ใช้ for และ list)
3. รุ่นน้องดูคลิปน่าสนใจต่างๆดังนี้:
กาวต่อท่อ PVC หมุนในน้ำ:
จรวดน้ำแข็งแห้ง (อันตรายบ้างถ้าหลบไม่ทัน):
ระเบิดไนโตรเจนเหลว (อันตราย):
เทไนโตรเจนเหลวบนมือแล้วเกิดอะไรขึ้น:
เดินบนไฟได้อย่างไร:
และการทดลอง(ที่อันตรายที่สุดถ้าพลาด) ดูว่าเอามือของเราไปจุ่มในตะกั่วเหลวร้อนๆได้หรือไม่ ถ้าได้ทำอย่างไร
ปรากฏว่าทำได้ครับถ้าตะกั่วเหลวนั้นร้อนมากๆ (ตะกั่วเริ่มเป็นของเหลวที่ประมาณ 330 องศาเซลเซียส ในการทดลองเขาต้มตะกั่วจนร้อนประมาณ 450 องศาเซลเซียส) แล้วเอามือจุ่มน้ำให้เปียก แล้วจุ่มลงไปในตะกั่วแป๊บเดียวแล้วดึงออก (ถ้าตะกั่วไม่ร้อนมากพอ เวลาเอามือไปจุ่ม ตะกั่วจะเย็นลงพอเพียงที่จะเป็นของแข็งแล้วติดนิ้วขึ้นมาทำให้เป็นอันตราย)
สาเหตุที่สามารถจุ่มนิ้วเข้าไปในตะกั่วเหลวร้อนมากๆแล้วไม่เป็นอันตรายก็เพราะน้ำที่ติดนิ้วอยู่จะโดนความร้อนจากตะกั่วจนกลายเป็นไอน้ำ เจ้าไอน้ำจะเป็นตัวกั้น เป็นฉนวนความร้อนป้องกันไม่ให้ความร้อนจากตะกั่วทำอันตรายนิ้วได้ แต่ถ้าแช่ไว้นานๆน้ำก็จะระเหยเป็นไอหมดและนิ้วก็จะไหม้ได้
ปรากฏการณ์นี้เป็นเรื่องเดียวกับเวลาเราหยดน้ำไปบนกระทะร้อนๆแล้วหยดน้ำลอยอยู่บนกระทะได้นานๆ เราจะสังเกตได้ว่าเวลากระทะร้อนแต่ยังไม่ร้อนมากพอ เมื่อเราหยดน้ำลงไปน้ำจะฟู่ๆแล้วระเหยหายไปอย่างรวดเร็ว นี่เป็นเพราะความร้อนจากกระทะทำให้หยดน้ำส่วนที่ติดกับกระทะร้อนกลายเป็นไอ แต่เมื่อกระทะร้อนขึ้นมากๆ ไอน้ำที่เกิดขึ้นจะเกิดขึ้นเร็วพอและมากพอที่จะกลายเป็นชั้นไอน้ำรองรับหยดน้ำให้ลอยอยู่เหนือกระทะนานๆเนื่องจากชั้นไอน้ำนำความร้อนได้ช้ากว่าเวลาหยดน้ำติดกับกระทะตรงๆ ปรากฏการณ์นี้เรียกว่า “ปรากฏการณ์ลีเดนฟรอสท์” (Leidenfrost Effect)
4. รุ่นน้องหัดใช้ Tracker ต่อ โดยทำตามวิธีในคลิปนี้ คราวนี้หัดใช้ Auto Tracker ติดตามภาพวัตถุที่สนใจครับ:
เด็กๆสามารถโหลดไฟล์วิดีโอการทดลองต่างๆไปหัดใช้กับ Tracker ได้จากลิงก์นี้ครับ