❖ 1. ស្គាល់ Python ជាដំបូង
1.1 Python ជាភាសាអ្វី ហើយសម្រាប់ធ្វើអ្វី
Python ជាភាសាកម្មវិធីមួយដែលផ្តោតលើភាពសាមញ្ញ៖ កូដមួយបន្ទាត់អាចនិយាយបានច្រើនជាងភាសាផ្សេង។ វាមិនមែនសម្រាប់វិស័យតែមួយទេ ថែមទាំងប្រើប្រាស់ចាប់ពីសរសេរ Script តូចៗសម្រាប់សន្សំសំចៃពេលធ្វើការដដែលៗ រហូតដល់ស្ថាបនាប្រព័ន្ធវិភាគទិន្នន័យធំៗ។
1.2 ការដំឡើង និងកន្លែងសរសេរកូដ
| ជម្រើស | ពិពណ៌នា |
|---|---|
| python.org | ទាញយក Installer ផ្លូវការសម្រាប់ Windows/macOS/Linux |
| VS Code + Python Extension | Editor ពេញនិយមបំផុតសម្រាប់សរសេរ Project ធំតូចគ្រប់ទំហំ |
| Google Colab / Replit | សរសេរ និងរត់កូដភ្លាមៗលើ Browser ដោយមិនចាំបាច់ដំឡើងអ្វីទាំងអស់ |
1.3 REPL និង File Scriptដែលពីរវិធីរត់កូដ
REPL (Read-Eval-Print Loop) ជាកន្លែងសរសេរកូដមួយបន្ទាត់ ហើយឃើញលទ្ធផលភ្លាមៗ ដែលល្អសម្រាប់សាកល្បងគំនិតលឿនៗ។ ចំណែក File Script (ឧ. app.py) ជាកន្លែងផ្ទុកកម្មវិធីពេញលេញដែលរត់ម្តងទាំងអស់។
# វិធីទី១: REPL (វាយក្នុង Terminal ដោយផ្ទាល់)
>>> 5 + 3
8
# វិធីទី២: File script (រក្សាទុកជា greet.py រួចរត់)
print("សូមស្វាគមន៍មកកាន់ពិភព Python!")
python greet.py
លទ្ធផល៖
សូមស្វាគមន៍មកកាន់ពិភព Python!
❖ 2. អថេរ និងប្រភេទទិន្នន័យ
2.1 ការប្រកាសអថេរ (Variables)
Python មិនតម្រូវឲ្យប្រកាសប្រភេទទិន្នន័យទុកមុនទេ។ គ្រាន់តែដាក់ឈ្មោះ និងតម្លៃ Python នឹងស្គាល់ប្រភេទដោយខ្លួនឯង។
city = "សៀមរាប"
temperature = 34.5
is_sunny = True
print(city, temperature, is_sunny)
លទ្ធផល៖ សៀមរាប 34.5 True
2.2 ប្រភេទទិន្នន័យសំខាន់ៗ
| ប្រភេទ | ឧទាហរណ៍ | ការប្រើប្រាស់ |
|---|---|---|
| int | 7, -3, 1500 | រាប់ចំនួន (អាយុ, ចំនួនទំនិញ) |
| float | 3.14, 99.9 | តម្លៃដែលមានទសភាគ (តម្លៃទំនិញ, ទម្ងន់) |
| str | "សួស្តី" | អត្ថបទ, ឈ្មោះ, ចំណងជើង |
| bool | True / False | លក្ខខណ្ឌ ត្រូវ ឬ ខុស |
print(type(7))
print(type(3.14))
print(type("សួស្តី"))
print(type(True))
2.3 ការបម្លែងប្រភេទទិន្នន័យ (Type Conversion)
ជួនកាលទិន្នន័យមួយត្រូវបម្លែងទៅជាប្រភេទផ្សេង មុននឹងគណនាបាន។ ឧទាហរណ៍ ទិន្នន័យដែលបានពី input() តែងតែជា str ជានិច្ច។
age_text = "16"
age_number = int(age_text)
print(age_number + 4) # ដំណើរការព្រោះឥឡូវជាលេខ
# print(age_text + 4) # នេះនឹងបណ្តាលឱ្យមានកំហុស TypeError
លទ្ធផល៖ 20
❖ 3. ការទំនាក់ទំនងជាមួយអ្នកប្រើប្រាស់
3.1 ការទទួលទិន្នន័យជាមួយ input()
city = input("អ្នកមកពីទីក្រុងណា? ")
print("ល្អណាស់! អ្នកមកពី", city)
3.2 ការបង្ហាញលទ្ធផលឲ្យស្អាតជាមួយ f-string
f-string (បន្ថំពាក្យ f ពីមុខ) អនុញ្ញាតឲ្យបញ្ចូលអថេរដោយផ្ទាល់ក្នុងអត្ថបទ ដោយមិនចាំបាច់ភ្ជាប់ដោយសញ្ញា +។
name = "សុវណ្ណ"
score = 87.5
print(f"សិស្ស {name} ទទួលបានពិន្ទុ {score} ភាគរយ")
print(f"ជាបន្ទាត់ខ្លី: {score:.1f}%") # កំណត់ចំនួនខ្ទង់ក្រោយចំណុច
លទ្ធផល៖
សិស្ស សុវណ្ណ ទទួលបានពិន្ទុ 87.5 ភាគរយ
ជាបន្ទាត់ខ្លី: 87.5%
3.3 ការអនុវត្តជាក់ស្តែង៖ កម្មវិធីគណនា BMI
តោះផ្សំចំណុចទាំងបីខាងលើ (input, type conversion, f-string) ធ្វើជាកម្មវិធីតូចមួយ ដើម្បីគណនាសន្ទស្សន៍ម៉ាស់រាងកាយ (BMI)។
weight = float(input("ទម្ងន់ (គីឡូក្រាម): "))
height = float(input("កម្ពស់ (ម៉ែត្រ): "))
bmi = weight / (height ** 2)
print(f"សន្ទស្សន៍ម៉ាស់រាងកាយរបស់អ្នកគឺ {bmi:.2f}")
លទ្ធផល (ឧទាហរណ៍ បញ្ចូល 60 និង 1.65)៖
សន្ទស្សន៍ម៉ាស់រាងកាយរបស់អ្នកគឺ 22.04
❖ 4. ការសម្រេចចិត្ត (Decision Making)
4.1 if / elif / else
hour = 19
if hour < 12:
print("អរុណសួស្តី")
elif hour < 18:
print("ទិវាសួស្តី")
else:
print("សាយណ្ហសួស្តី")
លទ្ធផល៖ សាយណ្ហសួស្តី
{ } ដើម្បីកំណត់ថាកូដមួយណាស្ថិតក្នុង Block មួយណា។4.2 ការផ្សំលក្ខខណ្ឌជាមួយ and / or / not
age = 20
has_id_card = True
if age >= 18 and has_id_card:
print("អនុញ្ញាតឲ្យបោះឆ្នោត")
else:
print("មិនទាន់មានលក្ខណៈគ្រប់គ្រាន់")
4.3 ការអនុវត្តជាក់ស្តែង៖ កម្មវិធីត្រួតពិនិត្យពាក្យសម្ងាត់
តោះប្រើលក្ខខណ្ឌច្រើនស្រទាប់ ដើម្បីត្រួតពិនិត្យថាតើពាក្យសម្ងាត់មួយមានសុវត្ថិភាពគ្រប់គ្រាន់ដែរឬទេ។
password = input("បង្កើតពាក្យសម្ងាត់: ")
has_number = any(char.isdigit() for char in password)
is_long_enough = len(password) >= 8
if is_long_enough and has_number:
print("ពាក្យសម្ងាត់នេះមានសុវត្ថិភាពល្អ")
elif not is_long_enough:
print("ខ្លីពេក! ត្រូវយ៉ាងហោចណាស់ 8 តួអក្សរ")
else:
print("គួរបន្ថែមលេខយ៉ាងហោចណាស់មួយខ្ទង់")
លទ្ធផល (ឧទាហរណ៍ បញ្ចូល "kh2025go")៖
ពាក្យសម្ងាត់នេះមានសុវត្ថិភាពល្អ
❖ 5. ការធ្វើម្តងទៀត (Loops)
5.1 for loopដែលដើរលើលំដាប់ដែលដឹងចំនួនស្រាប់
for hour in range(1, 6):
print(f"ម៉ោងទី {hour}: បន្តធ្វើការ")
លទ្ធផល៖
ម៉ោងទី 1: បន្តធ្វើការ
ម៉ោងទី 2: បន្តធ្វើការ
ម៉ោងទី 3: បន្តធ្វើការ
ម៉ោងទី 4: បន្តធ្វើការ
ម៉ោងទី 5: បន្តធ្វើការ
5.2 while loopដែលដើរដរាបណាលក្ខខណ្ឌនៅពិត
battery = 100
while battery > 0:
print(f"ថ្ម: {battery}%")
battery -= 25
print("ថ្មអស់ហើយ!")
5.3 break និង continue
for number in range(1, 10):
if number == 6:
break # បញ្ឈប់ loop ទាំងស្រុង
if number % 2 == 0:
continue # រំលងលេខគូ
print(number)
លទ្ធផល៖
1
3
5
5.4 ការអនុវត្តជាក់ស្តែង៖ ល្បែងទាយលេខ
import random
secret = random.randint(1, 20)
guess = 0
attempts = 0
while guess != secret:
guess = int(input("ទាយលេខពី 1 ដល់ 20: "))
attempts += 1
if guess < secret:
print("ខ្ពស់ជាងនេះទៀត!")
elif guess > secret:
print("ទាបជាងនេះទៀត!")
print(f"ត្រូវហើយ! អ្នកទាយត្រូវក្នុងចំនួន {attempts} ដង")
❖ 6. ការប្រមូលទិន្នន័យ (Collections)
6.1 តើគួរប្រើមួយណា? List, Tuple, Set ឬ Dictionary
| ប្រភេទ | តម្រូវការណាដែលសមស្រប |
|---|---|
| list | បញ្ជីតម្រៀបលំដាប់ ដែលនឹងកែប្រែជាប្រចាំ (ឧ. កិច្ចការត្រូវធ្វើ) |
| tuple | ទិន្នន័យថេរដែលមិនចង់ឲ្យប្រែប្រួល (ឧ. កូអរដោនេ GPS) |
| set | ត្រូវការតែធាតុមិនស្ទួន (ឧ. បញ្ជីអ៊ីមែលដែលធ្លាប់ចុះឈ្មោះ) |
| dict | ត្រូវការស្វែងរកតម្លៃលឿនៗ តាមឈ្មោះសោ (ឧ. តម្លៃទំនិញតាមឈ្មោះ) |
6.2 Listដែលកែប្រែ បន្ថែម និងលុបធាតុ
tasks = ["ទិញឥវ៉ាន់", "សម្អាតផ្ទះ"]
tasks.append("សរសេររបាយការណ៍")
tasks.remove("សម្អាតផ្ទះ")
print(tasks)
print("ចំនួនកិច្ចការ:", len(tasks))
លទ្ធផល៖
['ទិញឥវ៉ាន់', 'សរសេររបាយការណ៍']
ចំនួនកិច្ចការ: 2
6.3 Dictionaryដែលស្វែងរកលឿនតាមឈ្មោះសោ
prices = {"កាហ្វេ": 2.5, "នំបុ័ង": 1.2, "ទឹកក្រូច": 1.8}
item = "នំបុ័ង"
print(f"{item} តម្លៃ {prices[item]} ដុល្លារ")
prices["ទឹកតែ"] = 1.5 # បន្ថែមធាតុថ្មី
print(prices)
6.4 ការអនុវត្តជាក់ស្តែង៖ កម្មវិធីគ្រប់គ្រងបញ្ជីទិញឥវ៉ាន់
cart = {}
while True:
item = input("បញ្ចូលឈ្មោះទំនិញ (ឬ 'done' ដើម្បីបញ្ចប់): ")
if item == "done":
break
qty = int(input(f"ចំនួន {item}: "))
cart[item] = cart.get(item, 0) + qty
print("\nសរុបក្នុងកន្ត្រក៖")
for name, qty in cart.items():
print(f"- {name}: {qty}")
លទ្ធផល (ឧទាហរណ៍)៖
សរុបក្នុងកន្ត្រក៖
- ស្វាយ: 3
- ត្រសក់: 2
❖ 7. មុខងារ (Functions)
7.1 ហេតុអ្វីត្រូវប្រើ Function?
Function ជួយកុំឲ្យសរសេរកូដដដែលៗច្រើនដង។ សរសេរតែម្តង ហៅប្រើបានច្រើនកន្លែង។ វាក៏ធ្វើឲ្យកូដងាយអានជាង ព្រោះឈ្មោះ Function ខ្លួនឯងអាចពន្យល់ថាកូដផ្នែកនោះធ្វើអ្វី។
def convert_to_riel(usd, rate=4100):
return usd * rate
print(convert_to_riel(5))
print(convert_to_riel(5, 4050))
លទ្ធផល៖
20500
20250
7.2 Local Scope vs Global Scope
discount_rate = 0.1 # global
def apply_discount(price):
final_price = price - (price * discount_rate) # អាចអានឃើញ global
return final_price
print(apply_discount(100))
7.3 ការអនុវត្តជាក់ស្តែង៖ ម៉ាស៊ីនគិតលេខសាមញ្ញ
def calculate(a, b, operator):
if operator == "+":
return a + b
elif operator == "-":
return a - b
elif operator == "*":
return a * b
elif operator == "/":
if b == 0:
return "មិនអាចចែកនឹង 0 បានទេ"
return a / b
else:
return "សញ្ញាមិនត្រឹមត្រូវ"
print(calculate(8, 2, "*"))
print(calculate(8, 0, "/"))
លទ្ធផល៖
16
មិនអាចចែកនឹង 0 បានទេ
❖ 8. ការងារជាមួយ String និង File
8.1 String Methods ដែលប្រើញឹកញាប់
| Method | ការប្រើប្រាស់ |
|---|---|
| .strip() | លុបចន្លោះទទេនៅដើម/ចុងអត្ថបទ |
| .split() | បំបែកអត្ថបទទៅជាបញ្ជីតាមសញ្ញាកំណត់ |
| .join() | ផ្ទុយពី split៖ ភ្ជាប់បញ្ជីទៅជាអត្ថបទតែមួយ |
| .lower() / .upper() | ប្តូរទៅជាអក្សរតូច/ធំទាំងអស់ |
sentence = " Python ជា ភាសា ល្អ "
words = sentence.strip().split()
clean_sentence = " ".join(words)
print(clean_sentence)
លទ្ធផល៖ Python ជា ភាសា ល្អ
8.2 ការសរសេរ និងអានឯកសារ (File I/O)
# សរសេរបញ្ជីទៅឯកសារ
with open("notes.txt", "w", encoding="utf-8") as f:
f.write("ថ្ងៃនេះរៀន Python\n")
f.write("ស្អែករៀនអំពី File Handling\n")
# អានមកវិញ
with open("notes.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
លទ្ធផល៖
ថ្ងៃនេះរៀន Python
ស្អែករៀនអំពី File Handling
8.3 ការអនុវត្តជាក់ស្តែង៖ កម្មវិធីរាប់ពាក្យក្នុងឯកសារ
with open("notes.txt", "r", encoding="utf-8") as f:
content = f.read()
words = content.split()
word_count = len(words)
unique_words = len(set(words))
print(f"ចំនួនពាក្យសរុប: {word_count}")
print(f"ចំនួនពាក្យមិនស្ទួន: {unique_words}")
❖ 9. ការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុ (OOP) ជាមូលដ្ឋាន
9.1 Class និង Objectដែលគំរូ vs វត្ថុពិត
Class ដូចជា "គំរូគំនូសបញ្ជូន" (blueprint) ចំណែក Object ជាវត្ថុពិតដែលបង្កើតចេញពីគំរូនោះ។ ឧទាហរណ៍ Class Book ជាគំរូទូទៅរបស់សៀវភៅ ចំណែក Object នីមួយៗគឺជាសៀវភៅជាក់លាក់នីមួយៗ។
class Book:
def __init__(self, title, author, available=True):
self.title = title
self.author = author
self.available = available
def borrow(self):
if self.available:
self.available = False
print(f"'{self.title}' ត្រូវបានខ្ចីរួចរាល់")
else:
print(f"'{self.title}' មិនទាន់អាចខ្ចីបានទេ")
book1 = Book("ប្រវត្តិសាស្ត្រខ្មែរ", "លោក សុខ")
book1.borrow()
book1.borrow()
លទ្ធផល៖
'ប្រវត្តិសាស្ត្រខ្មែរ' ត្រូវបានខ្ចីរួចរាល់
'ប្រវត្តិសាស្ត្រខ្មែរ' មិនទាន់អាចខ្ចីបានទេ
9.2 Inheritanceដែលការបន្តលក្ខណៈពី Class មេ
class EBook(Book):
def __init__(self, title, author, file_size_mb):
super().__init__(title, author)
self.file_size_mb = file_size_mb
def download(self):
print(f"កំពុងទាញយក '{self.title}' ({self.file_size_mb}MB)")
ebook = EBook("Python ដំបូង", "លោក ដារា", 12)
ebook.download()
ebook.borrow()
លទ្ធផល៖
កំពុងទាញយក 'Python ដំបូង' (12MB)
'Python ដំបូង' ត្រូវបានខ្ចីរួចរាល់
9.3 ការអនុវត្តជាក់ស្តែង៖ ប្រព័ន្ធគ្រប់គ្រងបណ្ណាល័យតូច
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
self.books.append(book)
def show_available(self):
for book in self.books:
status = "នៅមាន" if book.available else "ត្រូវបានខ្ចីរួច"
print(f"- {book.title} ({status})")
library = Library()
library.add_book(Book("ភាសាខ្មែរ", "គណៈកម្មការភាសា"))
library.add_book(Book("គណិតវិទ្យា", "លោក វិចិត្រ"))
library.books[0].borrow()
library.show_available()
លទ្ធផល៖
- ភាសាខ្មែរ (ត្រូវបានខ្ចីរួច)
- គណិតវិទ្យា (នៅមាន)
❖ 10. ការគ្រប់គ្រងកំហុស និងជំហានបន្ទាប់
10.1 try / exceptដែលការពារកម្មវិធីពីការគាំង
try:
number = int(input("បញ្ចូលលេខអាយុ: "))
print(f"ក្នុងរយៈពេល 10 ឆ្នាំទៀត អ្នកនឹងមានអាយុ {number + 10}")
except ValueError:
print("សូមបញ្ចូលជាលេខ មិនមែនអក្សរទេ!")
10.2 ម៉ូឌុលខ្លីៗដែលគួរស្គាល់
| Module | ការប្រើប្រាស់ខ្លីៗ |
|---|---|
| random | បង្កើតលេខចៃដន្យ ឬជ្រើសរើសធាតុចៃដន្យពីបញ្ជី |
| datetime | ទាញយកកាលបរិច្ឆេទ និងពេលវេលាបច្ចុប្បន្ន |
| os | ពិនិត្យ ឬបង្កើត Folder/File នៅលើប្រព័ន្ធ |
from datetime import datetime
now = datetime.now()
print(f"ពេលនេះជាថ្ងៃទី {now.day} ខែ {now.month} ឆ្នាំ {now.year}")
10.3 ជំហានបន្ទាប់ដែលសិក្សាបន្តទៅជំនាញណា
បន្ទាប់ពីមានមូលដ្ឋានរឹងមាំហើយ អ្នកអាចជ្រើសរើសផ្លូវសិក្សាបន្តទៅតាមចំណាប់អារម្មណ៍៖
| ចំណាប់អារម្មណ៍ | គួរសិក្សាបន្ត |
|---|---|
| ចង់សាងសង់គេហទំព័រ | Flask ឬ Django (Web Framework) |
| ចង់វិភាគទិន្នន័យ | Pandas, NumPy |
| ចង់ធ្វើ Automation/Script | File handling, os, schedule |
| ចង់សិក្សា AI/Machine Learning | Scikit-learn, TensorFlow |
លំហាត់អនុវត្ត
- សរសេរកម្មវិធីគណនា BMI (មេរៀនទី៣) ឲ្យបន្ថែមលក្ខខណ្ឌប្រាប់ថាតើលទ្ធផលស្ថិតក្នុងកម្រិត "ស្គម", "ធម្មតា", ឬ "លើសទម្ងន់"។
- ធ្វើឲ្យល្បែងទាយលេខ (មេរៀនទី៥) កំណត់ចំនួនដងទាយអតិបរមាត្រឹម ៥ ដងតែប៉ុណ្ណោះ។
- បន្ថែមមុខងារលុបទំនិញចេញពីកន្ត្រក ក្នុងកម្មវិធីទិញឥវ៉ាន់ (មេរៀនទី៦)។
- បន្ថែម Class
Memberទៅកម្មវិធីបណ្ណាល័យ (មេរៀនទី៩) ដើម្បីតាមដានថានរណាកំពុងខ្ចីសៀវភៅមួយណា។