ข้ามไปยังเนื้อหาหลัก
Editor

ตัวเลขใน Python: จำนวนเต็ม ทศนิยม และคณิตศาสตร์ที่ใช้จริง

เริ่มต้น20 นาที6 แบบฝึกหัด110 XP

บทเรียนนี้แปลจากต้นฉบับภาษาอังกฤษRead in EnglishLeer en españolЧитать на русскомLer em portuguêsแจ้งข้อผิดพลาดในการแปล

0/6 แบบฝึกหัด

คุณกำลังหารค่าอาหารกับเพื่อนอีกสามคน ยอดรวมคือ $85 แต่ละคนต้องจ่ายเท่าไร คุณหยิบโทรศัพท์ขึ้นมากดเครื่องคิดเลข แต่คนที่เขียน Python เป็นแค่พิมพ์ 85 / 4 ก็ได้คำตอบทันที

คณิตศาสตร์คือแกนหลักของการเขียนโปรแกรม เกมใช้คณิตศาสตร์คำนวณฟิสิกส์ แอปใช้คำนวณราคา งานวิทยาศาสตร์ข้อมูลก็ทำงานบนคณิตศาสตร์ ข่าวดีคือ Python ทำให้การคำนวณเหมือนใช้เครื่องคิดเลขที่เก่งเป็นพิเศษ

ในบทเรียนนี้ คุณจะได้เรียนรู้ว่า Python จัดการกับตัวเลขอย่างไร มีตัวดำเนินการ (operator) อะไรให้ใช้บ้าง และจะหลีกเลี่ยงข้อผิดพลาดที่มือใหม่มักเจอได้อย่างไร เมื่อจบบทเรียน คุณจะคำนวณโจทย์จากชีวิตจริงได้อย่างมั่นใจ

จำนวนเต็มและทศนิยมคืออะไร

Python มีตัวเลขหลัก ๆ อยู่สองชนิด จำนวนเต็ม (int) คือตัวเลขที่ไม่มีจุดทศนิยม ส่วน ทศนิยม (float) คือตัวเลขที่มีจุดทศนิยม

ลองนึกถึงเงิน "5 ดอลลาร์" เป็นจำนวนเต็ม "5.99 ดอลลาร์" เป็นทศนิยม จุดทศนิยมคือสิ่งที่ทำให้ต่างกัน

จำนวนเต็มกับทศนิยม
# Integers - whole numbers
students = 30
lives = 3
year = 2025
negative = -15
# Floats - decimal numbers
price = 9.99
temperature = 98.6
pi = 3.14159
tiny = 0.001
print(type(students)) # <class 'int'>
print(type(price)) # <class 'float'>
print(type(negative)) # <class 'int'>
print(type(temperature)) # <class 'float'>
ผลลัพธ์
<class 'int'>
<class 'float'>
<class 'int'>
<class 'float'>

ควรใช้แบบไหนเมื่อไร ใช้ จำนวนเต็ม กับสิ่งที่นับ เช่น จำนวนคน จำนวนสิ่งของ คะแนน จำนวนชีวิตในเกม และใช้ ทศนิยม กับสิ่งที่วัด เช่น น้ำหนัก อุณหภูมิ เปอร์เซ็นต์ และเงิน


การคำนวณทางคณิตศาสตร์ใน Python

Python รองรับการคำนวณพื้นฐานทั้งหมดที่คุณรู้จักอยู่แล้ว สัญลักษณ์ที่ใช้แทบจะเหมือนกับที่เขียนบนกระดาษ

ตัวดำเนินการพื้นฐานสี่ตัว
# Addition
print(10 + 3) # 13
# Subtraction
print(10 - 3) # 7
# Multiplication
print(10 * 3) # 30
# Division (always returns a float!)
print(10 / 3) # 3.3333333333333335
ผลลัพธ์
13
7
30
3.3333333333333335

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

การหารได้ผลเป็นทศนิยมเสมอ
# Division ALWAYS gives a float
print(10 / 2) # 5.0 - not 5!
print(type(10 / 2)) # <class 'float'>
# Even when both numbers are integers
print(100 / 10) # 10.0
print(8 / 4) # 2.0
ผลลัพธ์
5.0
<class 'float'>
10.0
2.0

คุณใช้ตัวแปรในการคำนวณได้เหมือนกับตัวเลขธรรมดา ตรงนี้เองที่เริ่มมีประโยชน์จริง

