លំហសិក្សាកម្ពុជា
V1.0
មេរៀនទី ៣ នេះបន្តពីមេរៀនទី ១ និងទី ២ ដោយផ្ដោតលើការបង្កើតកម្មវិធី Python Console ដែលមានម៉ឺនុយប្រើប្រាស់ច្បាស់លាស់ និងការរក្សាទុកទិន្នន័យវិញ្ញាបនបត្រទៅក្នុង CSV File។ នៅមេរៀនទី២ និស្សិតបានរៀនអំពី Functions, Lists, Dictionaries និង Certificate Transactions។ ប៉ុន្តែទិន្នន័យដែលរក្សាទុកក្នុង List នឹងបាត់បង់នៅពេលកម្មវិធីបិទ។ ដូច្នេះ មេរៀនទី៣ណែនាំពី File Storage ដោយប្រើ Python csv module ដើម្បីអាន សរសេរ បន្ថែម និងស្វែងរកទិន្នន័យក្នុង CSV File។ Python Documentation ពន្យល់ថា csv module ផ្ដល់ reader, writer, DictReader និង DictWriter សម្រាប់អាន និងសរសេរទិន្នន័យជា rows ឬ dictionary form [1]។ មេរៀននេះសំខាន់សម្រាប់ Final Project ព្រោះ CSV នឹងត្រូវប្រើសម្រាប់រក្សាទុក certificates, transactions, blocks, verification logs និង audit logs មុនពេលបន្តទៅ Hashing និង Blockchain Structure នៅមេរៀនបន្ទាប់ៗ។
| ចំណុច | ព័ត៌មាន |
|---|---|
| មុខវិជ្ជា | Blockchain Technology Using Python Console and CSV |
| មេរៀន | មេរៀនទី ៣ |
| ចំណងជើង | Python Console Menu and CSV File Handling |
| ប្រធានបទសំខាន់ | Console Menu, CSV Writing, CSV Reading, CSV Searching |
| កម្រិតនិស្សិត | Beginner to Intermediate |
| ភាសាសរសេរកម្មវិធី | Python |
| ប្រភេទកម្មវិធី | Console Application |
| ឧបករណ៍ប្រើប្រាស់ | Python, VS Code, Terminal / Command Prompt, CSV file |
| លទ្ធផលរំពឹងទុក | និស្សិតអាចបង្កើត Certificate Manager ដែលរក្សាទុកទិន្នន័យក្នុង CSV |
| ទិសដៅ Project | Console-Based Blockchain Student Certificate Verification System |
បន្ទាប់ពីបញ្ចប់មេរៀននេះ និស្សិតគួរអាច៖
csv module ដើម្បីសរសេរទិន្នន័យទៅ CSV។
csv.DictWriter ដើម្បីសរសេរ Certificate Records ជា dictionary rows។
csv.DictReader ដើម្បីអានទិន្នន័យពី CSV។
នៅមេរៀនទី ២ និស្សិតបានបង្កើត transactions = [] ដើម្បីរក្សាទុក Certificate Transactions ក្នុង Memory។ ប៉ុន្តែបញ្ហាគឺ៖
ទិន្នន័យក្នុង List នឹងបាត់បង់នៅពេលកម្មវិធីបិទ។
ដើម្បីដោះស្រាយបញ្ហានេះ យើងត្រូវប្រើ File Storage។ ក្នុង Course នេះ យើងចាប់ផ្ដើមពី CSV ព្រោះ CSV ងាយស្រួលសម្រាប់អ្នកចាប់ផ្ដើម អាចបើកមើលក្នុង Excel បាន និងមិនទាមទារ Database Server។
Flow របស់មេរៀនទី៣គឺ៖
Console Menu ↓ User Enters Certificate Data ↓ Python Dictionary ↓ Save to CSV File ↓ Read CSV File ↓ Search Certificate by ID

