5: List Processing

5-8: Split & Join

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

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

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

___inp___ = ["KTB BBL SCB KBANK TMB"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t t = input().split() print(", ".join(t)) Ex().has_equal_output(incorrect_msg = "ผลลัพธ์ไม่ตรงตามโจทย์")
split() แล้วนำมา join ใช้ ", " เป็นตัวคั่น
แบบฝึกหัด 5-8 ข้อที่ 2

เขียนคำสั่งอ่านรายการของจำนวนเต็มจากอินพุต แต่ละจำนวนคั่นด้วยช่องว่าง มาเพิ่มค่าจำนวนละอีก 1 แล้วเก็บผลลัพธ์เป็นสตริงในตัวแปรชื่อ output เช่น รับ 10 20 30 จะได้ output เป็น "11 21 31"

___inp___ = ["10 99 199 39 20"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t x = input().split() y = [] for e in x: y.append(str(int(e)+1)) output = " ".join(y) Ex().check_object("output", missing_msg="ไม่มีตัวแปร output").\ has_equal_value(incorrect_msg = "output ไม่ได้เก็บสตริงตามที่โจทย์กำหนด")
แบบฝึกหัด 5-8 ข้อที่ 3

โปรแกรมที่ข้างล่างนี้ รับจำนวนเต็มจากอินพุต แล้วแสดงตัวประกอบทั้งหมด โดยแสดงบรรทัดละตัว (ลอง run ดู โดยระบบจะป้อนอินพุตให้อัตโนมัติด้วยค่า 8568) จงเปลี่ยนโปรแกรมนี้ให้ตัวประกอบในบรรทัดเดียวกันโดยมีตัว x คั่น เช่น เมื่ออินพุตเป็น 8568 จะแสดง 2x2x2x3x3x7x17

___inp___ = ["8568"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t n = int(input()) # กด run จะได้ค่า n เป็น 8568 k = 2 while k <= n: if n%k == 0: print(k) n //= k else: k += 1 n = int(input()) k = 2 f = [] while k <= n: if n%k == 0: f.append(str(k)) n //= k else: k += 1 print("x".join(f)) for v in ['8568', '17', '5491']: Ex().has_equal_output(pre_code = "___inp___[0] ='"+v+"'", incorrect_msg = "ผิด เช่น กรณีอินพุตเป็น " + v)
ใช้ลิสต์หนึ่งเก็บผลลัพธ์ แล้วค่อยมา join ด้วย x ตอนออกจากวงวน (อย่าลืมว่า join ใช้กับลิสต์ที่เก็บสตริงเท่านั้น)