5: List Processing

5-6: List Searching

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

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

โปรแกรมข้างล่างนี้อ่านชื่อย่อจังหวัด ไทยกับอังกฤษ คั่นด้วยช่องว่าง เช่น BKK กทม CMI ชม KBI กบ นำมาสร้างเป็นลิสต์ eng = ["BKK", "CMI", "KBI"] กับลิสต์ th = ["กทม", "ชม", "กบ"] จงเขียนคำสั่งต่อที่อ่านชื่อย่อจังหวัดจากอินพุต ถ้าเป็นชื่อย่อไทย ก็แสดงชื่อย่ออังกฤษ ถ้าเป็นชื่อย่ออังกฤษก็แสดงชื่อย่อไทย ถ้าไม่ใช่ทั้งสอง ก็แสดง Not found

___inp___ = ["CBI ชบ BKK กทม CMI ชม KBI กบ KNN ขก", "CMI"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t x = input().split() eng = x[::2] th = x[1::2] q = input() x = input().split() eng = x[::2] th = x[1::2] q = input() if q in eng: i = eng.index(q) print(th[i]) elif q in th: i = th.index(q) print(eng[i]) else: print("Not found") for v in ['CBI', 'ชบ', 'KNN', 'ขก']: Ex().has_equal_output(pre_code = "___inp___[1] = '" + v + "'", incorrect_msg = "ยังผิด กรณีหาชื่อย่อที่มีอยู่ เช่น ค้น " + v) for v in ['XYZ', 'ฮฮ']: Ex().has_equal_output(pre_code = "___inp___[1] = '" + v + "'", incorrect_msg = "ยังผิด กรณีหาชื่อย่อที่ไม่มี เช่น ค้น " + v)
ค้นใน eng ถ้าไม่มีก็คืนใน th ถ้าไม่มีก็แสดง Not found ถ้ามีในลิสต์ใดก็หาตำแหน่งด้วย index แล้วนำตำแหน่งที่ได้ไปหยิบจากอีกลิสต์
แบบฝึกหัด 5-6 ข้อที่ 2

โปรแกรมข้างล่างนี้อ่านชื่อย่อจังหวัด ไทยกับอังกฤษ คั่นด้วยช่องว่าง เช่น BKK กทม CMI ชม KBI กบ นำมาสร้างเป็นลิสต์ abbr = [["BKK","กทม"], ["CMI","ชม"], ["KBI","กบ"]] จงเขียนคำสั่งต่อที่อ่านชื่อย่อจังหวัดจากอินพุต ถ้าเป็นชื่อย่อไทย ก็แสดงชื่อย่ออังกฤษ ถ้าเป็นชื่อย่ออังกฤษก็แสดงชื่อย่อไทย ถ้าไม่ใช่ทั้งสอง ก็แสดง Not found

___inp___ = ["CBI ชบ BKK กทม CMI ชม KBI กบ KNN ขก", "CMI"] def input(): t = ___inp___.pop(0) ___inp___.append(t) return t x = input().split() abbr = [] for i in range(0,len(x),2): abbr.append([x[i],x[i+1]]) q = input() x = input().split() abbr = [] for i in range(0,len(x),2): abbr.append([x[i],x[i+1]]) q = input() found = False for e,t in abbr: if q == t: print(e) found = True elif q == e: print(t) found = True if not found: print("Not found") for v in ['CBI', 'ชบ', 'KNN', 'ขก']: Ex().has_equal_output(pre_code = "___inp___[1] = '" + v + "'", incorrect_msg = "ยังผิด กรณีหาชื่อย่อที่มีอยู่ เช่น ค้น " + v) for v in ['XYZ', 'ฮฮ']: Ex().has_equal_output(pre_code = "___inp___[1] = '" + v + "'", incorrect_msg = "ยังผิด กรณีหาชื่อย่อที่ไม่มี เช่น ค้น " + v)
การค้นต้องใช้วงวน for ค่อย ๆ ดูทีละลิสต์ย่อยภายใน abbr ว่าตรงกับ q หรือไม่ ถ้าวนครบทุกช่องแล้วไม่พบ จึงสรุปว่่าไม่พบ