រូបភាពនេះគួរបង្ហាញលំហូរពីអ្នកប្រើប្រាស់បញ្ចូល Certificate Data នៅក្នុង Console ទៅកាន់ Python Dictionary ហើយបន្ទាប់មករក្សាទុកទៅក្នុង CSV File។ វាជួយឱ្យនិស្សិតយល់ថា CSV Storage គឺជាជំហានសំខាន់សម្រាប់រក្សាទុកទិន្នន័យឱ្យនៅស្ថិតស្ថេរ ទោះបីកម្មវិធីបិទក៏ដោយ។
Console Menu គឺជាម៉ឺនុយអក្សរដែលបង្ហាញជម្រើសឱ្យអ្នកប្រើប្រាស់ជ្រើស។ វាជួយឱ្យកម្មវិធីមានរចនាសម្ព័ន្ធ និងងាយប្រើ។ ក្នុង Project របស់យើង Console Menu អាចមានជម្រើសដូចជា៖
1. Add Certificate 2. Show All Certificates 3. Search Certificate 4. Exit
Menu ធ្វើឱ្យអ្នកប្រើប្រាស់មិនចាំបាច់ដឹងកូដខាងក្នុង។ ពួកគេគ្រាន់តែជ្រើសលេខជម្រើស ហើយកម្មវិធីដំណើរការតាមមុខងារដែលបានកំណត់។
| មូលហេតុ | ការពន្យល់ |
|---|---|
| ងាយប្រើ | អ្នកប្រើប្រាស់អាចជ្រើសមុខងារតាមលេខ |
| មានរចនាសម្ព័ន្ធ | កម្មវិធីត្រូវបានបែងចែកជាមុខងារច្បាស់ |
| អាចពង្រីកបាន | អាចបន្ថែម Save CSV, Generate Hash, Create Block នៅពេលក្រោយ |
| ងាយសាកល្បង | គ្រូអាចសាកល្បងមុខងារនីមួយៗបាន |
| សមស្របសម្រាប់ Final Project | Console Menu ជាមូលដ្ឋានរបស់ប្រព័ន្ធ Certificate Verification |

រូបភាពនេះគួរបង្ហាញម៉ឺនុយ Console ដែលមានជម្រើស Add Certificate, Show Certificates, Search Certificate និង Exit។ វាជួយឱ្យនិស្សិតយល់ថា Console Menu គឺជាមធ្យោបាយសម្រាប់ភ្ជាប់អ្នកប្រើប្រាស់ទៅមុខងារផ្សេងៗក្នុងកម្មវិធី។
def show_menu(): print("\n=== Certificate CSV Manager ===") print("1. Add Certificate") print("2. Show All Certificates") print("3. Search Certificate") print("4. Exit") while True: show_menu() choice = input("Choose option: ") if choice == "1": print("Add Certificate selected.") elif choice == "2": print("Show All Certificates selected.") elif choice == "3": print("Search Certificate selected.") elif choice == "4": print("Goodbye!") break else: print("Invalid choice. Please try again.")
show_menu() ជា Function សម្រាប់បង្ហាញម៉ឺនុយ។
while True ធ្វើឱ្យកម្មវិធីដំណើរការជាបន្តបន្ទាប់។
choice = input(...) ទទួលជម្រើសពីអ្នកប្រើប្រាស់។
if / elif / else ប្រើសម្រាប់ពិនិត្យជម្រើស។
break ប្រើសម្រាប់បញ្ចប់ Loop និងចាកចេញពីកម្មវិធី។
CSV មានន័យថា Comma-Separated Values។ វាជា File Text មួយដែលរក្សាទុកទិន្នន័យជា rows និង columns។ CSV អាចបើកមើលបានក្នុងកម្មវិធីដូចជា Microsoft Excel, Google Sheets ឬ Text Editor។
ឧទាហរណ៍ CSV៖
certificate_id,student_name,program,certificate_title,issue_date,status CERT-FDE-001,Sok Dara,Digital Economy,Blockchain Technology Completion,2026-08-25,Valid CERT-FDE-002,Chan Vicheka,Digital Economy,Python Programming Completion,2026-08-26,Valid
Python csv module ត្រូវបានរចនាឡើងសម្រាប់អាន និងសរសេរទិន្នន័យ CSV។ Documentation បញ្ជាក់ថា reader និង writer អាចអាន/សរសេរទិន្នន័យជាលំដាប់ ហើយ DictReader និង DictWriter អាចអាន/សរសេរទិន្នន័យជា dictionary form [1]។
| ហេតុផល | ការពន្យល់ |
|---|---|
| ងាយស្រួលសម្រាប់អ្នកចាប់ផ្ដើម | មិនចាំបាច់ដំឡើង Database |
| អាចបើកមើលក្នុង Excel | និស្សិតអាចមើលទិន្នន័យជាតារាង |
| សមស្របសម្រាប់ Console App | អាចអាន/សរសេរទិន្នន័យដោយ Python |
| ជាមូលដ្ឋានសម្រាប់ Database | ជួយយល់ពី rows, columns, fields |
| ល្អសម្រាប់ Project ដំបូង | គ្រប់គ្រាន់សម្រាប់ Prototype |

