สอน Python เบื้องต้นแบบสุดๆ ตอนที่ 3: จัดการตัวแปรในไพธอน ด้วยสัญลักษณ์ทางคณิตศาสตร์

ส่งต่อความรู้

หลังจากที่ได้ทราบ วิธีสร้างตัวแปรไปแล้ว ต่อไป มาลองใช้สัญลักษณ์ทางคณิตศาสตร์ (Mathematical Operator) จัดการตัวแปรในไพธอน กัน นะครับ
ใน Python นั้น มีสัญลักษณ์ทางคณิตศาสตร์ให้เลือกใช้มากมาย ซึ่งขอจับคู่อธิบายให้เข้าใจง่ายๆดังนี้

  • + บวก  และ – ลบ

  • * คูณ (ไม่ใช้ x)  และ  / หาร (ไม่ใช้ ÷)|

  •  // หารแบบไม่เอาเศษ (floor division) และ %  โมดูโล หรือ หาส่วนที่เหลือจากการหาร (ถ้าไม่เก็ท รอชมตัวอย่างครับ)

  • ** ยกกำลัง ส่วนการ หารูท(root) ก็ใช้อันเดียวกับยกกำลังนั้นหละ เดี๋ยวจะบอกให้ว่าทำอย่างไร

มาดูตัวอย่างจาก Code  บวกและ ลบ กันก่อน

print (5 + 2)
print (5 – 2)

ผลลัพท์ที่ได้

7
3

เราสามารถเก็บค่าไว้ในตรวจแปรก่อนที่จะนำไปคำนวนก็ได้นะ มาลอง คูณ และ หารกัน

x = 5
y = 2print ((x + y) * 2)
print ((x + y) / 2)

ผลลัพท์ที่ได้

14
3.5

ต่อไปจะเป็นตัวที่เราไม่ค่อยได้ใช้ในชีวิตประจำวันคือ // หารไม่เอาเศษ กับ  % โมดูโล