คำนวณด้วยตัวแปร
# Real-world example: calculating a total
price = 12.50
quantity = 4
tax_rate = 0.08
subtotal = price * quantity
tax = subtotal * tax_rate
total = subtotal + tax
print(f"Subtotal: ${subtotal}")
print(f"Tax: ${tax}")
print(f"Total: ${total}")
ผลลัพธ์
Subtotal: $50.0
Tax: $4.0
Total: $54.0

การหารเอาจำนวนเต็ม (//) และมอดุโล (%) คืออะไร

Python มีตัวดำเนินการพิเศษสองตัวที่มาคู่กันเหมือนปาท่องโก๋ คือ การหารเอาจำนวนเต็ม (integer division, //) และ มอดุโล (modulo, %) ทั้งสองตัวตอบคำถามคนละข้อจากโจทย์การหารข้อเดียวกัน

สมมติว่าคุณมีคุกกี้ 17 ชิ้นและเพื่อน 5 คน 17 // 5 บอกว่าเพื่อนแต่ละคนได้คุกกี้ 3 ชิ้น ส่วน 17 % 5 บอกว่ามีคุกกี้เหลือ 2 ชิ้น

การหารเอาจำนวนเต็ม (//) ทำงานอย่างไร

การหารเอาจำนวนเต็ม (//) จะหารแล้วปัด ลง เป็นจำนวนเต็มที่ใกล้ที่สุด สำหรับจำนวนบวก หมายความว่าส่วนทศนิยมจะถูกตัดทิ้งไป

การหารเอาจำนวนเต็มด้วย //
# Regular division vs integer division
print(17 / 5) # 3.4 - regular division (float)
print(17 // 5) # 3 - integer division (rounds down)
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(7 / 2) # 3.5
print(7 // 2) # 3
# Works with negative numbers too (rounds toward negative infinity)
print(-17 // 5) # -4 (not -3!)
ผลลัพธ์
3.4
3
3.3333333333333335
3
3.5
3
-4

ตัวดำเนินการมอดุโล (%) ทำงานอย่างไร

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

ตัวดำเนินการมอดุโล (%)
# Modulo gives the remainder
print(17 % 5) # 2 (17 = 5*3 + 2)
print(10 % 3) # 1 (10 = 3*3 + 1)
print(20 % 4) # 0 (20 = 4*5 + 0, divides evenly)
print(7 % 2) # 1 (7 = 2*3 + 1)
# The classic use: check if a number is even or odd
number = 42
if number % 2 == 0:
print(f"{number} is even")
else:
print(f"{number} is odd")
ผลลัพธ์
2
1
0
1
42 is even

การใช้มอดุโลที่พบบ่อยที่สุดคือการตรวจว่าตัวเลขหารลงตัวหรือไม่ ถ้า x % y == 0 แปลว่า x หารด้วย y ลงตัว นี่คือวิธีตรวจเลขคู่หรือเลขคี่ ปีอธิกสุรทิน และอีกหลายอย่าง


การยกกำลังใน Python

Python ใช้ ** สำหรับการยกกำลัง (exponentiation) ภาษาอย่าง C และ Java ใช้ฟังก์ชันในการยกกำลัง แต่ Python ทำให้เป็นตัวดำเนินการ เรียบง่ายและอ่านง่าย

ยกกำลังด้วย **
# Exponentiation with **
print(2 ** 3) # 8 (2 cubed: 2 * 2 * 2)
print(5 ** 2) # 25 (5 squared: 5 * 5)
print(10 ** 6) # 1000000 (10 to the 6th power)
# Works with floats too
print(9 ** 0.5) # 3.0 (square root of 9!)
print(27 ** (1/3)) # 3.0 (cube root of 27)
ผลลัพธ์
8
25
1000000
3.0
3.0

มีเคล็ดลับเล็ก ๆ คือ การยกกำลังตัวเลขด้วย 0.5 จะได้รากที่สองของตัวเลขนั้น และ ** (1/3) จะได้รากที่สาม ไม่ต้องใช้ฟังก์ชันพิเศษสำหรับการหารากพื้นฐาน

ดอกเบี้ยทบต้นด้วยการยกกำลัง
# Practical example: compound interest
# Formula: A = P * (1 + r) ** t
principal = 1000 # Starting amount
rate = 0.05 # 5% annual interest
years = 10 # Time period
amount = principal * (1 + rate) ** years
print(f"${principal} at {rate*100}% for {years} years = ${round(amount, 2)}")
ผลลัพธ์
$1000 at 5.0% for 10 years = $1628.89

ลำดับการคำนวณใน Python เป็นอย่างไร

Python ใช้ลำดับการคำนวณแบบเดียวกับที่คุณเรียนในวิชาคณิตศาสตร์ ในภาษาอังกฤษจำกันด้วยคำย่อ PEMDAS: วงเล็บ (Parentheses) เลขยกกำลัง (Exponents) คูณ/หาร (Multiplication/Division) และบวก/ลบ (Addition/Subtraction)

ลำดับการคำนวณ
# Without parentheses - follows PEMDAS
print(2 + 3 * 4) # 14 (not 20!) - multiplication first
print(10 - 2 ** 3) # 2 - exponent first: 2**3=8, then 10-8=2
print(10 + 6 / 2) # 13.0 - division first: 6/2=3, then 10+3
# With parentheses - you control the order
print((2 + 3) * 4) # 20 - parentheses force addition first
print((10 - 2) ** 3) # 512 - parentheses first: 8**3=512
print((10 + 6) / 2) # 8.0 - parentheses first: 16/2=8
ผลลัพธ์
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()

    abs() และ round()
    # abs() - absolute value (distance from zero)
    print(abs(-10)) # 10
    print(abs(10)) # 10
    print(abs(-3.7)) # 3.7
    # round() - round to nearest value
    print(round(3.7)) # 4
    print(round(3.2)) # 3
    print(round(3.14159, 2)) # 3.14 (round to 2 decimal places)
    print(round(1234, -2)) # 1200 (round to nearest hundred!)
    ผลลัพธ์
    10
    10
    3.7
    4
    3
    3.14
    1200
    min() และ max()
    # min() - smallest value
    print(min(5, 3, 8, 1)) # 1
    print(min(-10, -20, -5)) # -20
    # max() - largest value
    print(max(5, 3, 8, 1)) # 8
    print(max(-10, -20, -5)) # -5
    # Practical: clamp a value between bounds
    score = 150
    clamped = min(max(score, 0), 100) # Keep between 0 and 100
    print(f"Score {score} clamped to {clamped}") # Score 150 clamped to 100
    ผลลัพธ์
    1
    -20
    8
    -5
    Score 150 clamped to 100

    การแปลงระหว่างจำนวนเต็มกับทศนิยม

    บางครั้งคุณต้องสลับชนิดของตัวเลข ใช้ int() เพื่อแปลงทศนิยมเป็นจำนวนเต็ม และใช้ float() เพื่อแปลงจำนวนเต็มเป็นทศนิยม

    การแปลงชนิดของตัวเลข
    # float → int (truncates, does NOT round)
    print(int(3.9)) # 3 - chops off the decimal
    print(int(3.1)) # 3
    print(int(-2.7)) # -2 - truncates toward zero
    # int → float
    print(float(42)) # 42.0
    print(float(-7)) # -7.0
    # string → numbers
    print(int("25")) # 25
    print(float("3.14")) # 3.14
    ผลลัพธ์
    3
    3
    -2
    42.0
    -7.0
    25
    3.14

    ในบางสถานการณ์ Python ยัง แปลงชนิดให้อัตโนมัติ ด้วย เมื่อคุณใช้จำนวนเต็มกับทศนิยมในการคำนวณเดียวกัน Python จะแปลงจำนวนเต็มเป็นทศนิยมให้เอง

    การแปลงชนิดอัตโนมัติ
    # Mixing int and float - Python "promotes" to float
    result = 5 + 2.0
    print(result) # 7.0 (float, not int)
    print(type(result)) # <class 'float'>
    # This happens with all operators
    print(10 * 1.5) # 15.0
    print(7 - 0.5) # 6.5
    print(type(3 + 0.0)) # <class 'float'>
    ผลลัพธ์
    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: สับสนระหว่าง / กับ //

    ความต่างระหว่าง / กับ //
    # / gives the full decimal answer
    print(7 / 2) # 3.5
    # // rounds DOWN to a whole number
    print(7 // 2) # 3
    # They give very different results!
    print(15 / 4) # 3.75
    print(15 // 4) # 3
    ผลลัพธ์
    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 ช่วยแก้ปัญหาในชีวิตประจำวันได้อย่างไร

    ลองทำแต่ละข้อด้วยตัวเองก่อนดูคำใบ้ การทำผิดเป็นส่วนหนึ่งของการเรียนรู้

    แบบฝึกหัดที่ 1: คำนวณราคารวม
    เขียนโค้ด

    คุณกำลังซื้อของในร้าน คำนวณราคารวมแล้วแสดงผลออกมา

  • สมุด 3 เล่ม เล่มละ $4.50
  • ปากกา 2 ด้าม ด้ามละ $1.25
  • แสดงยอดรวมในรูปแบบนี้ให้ตรงทุกตัวอักษร:

    Total: $16.0
    # Item prices and quantities
    notebook_price = 4.50
    notebook_qty = 3
    pen_price = 1.25
    pen_qty = 2
    # Calculate the total cost
    # Print the result
    แบบฝึกหัดที่ 2: ตรวจเลขคู่หรือเลขคี่
    เขียนโค้ด

    ใช้ตัวดำเนินการมอดุโล (%) ตรวจว่าตัวเลขเป็นเลขคู่หรือเลขคี่

    มีตัวแปร number ที่มีค่า 37 ให้มาแล้ว แสดงผลในรูปแบบนี้ให้ตรงทุกตัวอักษร:

    37 is odd

    ถ้าตัวเลขเป็นเลขคู่ (เช่น 42) ผลลัพธ์จะเป็น:

    42 is even
    number = 37
    # Use modulo to check if number is even or odd
    # Print: "{number} is even" or "{number} is odd"
    แบบฝึกหัดที่ 3: แก้บั๊ก: ใช้การหารผิดแบบ
    แก้บั๊ก

    โค้ดนี้ควรแบ่งพิซซ่า 10 ถาดให้ 3 กลุ่มเท่า ๆ กัน แล้วบอกว่าเหลือกี่ถาด แต่กลับใช้ตัวดำเนินการหารผิดตัว

    แก้โค้ดให้ได้ผลลัพธ์ดังนี้:

    Each group gets 3 pizzas
    Leftover pizzas: 1
    total_pizzas = 10
    groups = 3
    # Bug: using the wrong division operators
    pizzas_each = total_pizzas / groups
    leftover = total_pizzas / groups
    print(f"Each group gets {pizzas_each} pizzas")
    print(f"Leftover pizzas: {leftover}")
    แบบฝึกหัดที่ 4: แปลงองศาฟาเรนไฮต์เป็นเซลเซียส
    เขียนโค้ด

    แปลงอุณหภูมิจากฟาเรนไฮต์เป็นเซลเซียสด้วยสูตรนี้:

    **เซลเซียส = (ฟาเรนไฮต์ - 32) * 5 / 9**

    มีตัวแปร fahrenheit ที่มีค่า 72 ให้มาแล้ว คำนวณค่าเซลเซียส ปัดเป็นทศนิยม 1 ตำแหน่ง แล้วแสดงผล:

    72F = 22.2C
    fahrenheit = 72
    # Convert to Celsius using the formula
    # Round to 1 decimal place
    # Print the result
    แบบฝึกหัดที่ 5: ทายผลลัพธ์
    ทายผลลัพธ์

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

    print(10 // 3) # Your prediction:
    print(10 % 3) # Your prediction:
    print(2 ** 4) # Your prediction:
    print(15 // 4) # Your prediction:
    print(15 % 4) # Your prediction:
    print(type(10 / 2)) # Your prediction:
    แบบฝึกหัดที่ 6: คำนวณดอกเบี้ยทบต้น
    เขียนโค้ด

    คำนวณดอกเบี้ยทบต้นด้วยสูตรนี้:

    **A = P * (1 + r) t

    โดยที่:

  • P = เงินต้น (จำนวนเงินเริ่มต้น) = $1000
  • r = อัตราดอกเบี้ยต่อปี = 0.05 (5%)
  • t = จำนวนปี = 10
  • A = จำนวนเงินสุดท้าย
  • คำนวณจำนวนเงินสุดท้ายและดอกเบี้ยที่ได้รับ แล้วแสดงผล:

    Final amount: $1628.89
    Interest earned: $628.89

    ปัดทั้งสองค่าเป็นทศนิยม 2 ตำแหน่ง

    principal = 1000
    rate = 0.05
    years = 10
    # Calculate the final amount using the formula
    # Calculate interest earned (final - principal)
    # Print the results

    สรุป: ตัวเลขและคณิตศาสตร์ใน Python

    ตารางสรุปตัวดำเนินการและฟังก์ชันทุกตัวในบทเรียนนี้:

    ตัวดำเนินการชื่อตัวอย่างผลลัพธ์
    +การบวก5 + 38
    -การลบ5 - 32
    *การคูณ5 * 315
    /การหาร5 / 31.666...
    //การหารเอาจำนวนเต็ม5 // 31
    %มอดุโล (เศษ)5 % 32
    **การยกกำลัง5 ** 3125

    ฟังก์ชันในตัว:

    ฟังก์ชันหน้าที่ตัวอย่าง
    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) เมธอดของสตริง และการรวมสตริงกับตัวเลขให้เป็นผลลัพธ์ที่อ่านง่าย

    บทเรียนที่เกี่ยวข้อง

    บทเรียนนี้มีประโยชน์หรือไม่