- ตัวดำเนินการ
-
เรียนรู้
ศูนย์การเรียนรู้ Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ ศูนย์การเรียนรู้ C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ ศูนย์การเรียนรู้ C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++
- โจทย์
โมเดลภาษาเลือก token ถัดไปจากการแจกแจงความน่าจะเป็น โดยมีการตั้งค่าสองอย่างที่กำหนดรูปร่างของมัน:
- 'Top-k: เก็บเฉพาะ k token ที่มี logit สูงที่สุด (ถ้า logit เท่ากัน index ที่น้อยกว่าอยู่อันดับสูงกว่า)'
- 'Temperature T: หาร logit ที่เก็บไว้ด้วย T ก่อน softmax ค่า T ต่ำทำให้การเลือกคาดเดาได้มากขึ้น ค่า T สูงทำให้สุ่มมากขึ้น'
เพื่อให้ทดสอบการสุ่มได้ จึงกำหนดตัวเลขสุ่มมาให้:
- เก็บ token ใน top-k และเรียงตาม index เดิม (จากน้อยไปมาก)
- คำนวณ softmax(logit / T) บน token ที่เก็บไว้ (ลบค่าที่มากที่สุดก่อนคำนวณ e^x)
- ไล่ตามรายการพร้อมบวกความน่าจะเป็นสะสม คืนค่า index ของ token แรกที่ผลรวมสะสมมากกว่า
random_valueถ้าไม่เกิดขึ้นเลย (จากการปัดเศษ) ให้คืน token สุดท้ายที่เก็บไว้
เมื่อ k = 1 จะเป็น greedy decoding: เลือก token ที่น่าจะเป็นมากที่สุดเสมอ
จง implement sample_token(logits, temperature, k, random_value)
อินพุต
logits: คะแนนหนึ่งค่าต่อ token ในคลังคำศัพท์
temperature: T ซึ่งมากกว่า 0
k: จำนวน token อันดับต้นที่จะเก็บไว้
random_value: ตัวเลขสุ่มใน [0, 1)
เอาต์พุต
คืนค่า index ของ token ที่ถูกเลือก
เงื่อนไข
1 ≤ k ≤ จำนวน logit ≤ 1,000
0 < temperature ≤ 100, 0 ≤ random_value < 1
-100 ≤ แต่ละ logit ≤ 100
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
k = 1
logits = [1.0, 3.0, 2.0, 0.5]
temperature = 1.0
random_value = 0.99
ผลลัพธ์ที่คาดหวัง:
1
คำอธิบาย
k = 1 เก็บเฉพาะ logit สูงสุด คือ 3.0 ที่ index 1 ความน่าจะเป็นของมันคือ 1 จึงถูกเลือกไม่ว่าตัวเลขสุ่มจะเป็นเท่าใด: greedy decoding
ตัวอย่างที่ 2
อินพุต:
k = 2
logits = [2.0, 1.0, 0.0]
temperature = 1.0
random_value = 0.8
ผลลัพธ์ที่คาดหวัง:
1
คำอธิบาย
Top-2 เก็บ index 0 และ 1 (logit 2 และ 1) softmax ได้ประมาณ 0.731 และ 0.269 ผลรวมสะสมเป็น 0.731 หลัง index 0 (ไม่เกิน 0.8) และเป็น 1 หลัง index 1 ดังนั้นจึงเลือก index 1
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
k = 1 logits = [1.0, 3.0, 2.0, 0.5] temperature = 1.0 random_value = 0.99ผลลัพธ์ที่คาดหวัง:1เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
k = 2 logits = [2.0, 1.0, 0.0] temperature = 1.0 random_value = 0.8ผลลัพธ์ที่คาดหวัง:1เอาต์พุตของคุณ
มี 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 และไลบรารีที่ติดตั้งแล้วได้