วิทย์ม.ต้น: หัดไพธอน (Functions), รู้จัก Tracker, ดูลูกตุ้มทราย, หัด Scratch (วาด Lissajous Figures)

1. คลาสรุ่นพี่ เรียน Python จากหนังสือฟรีบนเว็บชื่อ Automate the Boring Stuff with Python โดยเขียนโปรแกรมใน Mu-Editor เราคุยกันเรื่อง Functions และหัดเขียนฟังก์ชั่นง่ายๆในชั้นเรียนกัน เช่น:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def add(a,b):
"บวก a และ b เข้าด้วยกัน"
return a+b
def หารลงตัว(a,b):
"เช็คว่า a หารด้วย b ลงตัวหรือไม่"
if a % b == 0:
return True
else:
return False
def number_of_digits(x):
"บอกว่าเลขจำนวนเต็มบวก x มีกี่หลัก"
xstr = str(x)
return len(xstr)
def contain_digit(a,b):
"ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
astr = str(a)
bstr = str(b)
return bstr in astr
def contain_digit_1(a,b):
"ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
return str(b) in str(a)
def contain_1_to_n(a):
"a เป็นจำนวนเต็ม n หลัก, เช็คว่า a มีเลขโดด 1, 2, 3,..., n ครบหรือไม่"
num_digits = number_of_digits(a)
for digit in range(1,num_digits+1):
#print("digit = " + str(digit))
if not contain_digit(a,digit):
return False
return True
def add(a,b): "บวก a และ b เข้าด้วยกัน" return a+b def หารลงตัว(a,b): "เช็คว่า a หารด้วย b ลงตัวหรือไม่" if a % b == 0: return True else: return False def number_of_digits(x): "บอกว่าเลขจำนวนเต็มบวก x มีกี่หลัก" xstr = str(x) return len(xstr) def contain_digit(a,b): "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่" astr = str(a) bstr = str(b) return bstr in astr def contain_digit_1(a,b): "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่" return str(b) in str(a) def contain_1_to_n(a): "a เป็นจำนวนเต็ม n หลัก, เช็คว่า a มีเลขโดด 1, 2, 3,..., n ครบหรือไม่" num_digits = number_of_digits(a) for digit in range(1,num_digits+1): #print("digit = " + str(digit)) if not contain_digit(a,digit): return False return True
def add(a,b):
    "บวก a และ b เข้าด้วยกัน"
    return a+b
    
def หารลงตัว(a,b):
    "เช็คว่า a หารด้วย b ลงตัวหรือไม่"
    if a % b == 0:
        return True
    else:
        return False
    
def number_of_digits(x):
    "บอกว่าเลขจำนวนเต็มบวก x มีกี่หลัก"
    xstr = str(x)
    return len(xstr)
    
def contain_digit(a,b):
    "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
    astr = str(a)
    bstr = str(b)
    return bstr in astr
    
def contain_digit_1(a,b):
    "ดูว่ามีเลขโดด b ในจำนวนเต็มบวก a หรือไม่"
    return str(b) in str(a)
    
def contain_1_to_n(a):
    "a เป็นจำนวนเต็ม n หลัก, เช็คว่า a มีเลขโดด 1, 2, 3,..., n ครบหรือไม่"
    num_digits = number_of_digits(a)
    for digit in range(1,num_digits+1):
        #print("digit = " + str(digit))
        if not contain_digit(a,digit):
            return False
            
    return True

2. การบ้านรุ่นพี่คือไปอ่านบทที่ 4 เรื่อง Lists ในหนังสือ Automate the Boring Stuff with Python และ เขียนฟังก์ชั่นเหล่านี้ให้ทำงานได้ถูกต้อง:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def convert_C_to_F(c):
"แปลงอุณหภูมิ c เซลเซียสเป็นฟาเรนไฮต์"
pass
def convert_F_to_C(f):
"แปลงอุณหภูมิ f ฟาเรนไฮต์เป็นเซลเซียส"
pass
def GCD(a,b):
"หา ห.ร.ม. ของ a และ b"
#Euclid GCD algorithm
pass
def convert_C_to_F(c): "แปลงอุณหภูมิ c เซลเซียสเป็นฟาเรนไฮต์" pass def convert_F_to_C(f): "แปลงอุณหภูมิ f ฟาเรนไฮต์เป็นเซลเซียส" pass def GCD(a,b): "หา ห.ร.ม. ของ a และ b" #Euclid GCD algorithm pass
def convert_C_to_F(c):
    "แปลงอุณหภูมิ c เซลเซียสเป็นฟาเรนไฮต์"
    pass
def convert_F_to_C(f):
    "แปลงอุณหภูมิ f ฟาเรนไฮต์เป็นเซลเซียส"
    pass
    
def GCD(a,b):
    "หา ห.ร.ม. ของ a และ b"
    #Euclid GCD algorithm
    pass

3. คลาสรุ่นน้องได้เห็นว่ามีโปรแกรมชื่อ Tracker (https://physlets.org/tracker/) ที่สามารถใช้วัดการเคลื่อนที่ต่างๆจากวิดีโอได้ เช่นวันนี้เอาคลิปลูกแก้ววิ่งเป็นวงกลมในกาละมังจากการเล่นวันพุธมาดูกัน จะเห็นว่าการเคลื่อนที่ในแนวตั้ง (แกน y) และแนวนอน (แกน x) จะเป็นคลื่น (พวก sine, cosine):

4. ได้ดูลูกตุ้มทรายแกว่ง และรู้จัก Lissajous Figures

5. ดูตัวอย่าง Scratch ว่าวาดรูปพวก Lissajous Figures อย่างไร แล้วดัดแปลงทดลองเอง:

6. เด็กๆดูคลิป Moire Pattern และหาใน Scratch ว่าทำอย่างไร:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.