រូបភាពនេះគួរបង្ហាញ CSV File ជាតារាង ដែលមាន Columns ដូចជា Certificate ID, Student Name, Program, Certificate Title, Issue Date និង Status។ វាជួយឱ្យនិស្សិតយល់ថា CSV អាចរក្សាទុកទិន្នន័យមានរចនាសម្ព័ន្ធស្រដៀងនឹងតារាង Database តូចមួយ។
មុនសរសេរទិន្នន័យទៅ CSV យើងត្រូវកំណត់ Fields ឱ្យបានច្បាស់។ ក្នុង Project នេះ យើងប្រើ Fields ខាងក្រោម៖
| Field | ការពន្យល់ |
|---|---|
certificate_id | លេខសម្គាល់វិញ្ញាបនបត្រ |
student_name | ឈ្មោះនិស្សិត |
program | កម្មវិធីសិក្សា |
certificate_title | ចំណងជើងវិញ្ញាបនបត្រ |
issue_date | ថ្ងៃចេញវិញ្ញាបនបត្រ |
status | ស្ថានភាព Valid, Invalid ឬ Revoked |
Fields ទាំងនេះនឹងត្រូវប្រើឡើងវិញនៅមេរៀនបន្ទាប់ៗសម្រាប់ Hashing និង Transaction Creation។ ប្រសិនបើ Field names មិនស្ថិតស្ថេរ ឬសរសេរខុស Hash និង Search Function អាចមានបញ្ហា។
បង្កើត certificates.csv ដែលមាន Header Row សម្រាប់រក្សាទុក Certificate Records។
import csv import os CSV_FILE = "certificates.csv" def create_csv_file(): if not os.path.exists(CSV_FILE): with open(CSV_FILE, "w", newline="", encoding="utf-8") as file: fieldnames = [ "certificate_id", "student_name", "program", "certificate_title", "issue_date", "status" ] writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() print("CSV file created successfully.") else: print("CSV file already exists.") create_csv_file()
import csv នាំចូល Module សម្រាប់ CSV។
import os ប្រើសម្រាប់ពិនិត្យថា File មានឬអត់។
CSV_FILE = "certificates.csv" កំណត់ឈ្មោះ File។
os.path.exists(CSV_FILE) ពិនិត្យថា File មានរួចឬអត់។
csv.DictWriter() សរសេរ Dictionary ទៅ CSV។
writer.writeheader() សរសេរ Header Row។

