Programming Basics
พื้นฐานการเขียนโปรแกรม
เริ่ม Python ด้วยโปรแกรมเล็กที่อ่านออกว่าแต่ละบรรทัดทำอะไร แล้วค่อยเพิ่มเงื่อนไขและงานซ้ำ
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
- OS
- ระบบปฏิบัติการ จัดการทรัพยากรและให้บริการกับโปรแกรม
- VM
- เครื่องเสมือนที่รัน guest OS บนทรัพยากรที่ hypervisor จัดให้
Python ทำตามลำดับ โดยชื่ออ้างค่าที่ใช้งาน
Interpreter ประมวลโค้ดตามกติกาภาษา ชื่อ variable ใน Python ผูกกับ object ไม่ใช่กล่องฮาร์ดแวร์ที่มีชนิดคงที่ตลอดเวลา Object มีชนิด เช่น int str bool list ที่กำหนดการกระทำได้ การเลือกเงื่อนไขและวนซ้ำทำให้ขั้นตอนตอบกับข้อมูลต่างชุดได้
- Environment
เลือก Python และ dependencies ที่โค้ดต้องใช้ Virtual environment แยกชุดแพ็กเกจ ไม่ใช่ VM ทั้ง OS
- Assignment
x = 2 ผูกชื่อ x กับค่าจำนวนเต็ม การใช้ x ไม่ใส่ quotes ส่วน 'x' เป็นข้อความ
- Condition
if เลือกทางจากผลตรรกะ เปรียบเทียบชนิดและค่าตามเจตนา
- Loop
for เดินผ่านรายการ while ทำซ้ำตามเงื่อนไข ต้องรู้เมื่อใดจะหยุด
- Result
แสดงหรือส่งคืนผล print ไม่ใช่การบันทึกไฟล์ และไม่ใช่ return ของฟังก์ชัน
| Expression Python | ผล | เหตุผล |
|---|---|---|
| 2 + 3 | 5 | int บวกจำนวน |
| '2' + '3' | '23' | str ต่อข้อความ |
| int('2') + 3 | 5 | แปลงข้อความที่ถูกต้องก่อนบวก |
| int('two') | ValueError | ข้อมูลไม่ตรงรูปแบบจำนวน |
| print(5) | แสดง 5 · คืน None | แสดงผลไม่ใช่ return ค่าจำนวน |
Assignment ผูกชื่อกับ object ตามกติกา Python ชนิดเป็นคุณสมบัติของ object ไม่ได้เกิดจากนามสกุลไฟล์หรือชื่อ variable
2 + 3 ได้ 5 แต่ '2' + '3' ได้ '23' เพราะเป็นการต่อข้อความ การแปลงชนิดอาจล้มเหลวหากข้อมูลไม่ตรงรูปแบบ ชื่อเดียวกันอาจผูกค่าใหม่ได้ แต่การเปลี่ยน object ที่หลายชื่ออ้างร่วมกันมีผลต่างจากการผูกชื่อใหม่
สภาพแวดล้อมและสคริปต์Python Environment and Scripts · 13.1.1
Environment กำหนด interpreter และส่วนที่ใช้ Script คือไฟล์คำสั่งที่นำไปรัน
Python interpreter อ่านและรันโปรแกรม Environment ระบุ interpreter และ libraries ที่ใช้ Virtual environment แยก dependency ของโครงการจากระบบเพื่อให้ติดตั้งและทำซ้ำได้
ตัวรันภาษา
ชุด library ที่ใช้
ไฟล์คำสั่งที่ประมวลผล
python script.py ใช้ interpreter ที่คำสั่งนั้นชี้ หาก import ไม่ได้ให้ตรวจ interpreter และ environment ไม่ติดตั้ง package ทุกแห่งแบบเดา เก็บ dependency ที่ทราบรุ่นและไฟล์โครงการไว้ด้วย
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonReading: Python environmentsCY7.M1.R4
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: Create a basic Python scriptCY7.M1.V5
ตัวแปรและชนิดข้อมูลVariables and Data Types · 13.1.2
ตัวแปรอ้างถึงค่า ชนิดข้อมูลกำหนดการทำงาน เช่น บวกตัวเลขกับต่อข้อความ
Variable เป็นชื่ออ้าง object ชนิดข้อมูลกำหนดการทำงาน เช่น int, float, str, bool, list และ dict การแปลงชนิดต้องรู้รูปแบบต้นทาง Input จากไฟล์หรือผู้ใช้มักเป็นข้อความแม้ดูเหมือนตัวเลข
ชื่อที่อ้าง object
ชนิดและพฤติกรรมของค่า
การตีความค่าเป็นชนิดใหม่
"10" + "2" ได้ "102" ส่วน 10 + 2 ได้ 12 ตรวจค่าก่อน int(...) เพราะข้อความผิดรูปแบบทำให้เกิด exception ความเข้าใจชนิดช่วยไม่เปรียบเทียบจำนวนแบบตัวอักษร
Aliasing versus Rebinding (แชร์ object กับเปลี่ยนชื่ออ้างอิง)
ถ้า a = [1] แล้ว b = a สองชื่ออ้าง list เดียวกัน เมื่อ a.append(2) b ก็เห็น [1, 2] เพราะ object ถูกเปลี่ยน แต่ถ้าทำ a = [9] จะผูก a ไป list ใหม่ ส่วน b ยังอ้าง list เดิม นี่คือเหตุที่การ copy ชื่อกับ copy ข้อมูลไม่เหมือนกัน
ชนิด mutable เช่น list เปลี่ยนเนื้อหาได้ ส่วน string ทำงานโดยสร้างค่าใหม่ตาม operation การส่ง object เข้า function จึงต้องรู้ว่าฟังก์ชันแก้ object นั้นหรือคืนค่าใหม่ ไม่ถือว่า parameter ทุกตัวเป็นสำเนาข้อมูลอิสระ
| ขั้น | a | b |
|---|---|---|
| a = [1]; b = a | [1] | [1] object เดียวกัน |
| a.append(2) | [1, 2] | [1, 2] |
| a = [9] | [9] object ใหม่ | [1, 2] object เดิม |
text = "10"
number = int(text)
print(text + "2")
print(number + 2)บรรทัดแรกที่พิมพ์ได้ 102 เพราะต่อข้อความ ส่วนบรรทัดสองได้ 12 เพราะบวกจำนวน ถ้า text ไม่ใช่รูปแบบจำนวน int จะเกิด ValueError ที่ต้องจัดการตามงาน
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: Data types in PythonCY7.M1.V7
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: Work with variables in PythonCY7.M1.V8
เงื่อนไขและลูปConditions and Loops · 13.1.3
if เลือกทางทำงาน loop ทำงานซ้ำ ต้องรู้เงื่อนไขหยุดและข้อมูลแต่ละรอบ
if เลือกทางตามเงื่อนไข for เดินผ่าน iterable while ทำซ้ำเมื่อเงื่อนไขยังจริง Indentation เป็นส่วนของไวยากรณ์ ต้องมีเงื่อนไขจบและเข้าใจว่าแต่ละรอบเปลี่ยนค่าอะไร
เงื่อนไขเลือกการทำงาน
ทำกับแต่ละรายการ
เงื่อนไขหยุด
วนรายการ login แล้วนับรายการ failed ด้วย if ด้านใน for หาก while ไม่เปลี่ยนค่าที่ทำให้เงื่อนไขจบอาจวนไม่สิ้นสุด break จบ loop ส่วน continue ข้ามไป iteration ถัดไป
statuses = ["failed", "success", "failed"]
count = 0
for status in statuses:
if status == "failed":
count += 1
print(count)รอบแรก count เป็น 1 รอบสองไม่เพิ่ม รอบสามเป็น 2 ค่าท้ายที่พิมพ์คือ 2 Indentation ทำให้ if อยู่ใน loop และ print อยู่หลัง loop นี่คือการนับรายการไม่ใช่ข้อสรุปว่ามีการโจมตี
ที่มาของหัวข้อนี้ · 3 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: Conditional statements in PythonCY7.M1.V9
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: For loopsCY7.M1.V10
- Automate Cybersecurity Tasks with Python · Module 1: Introduction to PythonVideo: While loopsCY7.M1.V11
เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม
นำศัพท์มาเชื่อมกับงาน
เก็บจำนวนการล็อกอินล้มเหลวในตัวแปร แล้วใช้ if ตัดสินใจว่าจะบันทึกข้อความอะไร
สิ่งที่บทนี้เชื่อมไว้
เริ่ม Python ด้วยโปรแกรมเล็กที่อ่านออกว่าแต่ละบรรทัดทำอะไร แล้วค่อยเพิ่มเงื่อนไขและงานซ้ำ
ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน
คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้