ตัวเลขใน Python: จำนวนเต็ม ทศนิยม และคณิตศาสตร์ที่ใช้จริง
บทเรียนนี้แปลจากต้นฉบับภาษาอังกฤษRead in EnglishLeer en españolЧитать на русскомLer em portuguêsแจ้งข้อผิดพลาดในการแปล
คุณกำลังหารค่าอาหารกับเพื่อนอีกสามคน ยอดรวมคือ $85 แต่ละคนต้องจ่ายเท่าไร คุณหยิบโทรศัพท์ขึ้นมากดเครื่องคิดเลข แต่คนที่เขียน Python เป็นแค่พิมพ์ 85 / 4 ก็ได้คำตอบทันที
คณิตศาสตร์คือแกนหลักของการเขียนโปรแกรม เกมใช้คณิตศาสตร์คำนวณฟิสิกส์ แอปใช้คำนวณราคา งานวิทยาศาสตร์ข้อมูลก็ทำงานบนคณิตศาสตร์ ข่าวดีคือ Python ทำให้การคำนวณเหมือนใช้เครื่องคิดเลขที่เก่งเป็นพิเศษ
ในบทเรียนนี้ คุณจะได้เรียนรู้ว่า Python จัดการกับตัวเลขอย่างไร มีตัวดำเนินการ (operator) อะไรให้ใช้บ้าง และจะหลีกเลี่ยงข้อผิดพลาดที่มือใหม่มักเจอได้อย่างไร เมื่อจบบทเรียน คุณจะคำนวณโจทย์จากชีวิตจริงได้อย่างมั่นใจ
จำนวนเต็มและทศนิยมคืออะไร
Python มีตัวเลขหลัก ๆ อยู่สองชนิด จำนวนเต็ม (int) คือตัวเลขที่ไม่มีจุดทศนิยม ส่วน ทศนิยม (float) คือตัวเลขที่มีจุดทศนิยม
ลองนึกถึงเงิน "5 ดอลลาร์" เป็นจำนวนเต็ม "5.99 ดอลลาร์" เป็นทศนิยม จุดทศนิยมคือสิ่งที่ทำให้ต่างกัน
<class 'int'> <class 'float'> <class 'int'> <class 'float'>
ควรใช้แบบไหนเมื่อไร ใช้ จำนวนเต็ม กับสิ่งที่นับ เช่น จำนวนคน จำนวนสิ่งของ คะแนน จำนวนชีวิตในเกม และใช้ ทศนิยม กับสิ่งที่วัด เช่น น้ำหนัก อุณหภูมิ เปอร์เซ็นต์ และเงิน
การคำนวณทางคณิตศาสตร์ใน Python
Python รองรับการคำนวณพื้นฐานทั้งหมดที่คุณรู้จักอยู่แล้ว สัญลักษณ์ที่ใช้แทบจะเหมือนกับที่เขียนบนกระดาษ
13 7 30 3.3333333333333335
การบวก การลบ และการคูณทำงานตรงตามที่คาดไว้ แต่การหารมีเรื่องให้แปลกใจอยู่ข้อหนึ่ง คือ ได้ผลเป็นทศนิยมเสมอ แม้ผลลัพธ์จะเป็นจำนวนเต็มก็ตาม
5.0 <class 'float'> 10.0 2.0
คุณใช้ตัวแปรในการคำนวณได้เหมือนกับตัวเลขธรรมดา ตรงนี้เองที่เริ่มมีประโยชน์จริง
Subtotal: $50.0 Tax: $4.0 Total: $54.0
การหารเอาจำนวนเต็ม (//) และมอดุโล (%) คืออะไร
Python มีตัวดำเนินการพิเศษสองตัวที่มาคู่กันเหมือนปาท่องโก๋ คือ การหารเอาจำนวนเต็ม (integer division, //) และ มอดุโล (modulo, %) ทั้งสองตัวตอบคำถามคนละข้อจากโจทย์การหารข้อเดียวกัน
สมมติว่าคุณมีคุกกี้ 17 ชิ้นและเพื่อน 5 คน 17 // 5 บอกว่าเพื่อนแต่ละคนได้คุกกี้ 3 ชิ้น ส่วน 17 % 5 บอกว่ามีคุกกี้เหลือ 2 ชิ้น
การหารเอาจำนวนเต็ม (//) ทำงานอย่างไร
การหารเอาจำนวนเต็ม (//) จะหารแล้วปัด ลง เป็นจำนวนเต็มที่ใกล้ที่สุด สำหรับจำนวนบวก หมายความว่าส่วนทศนิยมจะถูกตัดทิ้งไป
3.4 3 3.3333333333333335 3 3.5 3 -4
ตัวดำเนินการมอดุโล (%) ทำงานอย่างไร
ตัวดำเนินการมอดุโล (%) ให้ เศษ ที่เหลือจากการหาร มีประโยชน์มากและได้ใช้บ่อยกว่าที่คิด
2 1 0 1 42 is even
การใช้มอดุโลที่พบบ่อยที่สุดคือการตรวจว่าตัวเลขหารลงตัวหรือไม่ ถ้า x % y == 0 แปลว่า x หารด้วย y ลงตัว นี่คือวิธีตรวจเลขคู่หรือเลขคี่ ปีอธิกสุรทิน และอีกหลายอย่าง
การยกกำลังใน Python
Python ใช้ ** สำหรับการยกกำลัง (exponentiation) ภาษาอย่าง C และ Java ใช้ฟังก์ชันในการยกกำลัง แต่ Python ทำให้เป็นตัวดำเนินการ เรียบง่ายและอ่านง่าย
8 25 1000000 3.0 3.0
มีเคล็ดลับเล็ก ๆ คือ การยกกำลังตัวเลขด้วย 0.5 จะได้รากที่สองของตัวเลขนั้น และ ** (1/3) จะได้รากที่สาม ไม่ต้องใช้ฟังก์ชันพิเศษสำหรับการหารากพื้นฐาน
$1000 at 5.0% for 10 years = $1628.89
ลำดับการคำนวณใน Python เป็นอย่างไร
Python ใช้ลำดับการคำนวณแบบเดียวกับที่คุณเรียนในวิชาคณิตศาสตร์ ในภาษาอังกฤษจำกันด้วยคำย่อ PEMDAS: วงเล็บ (Parentheses) เลขยกกำลัง (Exponents) คูณ/หาร (Multiplication/Division) และบวก/ลบ (Addition/Subtraction)
14 2 13.0 20 512 8.0
ลำดับความสำคัญทั้งหมด จากสูงสุดไปต่ำสุด:
() - วงเล็บ (ทำก่อนเสมอ)** - การยกกำลัง-x - การทำให้เป็นค่าลบ คือเครื่องหมายลบที่อยู่หน้าค่า (ดังนั้น -2 ** 2 ได้ -4)*, /, //, % - การคูณ การหาร การหารเอาจำนวนเต็ม และมอดุโล+, - - การบวกและการลบresult = base + rate * hours - discount / 2
print(result)result = base + (rate * hours) - (discount / 2)
print(result)Python มีฟังก์ชันคณิตศาสตร์ในตัวอะไรบ้าง
Python มีฟังก์ชันในตัว (built-in) หลายตัวสำหรับงานคำนวณทั่วไป ไม่ต้อง import อะไร ใช้ได้ทุกที่
วิธีใช้ abs(), round(), min() และ max()
10 10 3.7 4 3 3.14 1200
1 -20 8 -5 Score 150 clamped to 100
การแปลงระหว่างจำนวนเต็มกับทศนิยม
บางครั้งคุณต้องสลับชนิดของตัวเลข ใช้ int() เพื่อแปลงทศนิยมเป็นจำนวนเต็ม และใช้ float() เพื่อแปลงจำนวนเต็มเป็นทศนิยม
3 3 -2 42.0 -7.0 25 3.14
ในบางสถานการณ์ Python ยัง แปลงชนิดให้อัตโนมัติ ด้วย เมื่อคุณใช้จำนวนเต็มกับทศนิยมในการคำนวณเดียวกัน Python จะแปลงจำนวนเต็มเป็นทศนิยมให้เอง
7.0 <class 'float'> 15.0 6.5 <class 'float'>
ข้อผิดพลาดเรื่องตัวเลขที่พบบ่อยใน Python มีอะไรบ้าง
มาดูข้อผิดพลาดที่มือใหม่หัด Python มักเจอกัน ถ้ารู้ไว้ล่วงหน้า จะประหยัดเวลาดีบักได้หลายชั่วโมง
ข้อผิดพลาดที่ 1: คาดว่า / จะได้จำนวนเต็ม
total_items = 10
people = 2
each = total_items / people
print(f"Each gets {each} items") # "Each gets 5.0 items"total_items = 10
people = 2
each = total_items // people
print(f"Each gets {each} items") # "Each gets 5 items"ข้อผิดพลาดที่ 2: สับสนระหว่าง / กับ //
3.5 3 3.75 3
ข้อผิดพลาดที่ 3: ลืมใส่วงเล็บในสูตร
# Converting Fahrenheit to Celsius
fahrenheit = 212
celsius = fahrenheit - 32 * 5 / 9
print(celsius) # 194.22... WRONG!# Converting Fahrenheit to Celsius
fahrenheit = 212
celsius = (fahrenheit - 32) * 5 / 9
print(celsius) # 100.0 CORRECT!แบบฝึกหัด
ถึงเวลาใช้ทักษะเรื่องตัวเลขแล้ว แบบฝึกหัดเหล่านี้ใช้สถานการณ์จากชีวิตจริง จะได้เห็นว่าการคำนวณใน Python ช่วยแก้ปัญหาในชีวิตประจำวันได้อย่างไร
ลองทำแต่ละข้อด้วยตัวเองก่อนดูคำใบ้ การทำผิดเป็นส่วนหนึ่งของการเรียนรู้
คุณกำลังซื้อของในร้าน คำนวณราคารวมแล้วแสดงผลออกมา
แสดงยอดรวมในรูปแบบนี้ให้ตรงทุกตัวอักษร:
Total: $16.0ใช้ตัวดำเนินการมอดุโล (%) ตรวจว่าตัวเลขเป็นเลขคู่หรือเลขคี่
มีตัวแปร number ที่มีค่า 37 ให้มาแล้ว แสดงผลในรูปแบบนี้ให้ตรงทุกตัวอักษร:
37 is oddถ้าตัวเลขเป็นเลขคู่ (เช่น 42) ผลลัพธ์จะเป็น:
42 is evenโค้ดนี้ควรแบ่งพิซซ่า 10 ถาดให้ 3 กลุ่มเท่า ๆ กัน แล้วบอกว่าเหลือกี่ถาด แต่กลับใช้ตัวดำเนินการหารผิดตัว
แก้โค้ดให้ได้ผลลัพธ์ดังนี้:
Each group gets 3 pizzas
Leftover pizzas: 1แปลงอุณหภูมิจากฟาเรนไฮต์เป็นเซลเซียสด้วยสูตรนี้:
**เซลเซียส = (ฟาเรนไฮต์ - 32) * 5 / 9**
มีตัวแปร fahrenheit ที่มีค่า 72 ให้มาแล้ว คำนวณค่าเซลเซียส ปัดเป็นทศนิยม 1 ตำแหน่ง แล้วแสดงผล:
72F = 22.2Cทายว่าแต่ละบรรทัดจะแสดงผลอะไรโดยไม่รันโค้ด เขียนคำตอบที่ทายไว้เป็นคอมเมนต์ แล้วรันโค้ดเพื่อตรวจ
คำนวณดอกเบี้ยทบต้นด้วยสูตรนี้:
**A = P * (1 + r) t
โดยที่:
คำนวณจำนวนเงินสุดท้ายและดอกเบี้ยที่ได้รับ แล้วแสดงผล:
Final amount: $1628.89
Interest earned: $628.89ปัดทั้งสองค่าเป็นทศนิยม 2 ตำแหน่ง
สรุป: ตัวเลขและคณิตศาสตร์ใน Python
ตารางสรุปตัวดำเนินการและฟังก์ชันทุกตัวในบทเรียนนี้:
| ตัวดำเนินการ | ชื่อ | ตัวอย่าง | ผลลัพธ์ |
|---|---|---|---|
+ | การบวก | 5 + 3 | 8 |
- | การลบ | 5 - 3 | 2 |
* | การคูณ | 5 * 3 | 15 |
/ | การหาร | 5 / 3 | 1.666... |
// | การหารเอาจำนวนเต็ม | 5 // 3 | 1 |
% | มอดุโล (เศษ) | 5 % 3 | 2 |
** | การยกกำลัง | 5 ** 3 | 125 |
ฟังก์ชันในตัว:
| ฟังก์ชัน | หน้าที่ | ตัวอย่าง |
|---|---|---|
abs(x) | ค่าสัมบูรณ์ | abs(-5) → 5 |
round(x, n) | ปัดเป็นทศนิยม n ตำแหน่ง | round(3.14, 1) → 3.1 |
min(a, b, ...) | ค่าที่น้อยที่สุด | min(3, 1, 4) → 1 |
max(a, b, ...) | ค่าที่มากที่สุด | max(3, 1, 4) → 4 |
int(x) | แปลงเป็นจำนวนเต็ม | int(3.9) → 3 |
float(x) | แปลงเป็นทศนิยม | float(5) → 5.0 |
เรียนอะไรต่อ
ในบทเรียนถัดไป สตริงใน Python คุณจะได้เรียนรู้วิธีทำงานกับข้อความใน Python ทั้งการตัดช่วง (slicing) เมธอดของสตริง และการรวมสตริงกับตัวเลขให้เป็นผลลัพธ์ที่อ่านง่าย