រូបភាពនេះគួរបង្ហាញថា Python Program បង្កើត certificates.csv និងសរសេរ Header Row ដែលមាន Field Names។ Header Row ជួយឱ្យទិន្នន័យក្នុង CSV មានរចនាសម្ព័ន្ធច្បាស់ និងងាយអានដោយ DictReader នៅពេលក្រោយ។
សរសេរ Function សម្រាប់បញ្ចូល Certificate Record ពី Console ហើយរក្សាទុកទៅ CSV។
import csv import os CSV_FILE = "certificates.csv" fieldnames = [ "certificate_id", "student_name", "program", "certificate_title", "issue_date", "status" ] def create_csv_file(): if not os.path.exists(CSV_FILE): with open(CSV_FILE, "w", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() def add_certificate(): create_csv_file() certificate = { "certificate_id": input("Certificate ID: "), "student_name": input("Student Name: "), "program": input("Program: "), "certificate_title": input("Certificate Title: "), "issue_date": input("Issue Date: "), "status": input("Status Valid/Invalid/Revoked: ") } with open(CSV_FILE, "a", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writerow(certificate) print("Certificate saved to CSV successfully.") add_certificate()
Function add_certificate() ធ្វើការងារ ៣៖
writer.writerow()។
ការប្រើ newline="" ជួយកាត់បន្ថយបញ្ហាបន្ទាត់ទទេនៅពេលសរសេរ CSV លើប្រព័ន្ធខ្លះ។ ការប្រើ encoding="utf-8" ជួយឱ្យអក្សរអាចរក្សាទុកបានសមស្រប។
អាន Certificate Records ទាំងអស់ពី CSV ហើយបង្ហាញក្នុង Console។
def show_all_certificates(): create_csv_file() with open(CSV_FILE, "r", encoding="utf-8") as file: reader = csv.DictReader(file) print("\n=== All Certificates ===") found = False for row in reader: found = True print("-----------------------------") print("Certificate ID:", row["certificate_id"]) print("Student Name:", row["student_name"]) print("Program:", row["program"]) print("Certificate Title:", row["certificate_title"]) print("Issue Date:", row["issue_date"]) print("Status:", row["status"]) if not found: print("No certificate records found.")
csv.DictReader(file) អាន CSV Row ជា Dictionary។
for row in reader: អាន Record ម្តងមួយ។
found = False ប្រើដើម្បីពិនិត្យថាមានទិន្នន័យឬអត់។
No certificate records found.

រូបភាពនេះគួរបង្ហាញពី Python Program អានទិន្នន័យពី certificates.csv ហើយបង្ហាញលទ្ធផលនៅក្នុង Console។ វាជួយឱ្យនិស្សិតយល់ថា CSV មិនត្រឹមតែរក្សាទុកទិន្នន័យទេ ប៉ុន្តែអាចត្រូវបានអានត្រឡប់មកប្រើវិញក្នុងកម្មវិធី។
បង្កើត Function សម្រាប់ស្វែងរក Certificate Record តាម Certificate ID ពី CSV File។
def search_certificate(): create_csv_file() search_id = input("Enter Certificate ID to search: ") with open(CSV_FILE, "r", encoding="utf-8") as file: reader = csv.DictReader(file) for row in reader: if row["certificate_id"] == search_id: print("\nCertificate Found:") print("Certificate ID:", row["certificate_id"]) print("Student Name:", row["student_name"]) print("Program:", row["program"]) print("Certificate Title:", row["certificate_title"]) print("Issue Date:", row["issue_date"]) print("Status:", row["status"]) return print("Certificate not found.")
Function នេះធ្វើការស្វែងរកក្នុង CSV ដោយប្រើ Certificate ID។ បើរកឃើញ វាបង្ហាញព័ត៌មានវិញ្ញាបនបត្រ ហើយចេញពី Function ដោយ return។ បើ Loop ចប់ហើយមិនឃើញ Record វាបង្ហាញថា Certificate not found.

រូបភាពនេះគួរបង្ហាញអ្នកប្រើប្រាស់បញ្ចូល Certificate ID នៅ Console បន្ទាប់មកកម្មវិធីស្វែងរកក្នុង CSV File។ ប្រសិនបើ Certificate ID មានក្នុង File វាបង្ហាញ Record។ ប្រសិនបើមិនមាន វាបង្ហាញ Not Found។ មុខងារនេះជាមូលដ្ឋានសម្រាប់ Certificate Verification ក្នុង Final Project។
បង្កើតកម្មវិធី Console ពេញលេញសម្រាប់ Add, Show, Search និង Exit ដោយប្រើ CSV Storage។
import csv import os CSV_FILE = "certificates.csv" fieldnames = [ "certificate_id", "student_name", "program", "certificate_title", "issue_date", "status" ] def create_csv_file(): if not os.path.exists(CSV_FILE): with open(CSV_FILE, "w", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() def show_menu(): print("\n=== Certificate CSV Manager ===") print("1. Add Certificate") print("2. Show All Certificates") print("3. Search Certificate") print("4. Exit") def add_certificate(): create_csv_file() certificate = { "certificate_id": input("Certificate ID: "), "student_name": input("Student Name: "), "program": input("Program: "), "certificate_title": input("Certificate Title: "), "issue_date": input("Issue Date: "), "status": input("Status Valid/Invalid/Revoked: ") } with open(CSV_FILE, "a", newline="", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writerow(certificate) print("Certificate saved to CSV successfully.") def show_all_certificates(): create_csv_file() with open(CSV_FILE, "r", encoding="utf-8") as file: reader = csv.DictReader(file) print("\n=== All Certificates ===") found = False for row in reader: found = True print("-----------------------------") print("Certificate ID:", row["certificate_id"]) print("Student Name:", row["student_name"]) print("Program:", row["program"]) print("Certificate Title:", row["certificate_title"]) print("Issue Date:", row["issue_date"]) print("Status:", row["status"]) if not found: print("No certificate records found.") def search_certificate(): create_csv_file() search_id = input("Enter Certificate ID to search: ") with open(CSV_FILE, "r", encoding="utf-8") as file: reader = csv.DictReader(file) for row in reader: if row["certificate_id"] == search_id: print("\nCertificate Found:") print("Certificate ID:", row["certificate_id"]) print("Student Name:", row["student_name"]) print("Program:", row["program"]) print("Certificate Title:", row["certificate_title"]) print("Issue Date:", row["issue_date"]) print("Status:", row["status"]) return print("Certificate not found.") while True: show_menu() choice = input("Choose option: ") if choice == "1": add_certificate() elif choice == "2": show_all_certificates() elif choice == "3": search_certificate() elif choice == "4": print("Goodbye!") break else: print("Invalid choice. Please try again.")
កម្មវិធីនេះជាជំហានសំខាន់ក្នុង Final Project ព្រោះវាមាន Console Menu និង CSV Storage។ វាអាចរក្សាទុក Certificate Records ទោះបីបិទកម្មវិធីក៏ដោយ។ នៅមេរៀនបន្ទាប់ យើងនឹងយក Certificate Record ពី CSV ទៅ Generate Hash ដើម្បីពិនិត្យ Data Integrity។

រូបភាពនេះគួរបង្ហាញ Console Menu ពេញលេញដែលភ្ជាប់ជាមួយ CSV Storage។ Menu មាន Add Certificate, Show All Certificates, Search Certificate និង Exit។ វាបង្ហាញថាកម្មវិធី Console អាចក្លាយជាប្រព័ន្ធគ្រប់គ្រងទិន្នន័យតូចមួយបាន មុនបន្តទៅ Hashing និង Blockchain។
នៅពេលធ្វើការជាមួយ File អាចមានកំហុសដូចជា៖
Python Documentation ពន្យល់ថា exception អាចបណ្តាលឱ្យកម្មវិធីបញ្ឈប់ ប្រសិនបើគ្មាន handler ត្រឹមត្រូវ ដូច្នេះការប្រើ try / except អាចជួយគ្រប់គ្រងកំហុសបាន [3]។
try / excepttry: with open("certificates.csv", "r", encoding="utf-8") as file: print("File opened successfully.") except FileNotFoundError: print("CSV file not found. Please create the file first.")
try គឺជាកន្លែងសាកល្បងដំណើរការកូដ។
except FileNotFoundError ចាប់កំហុសនៅពេល File មិនមាន។
ទិន្នន័យល្អមានសារៈសំខាន់ណាស់ ព្រោះនៅមេរៀនបន្ទាប់ យើងនឹងប្រើ Hashing។ ប្រសិនបើទិន្នន័យមាន space ឬ spelling ខុស Hash អាចខុសគ្នា។
| ចំណុច | ការពន្យល់ |
|---|---|
| Certificate ID មិនស្ទួន | Record នីមួយៗត្រូវមាន ID តែមួយ |
| Date format ត្រូវតែមួយ | ឧទាហរណ៍ 2026-08-25 |
| Status ច្បាស់ | Valid, Invalid ឬ Revoked |
| Field names មិនប្ដូរ | បើប្ដូរ Field Name កូដអាច Error |
| Encoding UTF-8 | ជួយរក្សាទុកអក្សរបានត្រឹមត្រូវ |
| មិនទុក Field សំខាន់ឱ្យទទេ | Certificate ID និង Student Name មិនគួរទទេ |
គ្រូអាចប្រើសំណួរខាងក្រោម៖
សរសេរចម្លើយខ្លី ៥–៧ បន្ទាត់៖
ហេតុអ្វី CSV File Storage ជាជំហានសំខាន់មុនពេលបន្តទៅ Hashing និង Blockchain?
ចម្លើយគួររួមបញ្ចូលគំនិត៖
សរសេរកម្មវិធី Python ដើម្បីបង្កើត certificates.csv ដែលមាន Header ខាងក្រោម៖
certificate_id,student_name,program,certificate_title,issue_date,status
សរសេរ Function add_certificate() ដែលទទួលទិន្នន័យពីអ្នកប្រើប្រាស់ ហើយ Save ទៅ CSV។
សរសេរ Function show_all_certificates() ដើម្បីអាន និងបង្ហាញ Records ទាំងអស់ពី CSV។
សរសេរ Function search_certificate() ដើម្បីស្វែងរក Certificate តាម certificate_id។
បង្កើត Menu ដែលមានជម្រើស៖
1. Add Certificate 2. Show All Certificates 3. Search Certificate 4. Exit
នៅពេលបញ្ចូល Status អនុញ្ញាតតែតម្លៃ៖
Valid Invalid Revoked
បើអ្នកប្រើប្រាស់បញ្ចូលតម្លៃផ្សេង ត្រូវបង្ហាញសារ៖
Invalid status. Please enter Valid, Invalid, or Revoked.
បង្កើត Certificate Records ចំនួន ១០ ក្នុង CSV File ដោយប្រើទិន្នន័យសាកល្បង។
បង្កើតកម្មវិធី Python Console មួយឈ្មោះ៖
certificate_csv_manager.py
កម្មវិធីត្រូវមាន៖
create_csv_file()
show_menu()
add_certificate()
show_all_certificates()
search_certificate()
exit
certificates.csv
បន្ទាប់ពីបញ្ចប់មេរៀនទី៣ និស្សិតគួរមាន៖
csv.DictWriter ដើម្បីសរសេរទិន្នន័យ។
csv.DictReader ដើម្បីអានទិន្នន័យ។
មេរៀននេះជាជំហានប្ដូរពី Memory Storage ទៅ File Storage។ នៅមេរៀនទី២ ទិន្នន័យនៅក្នុង List បាត់បង់នៅពេលកម្មវិធីបិទ។ នៅមេរៀនទី៣ CSV ជួយរក្សាទុកទិន្នន័យឱ្យនៅតែមាន។
គ្សូមពិនិត្យមើល certificates.csv ក្នុង Excel ឬ Text Editor ដើម្បីឱ្យពួកគេយល់ថា Python កំពុងសរសេរទិន្នន័យទៅក្នុង File ពិតប្រាកដ។ គ្រូក៏គួរបញ្ជាក់ថា CSV មិនមែនជាប្រព័ន្ធ Database ពេញលេញទេ ប៉ុន្តែវាល្អសម្រាប់អ្នកចាប់ផ្ដើម និង Prototype។
| Figure | កន្លែងបញ្ចូល | គោលបំណង |
|---|---|---|
| Figure 1 | ផ្នែក ៣ | បង្ហាញលំហូរពី Console Input ទៅ CSV Storage |
| Figure 2 | ផ្នែក ៤.២ | បង្ហាញ Console Menu Structure |
| Figure 3 | ផ្នែក ៥.២ | បង្ហាញ CSV ជាតារាងរក្សាទុកទិន្នន័យ |
| Figure 4 | ផ្នែក ៧ | បង្ហាញការបង្កើត CSV File និង Header Row |
| Figure 5 | ផ្នែក ៩ | បង្ហាញការអាន Certificates ពី CSV |
| Figure 6 | ផ្នែក ១០ | បង្ហាញការស្វែងរក Certificate តាម ID ពី CSV |
| Figure 7 | ផ្នែក ១១ | បង្ហាញ Complete CSV Certificate Manager Menu |
[1] Python Software Foundation, “csv — CSV File Reading and Writing,” Python 3 Documentation, 2026.
[2] D. Yaga, P. Mell, N. Roby, and K. Scarfone, “Blockchain Technology Overview,” National Institute of Standards and Technology, NISTIR 8202, 2018, doi: 10.6028/NIST.IR.8202.
[3] Python Software Foundation, “8. Errors and Exceptions — Python 3 Documentation,” Python Documentation, 2026.
មតិយោបល់ 0