5: List Processing

5-7: List Sorting

** ถ้าใช้งานบนมือถือหรือ tablet แนะนำให้ใช้ Chrome หรือ Safari เท่านั้น **

แบบฝึกหัด 5-7 ข้อที่ 1

เขียนคำสั่งอ่านชื่อย่อธนาคารจากอินพุตซึ่งเป็นรายการของชื่อคั่นด้วยช่องว่าง เช่น SCB BBL KBANK นำมาเก็บแบบลิสต์ในตัวแปรชื่อ banks โดยเก็บเรียงจากซ้ายไปขวาในลิสต์ ตามลำดับพจนานุกรม

___inp___ = ["KTB BBL SCB KBANK TMB"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t banks = input().split() banks.sort() Ex().check_object("banks", missing_msg="ไม่มีตัวแปรชื่อ banks").has_equal_value(incorrect_msg = "ยังเรียงลำดับไม่ถูกต้อง")
input().split() เข้ามาเก็บ แล้วตามด้วย sort()
แบบฝึกหัด 5-7 ข้อที่ 2

เขียนคำสั่งอ่านเลขท้ายสามตัวของสลากกินแบ่งที่ถูกรางวัลจากอินพุต เช่น 323 434 028 นำมาเก็บแบบลิสต์ในตัวแปรชื่อ last3 โดยเก็บจากซ้ายไปขวาในลิสต์ เรียงจากมากไปน้อย

___inp___ = ["394 392 182 405 093"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t last3 = input().split() last3.sort() last3 = last3[::-1] Ex().check_object("last3", missing_msg="ไม่มีตัวแปรชื่อ last3").has_equal_value(incorrect_msg = "ยังเรียงลำดับไม่ถูกต้อง")
ควรเก็บเป็นลิสต์ของสตริง (เพราะเลขท้ายสามตัวอาจมี 0 นำหน้า)
แบบฝึกหัด 5-7 ข้อที่ 3

เขียนคำสั่งอ่านชื่อย่อธนาคารและราคาหุ้นจากอินพุตในรูปแบบดังตัวอย่าง SCB=132.0, BBL=176.5, KBANK=172.0 เพื่อแสดงชื่อธนาคารกับราคาหุ้น (คั่นด้วยช่องว่าง) บรรทัดละธนาคาร เรียงตามชื่อธนาคาร ตามพจนานุกรม

___inp___ = ["KTB=18.9, BBL=176.5, SCB=132.0, KBANK=172.0, TMB=1.8"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t banks = [] t = input().split(", ") for e in t: banks.append(e.split("=")) banks.sort() for name,q in banks: print(name,q) Ex().has_equal_output(incorrect_msg = "ผลลัพธ์ไม่ถูกต้อง")
split(", ") ก่อนแล้วค่อย split("=") เพื่อสร้างลิสต์ที่ภายในประกอบด้วยลิสต์ย่อย [ชื่อ, ราคา]
แบบฝึกหัด 5-7 ข้อที่ 4

เขียนคำสั่งอ่านชื่อย่อธนาคารและราคาหุ้นจากอินพุตในรูปแบบดังตัวอย่าง SCB=132.0, BBL=176.5, KBANK=172.0 เพื่อมาประมวลผลและแสดงชื่อธนาคาร บรรทัดละชื่อ จากชื่อที่มีราคาหุ้นมากสุดมาน้อยสุด

___inp___ = ["KTB=18.9, BBL=176.5, SCB=132.0, KBANK=172.0, TMB=1.8"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t quotes = [] t = input().split(", ") for e in t: name,q = e.split("=") quotes.append([float(q),name]) quotes.sort() for q,name in quotes[::-1]: print(name) Ex().has_equal_output(incorrect_msg = "ผลลัพธ์ไม่ถูกต้อง")
split(", ") ก่อนแล้วค่อย split("=") เพื่อสร้างลิสต์ที่ภายในประกอบด้วยลิสต์ย่อย [ราคา, ชื่อ] อย่าลืมแปลงให้ราคาเป็น float ด้วย