- ตัวดำเนินการ
-
เรียนรู้
ศูนย์การเรียนรู้ Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ ศูนย์การเรียนรู้ C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ ศูนย์การเรียนรู้ C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++
- โจทย์
ห่วงโซ่มาร์คอฟ เปลี่ยนสถานะแบบสุ่ม และสถานะถัดไปขึ้นกับสถานะปัจจุบันเท่านั้น transition[i][j] คือความน่าจะเป็นที่จะย้ายจากสถานะ i ไปสถานะ j ดังนั้นผลรวมของแต่ละแถวเท่ากับ 1
ถ้า p คือความน่าจะเป็นที่จะอยู่ในแต่ละสถานะตอนนี้ การแจกแจงหลังจากหนึ่งก้าวคือ:
p_next[j] = Σ เหนือ i ของ p[i] × transition[i][j]
จง implement markov_distribution(transition, start, steps) และใช้การอัปเดตนี้ steps ครั้ง
อินพุต
transition: เมทริกซ์ n × n ที่ผลรวมแต่ละแถวเท่ากับ 1
start: การแจกแจงเริ่มต้น (n ค่าที่รวมกันได้ 1)
steps: จำนวนก้าวที่จะเดิน
เอาต์พุต
คืนการแจกแจงหลังจาก steps ก้าว
เงื่อนไข
1 ≤ n ≤ 50, 0 ≤ steps ≤ 1,000
0 ≤ แต่ละความน่าจะเป็น ≤ 1
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
start = [1.0, 0.0]
steps = 2
transition = [
[0.9, 0.1],
[0.5, 0.5]
]
ผลลัพธ์ที่คาดหวัง:
[0.86, 0.14]
คำอธิบาย
ลองนึกถึงวันแดดออก (0) และวันฝนตก (1) โดยเริ่มจากวันแดดออก หลังหนึ่งก้าว: [0.9, 0.1] หลังสองก้าว: แดดออก = 0.9 × 0.9 + 0.1 × 0.5 = 0.86 และฝนตก = 0.9 × 0.1 + 0.1 × 0.5 = 0.14
ตัวอย่างที่ 2
อินพุต:
start = [0.25, 0.75]
steps = 3
transition = [
[0.0, 1.0],
[1.0, 0.0]
]
ผลลัพธ์ที่คาดหวัง:
[0.75, 0.25]
คำอธิบาย
ห่วงโซ่นี้เปลี่ยนสถานะทุกครั้ง แต่ละก้าวจึงสลับความน่าจะเป็นทั้งสองค่า หลังสลับ 3 ครั้ง: [0.75, 0.25]
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
start = [1.0, 0.0] steps = 2 transition = [ [0.9, 0.1], [0.5, 0.5] ]ผลลัพธ์ที่คาดหวัง:[0.86, 0.14]เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
start = [0.25, 0.75] steps = 3 transition = [ [0.0, 1.0], [1.0, 0.0] ]ผลลัพธ์ที่คาดหวัง:[0.75, 0.25]เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ
คอมไพเลอร์และดีบักเกอร์ Python ออนไลน์
เขียน รัน และดีบัก Python ออนไลน์ ใช้ breakpoint และการทำงานทีละขั้นในโหมดเซิร์ฟเวอร์ได้โดยไม่ต้องติดตั้ง
🚀 4,279,640 การดำเนินการทั้งหมด (40 ในเดือนนี้)
ฝึก Python ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
🐍 เกี่ยวกับตัวรัน Python ออนไลน์นี้
CodeUtility Python Executor ให้คุณเขียน รัน และทดสอบโค้ด Python ได้โดยตรงบนเบราว์เซอร์ของคุณ - ไม่ต้องตั้งค่าหรือทำการติดตั้งใด ๆ ใช้งานบนแซนด์บ็อกซ์ที่ปลอดภัยซึ่งรองรับเวอร์ชัน Python จริง ตั้งแต่ 3.10 ถึง 3.13
ไม่ว่าคุณจะเรียนรู้ Python เป็นครั้งแรก ทดสอบโค้ดสั้น ๆ หรือดีบั๊กลอจิก เครื่องมือนี้มอบสภาพแวดล้อมการเขียนโค้ดที่รวดเร็วและไร้สิ่งรบกวน คุณสามารถทดลองได้อย่างอิสระและเห็นผลลัพธ์ทันทีในคอนโซลที่มีมาให้
เหมาะกับผู้เริ่มต้น นักศึกษา และนักพัฒนาที่ต้องการ IDE ออนไลน์แบบเบา ๆ สำหรับฝึก Python หรือสร้างโปรโตไทป์อย่างรวดเร็ว
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 พื้นฐาน Python และตัวอย่างที่คุณลองได้ด้านบน
1. การประกาศตัวแปรและค่าคงที่
Python เป็นภาษาที่กำหนดชนิดแบบไดนามิก จึงไม่ต้องประกาศชนิดข้อมูลล่วงหน้า ไม่มีคีย์เวิร์ดสำหรับค่าคงที่โดยตรง แต่ตามธรรมเนียมจะเขียนค่าคงที่ด้วยตัวพิมพ์ใหญ่ทั้งหมด
# ตัวแปร
x = 10
pi = 3.14
name = "Alice"
is_active = True
# ค่าคงที่ (ตามธรรมเนียม)
MAX_USERS = 100
APP_NAME = "CodeUtility"
# ค่าคงที่ยังสามารถถูกกำหนดค่าใหม่ได้ (ไม่ได้บังคับ)
MAX_USERS = 200 # ⚠️ ทำได้ในทางเทคนิค แต่ไม่แนะนำ
2. เงื่อนไข
ควบคุมลอจิกด้วยบล็อก if, elif, และ else ใน Python 3.10+ คุณยังสามารถใช้ match-case เป็นทางเลือกแทน switch-case ได้
# รูปแบบดั้งเดิม if-elif-else
x = 2
if x == 1:
print("หนึ่ง")
elif x == 2:
print("สอง")
else:
print("อื่น ๆ")
ทางเลือก: match-case (Python 3.10+)
# ต้องใช้ Python 3.10+
x = 2
match x:
case 1:
print("หนึ่ง")
case 2:
print("สอง")
case _:
print("อื่น ๆ")
3. ลูป
for ใช้สำหรับวนผ่านลำดับข้อมูล ส่วน while จะทำงานตราบใดที่เงื่อนไขเป็นจริง
for i in range(3):
print(i)
count = 3
while count > 0:
print(count)
count -= 1
4. ลิสต์
ลิสต์เป็นคอลเลกชันที่มีลำดับและแก้ไขได้ คุณสามารถเข้าถึงสมาชิกด้วยดัชนี
fruits = ["apple", "banana"]
print(fruits[0])
print(len(fruits))
5. การจัดการลิสต์
เพิ่ม ลบ สไลซ์ และกลับลิสต์ได้ List comprehension ช่วยให้เขียนการวนซ้ำได้อย่างกระชับ
fruits.append("cherry")
fruits.insert(1, "kiwi")
fruits.remove("banana")
fruits.pop()
print(fruits[1:3])
print(fruits[::-1])
squares = [x*x for x in range(5)]
6. อินพุต/เอาต์พุตคอนโซล
ใช้ input() เพื่อรับค่าจากผู้ใช้ และ print() เพื่อแสดงผลลัพธ์
คุณสามารถพิมพ์หลายบรรทัดได้โดยใช้ \n (ตัวอักขรขึ้นบรรทัดใหม่) หรือเรียก print() หลายครั้ง
# รับอินพุต
name = input("กรอกชื่อของคุณ: ")
print("สวัสดี", name)
# พิมพ์หลายบรรทัด
print("บรรทัด 1\nบรรทัด 2\nบรรทัด 3")
# หรือใช้ print หลายครั้ง
print("บรรทัด A")
print("บรรทัด B")
print("บรรทัด C")
7. ฟังก์ชัน
ฟังก์ชันช่วยจัดระเบียบโค้ดและนำกลับมาใช้ซ้ำได้ ใช้พารามิเตอร์และค่าที่ส่งกลับ
def greet(name):
return "สวัสดี " + name
print(greet("Alice"))
8. ดิกชันนารี
เก็บข้อมูลแบบคู่คีย์-ค่า คีย์จะไม่ซ้ำกัน และสามารถเข้าถึงค่าได้ผ่านคีย์
person = {"name": "Bob", "age": 25}
print(person["name"])
print(person.get("email", "ไม่ได้ระบุ"))
9. การจัดการข้อยกเว้น
ใช้ try และ except เพื่อดักและจัดการข้อผิดพลาดอย่างเหมาะสม
try:
x = 1 / 0
except ZeroDivisionError:
print("ไม่สามารถหารด้วยศูนย์ได้")
10. การทำงานกับไฟล์ (File I/O)
อ่านและเขียนไฟล์ด้วย open()
with open("data.txt", "w") as f:
f.write("สวัสดีโลก")
with open("data.txt", "r") as f:
print(f.read())
11. การจัดการสตริง
สตริงของ Python มีเมธอดที่ทรงพลัง เช่น strip(), replace(), และ split()
text = " สวัสดี โลก "
print(text.strip())
print(text.upper())
print(text.replace("สวัสดี", "ไฮ"))
print(text.split())
12. คลาสและอ็อบเจ็กต์
กำหนดพิมพ์เขียวที่นำกลับมาใช้ซ้ำได้ด้วยคลาส ใช้ __init__ เพื่อเริ่มต้นอ็อบเจ็กต์
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "สวัสดี ฉันชื่อ " + self.name
p = Person("Alice")
print(p.greet())
🐞 วิธีดีบักโค้ด Python ออนไลน์
ใช้ดีบักเกอร์ Python ออนไลน์เพื่อค้นหาข้อผิดพลาดทางตรรกะโดยไม่ต้องติดตั้ง Python หรือ IDE การดีบักทำงานด้วย Python 3.10–3.13 ในโหมดเซิร์ฟเวอร์
- เลือกเวอร์ชัน Python ที่ทำงานบนเซิร์ฟเวอร์
- คลิกข้างหมายเลขบรรทัดเพื่อตั้ง breakpoint
- เลือก Debug เพื่อเริ่มโปรแกรมและหยุดที่ breakpoint แรก
- ตรวจสอบบรรทัดและตัวแปร แล้วใช้ Continue, Step Over, Step Into หรือ Step Out
- เลือก Stop เพื่อจบการดีบัก
เริ่มจากตัวอย่างขนาดเล็กที่ทำให้เกิดปัญหาได้ และตั้ง breakpoint ก่อนค่าจะผิดจากที่คาดไว้ โหมดเซิร์ฟเวอร์ยังใช้ไฟล์ใน workspace และไลบรารีที่ติดตั้งแล้วได้