print (17 // 5)
print (17 % 5 )

ผลลัพท์ที่ได้

3
2

จาก code เมื่อเอา 17 หารปกติด้วย 5 จะได้ 3.4 เมื่อเราใช้สัญลักษณ์ // เราจะไม่สนใจทศนิยม จะหยิบมาแค่ตัวหน้าทำให้ได้ค่าเท่ากับ 3
สำหรับ % เมื่อ  17 หาร ด้วย 5 ไม่ลงตัว ซึ่งจำนวนที่ใกล้เคียงที่สุดที่ 5 จะหาร 17 ได้คือ 15 เมื่อเอา 17-15 ก็จะเหลือ 2 ซึ่งการใช้เครื่องหมาย % จะหาค่าส่วนที่เหลือจากการหารให้ลงตัวนั้นเอง
ถ้าเราเขียนเป็นสมการหาค่า % ก็จะได้ดังนี้

ตัวตั้ง – (ตัวหาร * ผลลัพท์จาก //)

ในกรณีนี้คือ 17 – (5 * 3) =  2
ซึ่งมาถึงจุดนี้หลายคนอาจจะสงสัยว่าเจ้า % และ // เอาไปใช้ทำอะไรได้บ้าง โดยมากแล้วจะใช้ช่วยการตรวจสอบค่าต่างๆ เช่น แยกเลขคู่ หรือ เลขคี่ หรือ คำนวนการจับเวลา เป็นต้น

จะสังเกตุว่าการใช้ // ผลที่ออกมาได้จะไม่มีเศษ จึงทำให้ข้อมูลที่ออกมาได้จะเป็น ข้อมูลประเภท int เสมอ

ซึ่งต่างกับการใช้ / ต่อให้ผลหารออกมาลงตัว ข้อมูลที่ได้ก็จะออกมาเป็น float เสมอ

x = 15 // 5
y = 15 / 5print (x)
print (y)print (type(x))
print (type(y))

มาดูผลลัพท์

3
3.0<class ‘int’>
<class ‘float’>

ต่อไปเป็นคู่ของการยกกำลังและ ถอดรูท ในตัวอย่างนี้จะยกกำลัง 9 ด้วย 2 และ ถอดรูท 2 ของ 9

print (9**2)
print (9**(1/2))

ผลที่ได้คือ

81
3.0

บรรทัดแรก 9 ยกกำลัง 2 ก็เท่ากับ 81 อันนี้ตรงตัวง่ายๆครับ
ส่วนบรรทัดที่สองอันนี้อาศัยความรู้ทางคณิตศาสตร์นิดหน่อย  หารูท 2 นั้น จริงๆแล้วก็เท่ากับ ยกกำลังด้วย 1/2 นั่นเอง  ซึ่งหากเราต้องการหารูทที่ 3 ก็สามารถเปลี่ยนเป็น 1/3 ได้ ตามสูตร

ถ้าใครสนใจเรื่องรูทที่ n ไปอ่านต่อได้ที่ Wikipedia

หลังจากได้เรียนรู้การคำนวณแบบต่างๆไปแล้ว มีความลับบางอย่างอยากจะบอกให้ทราบครับ

ลองดู Code นี้

2 * 5 + 3

คิดว่าคำตอบได้เท่าไหร่ครับ บางคนบอกว่าน่าจะเป็น 13  (10 + 3) บางคนว่าน่าจะเป็น 16 (2 * 8)
เราไปถาม Python กัน

13

ที่ออกมาเป็น 13 ก็เพราะว่าการคำนวนนั้นมีลำดับก่อนหลัง โดยมีกฏการเรียงลำดับที่เรียกว่า

“PEMDAS” ซึ่งย่อมาจาก

  • Parentheses (ในวงเล็บ) – ทำเป็นอย่างแรกสุด
  • Exponent (ยกกำลัง)
  • Multiply (คูณ)
  • Division (หาร)
  • Addition (บวก)
  • Subtraction(ลบ) – ทำเป็นอย่างสุดท้าย

ซึ่งนอกจากจะเรียงตาม PEMDAS แล้ว เราต้องเริ่มจากซ้ายไปขวาด้วยนะ

แน่นอนครับว่าถ้าใครไม่ค่อยมีชีวิตข้องแวะกับสมการคณิตศาสตร์ หรือ การเขียนโปรแกรม แรกๆก็จำไม่ได้หรอกครับ (ผมเองก็เช่นกัน) แนะนำว่าให้จำเป็นคู่ครับ เริ่มจาก

วงเล็บ ยกกำลัง | คูณหาร และ บวกลบ

และอีกวิธีหนึ่งที่ช่วยให้จำได้ง่ายขึ้นคือลองเล่นดูเลย ลองพิมพ์สมการต่างๆของเราเอง แล้วดูว่า Python ให้ผลออกมาเหมือนที่เราคาดไว้ไหมอย่างเช่น

3**2*7+8-4/2

มาถอดลำดับกันตาม PEMDAS เริ่มจาก
ขั้นที่ หนึ่ง (ยกกำลัง) 3**2 = 9
ชั้นที่ สอง (คูณ) 9 * 7 = 63
ขั้นที่ สาม (หาร) 4/2 = 2
ชั้นที สี่ (บวก) 63 (จากขั้นสอง) + 8 = 71
ขั้นที่ ห้า (ลบ) 71 -2 (จากขั้นสาม) = 69

เช็คผลกับ Python กัน

69

และอย่าลืมวงเล็บผิด ชีวิตเปลี่ยน ลองเอาโจทย์นี้ไปทำกันเล่นๆครับ

print(( 4/(2 + 3**2) – 5+9 ))
print(( 4/2 + (3**2 – 5+9 )))

Run Code ตามนี้ แล้วค่อยๆคิดตามลำดับแบบตัวอย่างข้างบน ก็จะพบว่าผลลัพท์นั้นต่างกันเพราะอะไรนะ ถ้าใครสงสัย Comment ถามได้เลย

จะเห็นได้ว่าในบทนี้ เราใช้ข้อมูลประเภท int และ float กับ สัญลักษณ์คณิตศาสตร์ ทั้ง แต่รู้หรือไม่ว่าใน Python เราสามารถใช้สัญลักษณ์เหล่านี้กับข้อมูลประเภทตัวอักขระ (str) ได้ด้วยเช่นกัน ติดตามชมตอนที่ 4  ได้เร็วๆนี้ครับ


กด Like กด Share กันได้นะครับ และ ยังสามารถกดติดตาม Facebook ของเราได้ที่นี่ หรือ Follow ใน Twitter เพื่อ ให้ทีมงาน AI Informatics มีกำลังใจผลิตเนื้อหาต่อไปครับ ขอบคุณครับ

  •  
  •  
  •  
  •  
  •  

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *