เขียนตอบแต่ละข้อเริ่มด้วยเลขข้อในรูปแบบ <เลขข้อ> เช่น
<1> E
<2>
<3> B
และอย่าลืมกด SUBMIT ด้วย (ส่งได้หลายครั้ง จะตรวจครั้งล่าสุด)

<1>
ข้อใดตั้งเป็นชื่อฟังก์ชันได้

A) ___________ (****)
B) __-__-__-__
C) ._._._._._.
D) 2_3_4_5_6_7
E) ไม่มีข้อใดถูก
<1>
ข้อใดตั้งเป็นชื่อฟังก์ชันได้

A) _o_o_ (****)
B) o-o-o
C) $_$_$
D) 1a2b3
E) ไม่มีข้อใดถูก
<2>
ข้อใดตั้งเป็นชื่อตัวแปรไม่ได้

A) for (****)
B) print
C) math
D) input
E) ตั้งเป็นชื่อไม่ได้หลายข้อ
<2>
ข้อใดตั้งเป็นชื่อตัวแปรไม่ได้

A) while (****)
B) sum
C) abs
D) pow
E) ตั้งเป็นชื่อไม่ได้หลายข้อ
<2>
ข้อใดตั้งเป็นชื่อตัวแปรไม่ได้

A) False (****)
B) Null
C) numpy
D) self
E) ตั้งเป็นชื่อไม่ได้หลายข้อ
<2>
ข้อใดตั้งเป็นชื่อตัวแปรไม่ได้

A) True (****)
B) No
C) np
D) self
E) ตั้งเป็นชื่อไม่ได้หลายข้อ
<3>
ข้อใดมีค่าไม่ใกล้เคียงรากที่สองของ 100

A) math.sqrt(100)
B) 100 ** 1/2  (****)
C) pow(100, 0.5)
D) 100 // 10
E) ใกล้เคียงทุกข้อ
<3>
ข้อใดมีค่าไม่ใกล้เคียงรากที่สองของ 400

A) math.sqrt(400)
B) 400 ** 1/2  (****)
C) pow(400, 0.5)
D) 200 // 10
E) ใกล้เคียงทุกข้อ
<3>
ข้อใดมีค่าไม่ใกล้เคียงรากที่สองของ 81

A) math.sqrt(81)
B) 81 ** 1/2  (****)
C) pow(81, 0.5)
D) 192 / 2
E) ใกล้เคียงทุกข้อ
<4>
ข้อใดทำงานแล้วจะวนในวงวนไม่สิ้นสุด

A) a = 227
   while a != 0:
     a //= 2
B) a = 227
   while a != 0:
     a -= 1
C) a = 227
   while a != 0:
     a %= 11     (****)
D) มีข้อที่ทำงานแล้วติดในวงวน 2 ข้อ 
E) ทุกข้อทำงานได้ไม่ติดในวงวน
<4>
ข้อใดทำงานแล้วจะวนในวงวนไม่สิ้นสุด

A) a = 232
   while a != 0:
     a //= 7
B) a = 232
   while a != 0:
     a -= 1
C) a = 232
   while a != 0:
     a %= 13     (****)
D) มีข้อที่ทำงานแล้วติดในวงวน 2 ข้อ 
E) ทุกข้อทำงานได้ไม่ติดในวงวน
<4>
ข้อใดทำงานแล้วจะวนในวงวนไม่สิ้นสุด

A) a = 132
   while a != 0:
     a //= 3
B) a = 132
   while a != 0:
     a -= 1
C) a = 132
   while a != 0:
     a %= 11
D) มีข้อที่ทำงานแล้วติดในวงวน 2 ข้อ 
E) ทุกข้อทำงานได้ไม่ติดในวงวน  (****)
<4>
ข้อใดทำงานแล้วจะวนในวงวนไม่สิ้นสุด

A) a = 169
   while a != 0:
     a //= 5
B) a = 169
   while a != 0:
     a -= 2  (****)
C) a = 169
   while a != 0:
     a %= 13
D) มีข้อที่ทำงานแล้วติดในวงวน 2 ข้อ 
E) ทุกข้อทำงานได้ไม่ติดในวงวน
<5>
ข้อใดตรวจตัวแปร c ที่เก็บตัวพิมพ์เล็กตัวเดียวว่า
เป็น a, e, i, o หรือ u หรือไม่

A) if c == "aeiou" :
B) if c is in "aeiou" :
C) if c.index("aeiou") != -1 :
D) if "aeiou".find(c) >= 0 : (****)
E) ไม่มีข้อใดถูก
<5>
ข้อใดตรวจตัวแปร c ที่เก็บตัวพิมพ์เล็กตัวเดียวว่า
เป็น v, w, x, y หรือ z หรือไม่

A) if c == "vwxyz" :
B) if c is in "vxwyz" :
C) if c.find("vwxyz") != -1 :
D) if 'v' =< c =< 'z' :
E) ไม่มีข้อใดถูก  (****)
<5>
ข้อใดตรวจตัวแปร c ที่เก็บตัวพิมพ์เล็กตัวเดียวว่า
เป็น a, b, c, d หรือ e หรือไม่

A) if c == "abcde" :
B) if c is in "abcde" :
C) if c.find("abcde") != -1 :
D) if 'e' => c => 'a':
E) ไม่มีข้อใดถูก  (****)
<6>
คำสั่งข้อใดมีโอกาสเกิด error ตอนทำงาน
(ตัวแปร b กับ c มีค่ากำหนดให้แล้ว)

A) a = b + c
B) a = b / c
C) a = b - c
D) a = b * c
E) มีโอกาสเกิด error ได้ทุกข้อ  (****)
<7>
ฟังก์ชัน f มีรายละเอียดข้างล่างนี้

def f(x, y):
    for e in x:
        y += e
    return y

คำสั่งในข้อใดทำงานแล้วไม่เกิด error

A) f('123', '456')  (****)
B) f({1,2,3}, {4,5,6})
C) f([1,2,3], [1,2,3])
D) f(123, 456)
E) มีข้อที่ไม่เกิด error มากกว่า 1 ข้อ
<7>
ฟังก์ชัน f มีรายละเอียดข้างล่างนี้

def f(x, y):
    for e in x:
        y += e
    return y

คำสั่งในข้อใดทำงานแล้วไม่เกิด error

A) f((123,), 456)  (****)
B) f((123), 456)
C) f({'123'}, 456)
D) f([1,2,3], (4,5,6))
E) มีข้อที่ไม่เกิด error มากกว่า 1 ข้อ
<7>
ฟังก์ชัน f มีรายละเอียดข้างล่างนี้

def f(x, y):
    for e in x:
        y += e
    return y

คำสั่งในข้อใดทำงานแล้วไม่เกิด error

A) f(((1,),(2,), (3,)), (4,5,6))  (****)
B) f(((1), (2), (3)), [4,5,6])
C) f({123}, [456])
D) f([1,2,3], (4,5,6))
E) มีข้อที่ไม่เกิด error มากกว่า 1 ข้อ
<8>
ให้ m เป็นจำนวนเต็ม
ข้อใดแทนเงื่อนไขว่า m เก็บเลขเดือนของ
เดือนที่มีชื่อลงท้ายด้วย ยน

A) not(m%2==1 and 0<m<8 or m%2==0 and 7<m<13) and m!= 2  (****)
B) 1<=m<=12 or m==2 or m==4 or m==6 or m==9 or m==11
C) 0<m<13 and not(m!=2 and m!=4 and m!=6 and m!=9 and m!=11)
D) m is in [4,6,9,11]
E) ถูกมากกว่า 1 ข้อ
<9>
ข้อใดเป็นการเขียนนิพจน์บูลลีนที่ถูกต้อง 
เพื่อทดสอบว่า a เป็นจำนวนเต็มบวก 
มีค่าไม่เกิน 100 ที่มีค่าไม่ใช่ 10,11,12,13,14

A) 0 < a and a <= 100 and not (10 <= a and a <= 14)  (****)
B) 0 < a and a <= 100 or not (10 <= a <= 14)
C) 0 < a or a <= 100 and not (10 <= a or a <= 14)
D) 0 > a and a >= 100 and not (10 >= a and a <= 14)
E) ไม่มีข้อใดถูก
<10>
ให้ y เก็บเลขปี ค.ศ. เดือน ก.พ. มี 29 วัน เมื่อ
- y หารด้วย 4 ลงตัว แต่หารด้วย 100 ไม่ลงตัว
- ยกเว้นกรณีที่ y หารด้วย 400 ลงตัว ก็มี 29 วัน

คำสั่งใดที่หาจำนวนวันในเดือนกุมภาพันธ์
ของปี ค.ศ. y ไม่ถูกต้อง

A) d = 28
   if y%400==0 or y%4==0 and y%100!=0:
     d = 29
B) d = 29
   if (y%4!=0 or y%100==0) and y%400!=0:
     d = 28
C) if (y%4==0 and y%100!=0) or y%400==0:
     d = 29
   else:
     d = 28
D) มีถูก 2 ข้อ ผิด 1 ข้อ  
E) ข้อ A, B และ C ถูกหมด  (****)
<11>
ให้ x เป็นลิสต์เก็บจำนวนเต็ม 
ข้อใดได้ค่าของตัวแปร s ต่างจากข้ออื่น

A) s = 0
   for e in x[::-1]:
     s += e
B) s = 0
   for i in range(0,len(x),1):
     s += x[i]
C) s = 0
   for i in range(len(x),0,-1):
     s += x[i]  (****)
D) s = 0
   for e in x[1::2]+x[::2]:
     s += e
E) ทุกข้อได้ s มีค่าเท่ากันหมด
<12>
เครื่องหมายคณิตศาสตร์ใดถูกทำเป็นลำดับที่ 4
ในนิพจน์ 4*5-2%(5+2)/32

A) *
B) -
C) %
D) +
E) /  (****)
<12>
เครื่องหมายคณิตศาสตร์ใดถูกทำเป็นลำดับที่ 3
ในนิพจน์ 4*5-2%(5+2)/32

A) *
B) -
C) %  (****)
D) +
E) /
<12>
เครื่องหมายคณิตศาสตร์ใดถูกทำเป็นลำดับที่ 5
ในนิพจน์ 4*5-2%(5+2)/32

A) *
B) -  (****)
C) %
D) +
E) /
<13>
เมื่อโปรแกรมข้างล่างนี้ทำงาน จะแสดงผลอะไร
x = [1,2]+[3,4,5]*1000
print(x.pop(len(x)-5))

A) 1
B) 2
C) 3
D) 4 (****)
E) 5
<13>
เมื่อโปรแกรมข้างล่างนี้ทำงาน จะแสดงผลอะไร
x = [[1,[2,[3,4]]],[5,[6,[7,8]]]]
print(x.pop(1)[1][1])

A) 2
B) [3, 4]
C) 6
D) 7
E) [7, 8] (****)
<14>
หากนำเลขประจำตัวนิสิต 10 หลักของนิสิตจำนวนหนึ่ง
มาเรียงต่อกัน มีเครื่องหมาย : คั่นระหว่างเลขประจำตัว
เช่น "5937015921:5934847821:5938763221"
แล้วเก็บสตริงนี้ในตัวแปร IDs
  
ตัวเลือกในข้อใดสามารถหาว่า เลขประจำตัวที่เก็บในตัวแปร sid
ที่มีอยู่ใน IDs แน่ ๆ อยู่เป็นลำดับที่เท่าใดใน IDs 
(กำหนดให้ตัวซ้ายสุดคือ ลำดับที่ 1)

A) (IDs.find(sid)+11)//11  (****)
B) IDs.find(sid)//10+1
C) IDs.find(sid)%10
D) IDs.find(sid)%11+1
E) ไม่มีข้อใดถูก
<14>
หากนำเลขประจำตัวนิสิต 10 หลักของนิสิตจำนวนหนึ่ง
มาเรียงต่อกัน มี : เริ่มต้น ปิดท้าย และคั่นระหว่างเลขประจำตัว
เช่น ":5937015921:5934847821:5938763221:"
แล้วเก็บสตริงนี้ในตัวแปร IDs
  
ตัวเลือกในข้อใดสามารถหาว่า เลขประจำตัวที่เก็บในตัวแปร sid
ที่มีอยู่ใน IDs แน่ ๆ อยู่เป็นลำดับที่เท่าใดใน IDs 
(กำหนดให้ตัวซ้ายสุดคือ ลำดับที่ 1)

A) IDs.find(sid)//10 + 1
B) IDs.find(sid+":")//11 + 1  (****)
C) IDs.find(':'+sid)//12 + 1
D) IDs.find(':'+sid+':')//12 + 1
E) ไม่มีข้อใดถูก
<15>
ถ้าต้องการแสดงคำอ่านของเลขหนึ่งตัวในตัวแปร d
ออกทางจอภาพ ต้องเติมอะไรลงแทน ??? และ ***
ของโปรแกรมข้างล่างนี้ ตามลำดับ
(ให้เลขที่อินพุตเป็น 1,2,3 หรือ 4 เท่านั้น)

s = "[1:one][2:two][3:three][4:four]"
d = input()
sidx = s.find(d)+ ???       # <----
eidx = s.find("]",sidx)
print(s[sidx: eidx+  *** ]) # <----

A) 0 กับ 0
B) 2 กับ -1
C) 2 กับ 0  (****)
D) 1 กับ -1
E) ไม่มีข้อใดถูก
<16>
พิจารณาโปรแกรมข้างล่าง ข้อใดเป็นเท็จ 

filename = input('Enter a file name: ') 
myfile = open(filename)
text = myfile.readline()
print(text)

A) แฟ้มที่เปิดในบรรทัดที่ 2 สามารถอ่านได้อย่างเดียว
B) ถ้าไม่พบแฟ้มขณะเปิดแฟ้มในบรรทัดที่ 2 
   ระบบจะสร้างแฟ้มใหม่  (****)
C) ถ้า filename เก็บสตริง "data.txt" 
   แฟ้ม data.txt ต้องปรากฏอยู่ในโฟลเดอร์เดียวกับโปรแกรมนี้ 
   จึงจะเปิดแฟ้มได้
D) เมื่อทำคำสั่งที่ 3 ตัวแปร text จะเก็บสตริงเสมอ
E) ทุกข้อเป็นจริงหมด
<17>
ให้โปรแกรม Python ชื่อ p.py มีบรรทัดเดียวคือ
 
print(open("p.py").readline().strip()) 

ถ้าสั่งโปรแกรมนี้ทำงานจะได้ผลอะไรทางจอภาพ

A) print(open("p.py").readline().strip())  (****)
B) open("py.py").readline().strip()
C) readline().strip()
D) โปรแกรมทำงานแล้วเกิด error 
E) ไม่สามารถสรุปได้ว่าจะแสดงอะไร
<18>
ให้โปรแกรมข้างล่างนี้ทำงาน แล้วป้อนอินพุตเป็น ABCD 
จะเกิด error บรรทัดใด

a = {}       # บรรทัดที่ 1
x = input()  # บรรทัดที่ 2
for e in x:  # บรรทัดที่ 3
    a.add(e) # บรรทัดที่ 4
print(a)

A) บรรทัดที่ 1 
B) บรรทัดที่ 2
C) บรรทัดที่ 3
D) บรรทัดที่ 4  (****)
E) ทำงานได้ปกติ
<19>
ผู้เขียนตั้งใจให้โปรแกรมข้างล่างนี้ รับสตริงทางคีย์บอร์ด
แล้วนับว่า สตริงนั้นมีเลขคี่อย่างละกี่ตัว  
เมื่อนำโปรแกรมนี้ไปทำงานแล้วป้อน --1-9-1-- เป็นอินพุต
จะเกิด error ที่คำสั่งในบรรทัดใด

c = dict()                # บรรทัดที่ 1
for e in input().split(): # บรรทัดที่ 2
  if e != [0,2,4,6,8] :   # บรรทัดที่ 3
    c[e] += 1             # บรรทัดที่ 4    
print(c)

A) บรรทัดที่ 1
B) บรรทัดที่ 2
C) บรรทัดที่ 3
D) บรรทัดที่ 4  (****)
E) ทำงานได้ปกติ ไม่เกิด error
<19>
ผู้เขียนตั้งใจให้โปรแกรมข้างล่างนี้ รับสตริงทางคีย์บอร์ด
แล้วนับว่า สตริงนั้นมีเลขคู่อย่างละตัวกี่ตัว  
เมื่อนำโปรแกรมนี้ไปทำงานแล้วป้อน 12345 เป็นอินพุต
จะเกิด error ที่คำสั่งในบรรทัดใด

c = dict()                  # บรรทัดที่ 1
for e in input().split():   # บรรทัดที่ 2
  if e not in [1,3,5,7,9] : # บรรทัดที่ 3
    c[e] = c[e] + 1         # บรรทัดที่ 4
print(c)

A) บรรทัดที่ 1
B) บรรทัดที่ 2
C) บรรทัดที่ 3
D) บรรทัดที่ 4  (****)
E) ทำงานได้ปกติ ไม่เกิด error
<20>
ให้ r เป็น dict ที่มี 
- key เป็นชื่อบริษัท 
- value เก็บมูลค่าสินทรัพย์ของบริษัท 
ข้อใดได้ชื่อบริษัทที่มีมูลค่าสินทรัพย์มากสุดสักหนึ่งบริษัท

A) max(r.items())[0]
B) max([(k[1],k[0]) for k in r.items()])[1]  (****)
C) sorted([(v,k) for k,v in r])[-1][1]
D) max([(v,r[v]) for v in t.values()])[1]
E) ไม่มีข้อใดถูก
<20>
ให้ r เป็น dict ที่มี 
- key เป็นชื่อบริษัท 
- value เก็บมูลค่าสินทรัพย์ 
ข้อใดได้ชื่อบริษัทที่มีมูลค่าสินทรัพย์มากสุดสักหนึ่งบริษัท

A) max(r.items())[0]
B) min([(-k[1],k[0]) for k in r.items()])[1]  (****)
C) sorted([(-v,k) for k,v in r])[0][1]
D) max([(v,r[v]) for v in t.values()])[1]
E) ไม่มีข้อใดถูก
<20>
ให้ r เป็น dict ที่มี 
- key เป็นชื่อบริษัท 
- value เก็บมูลค่าสินทรัพย์ของบริษัท 
ข้อใดได้ชื่อบริษัทที่มีมูลค่าสินทรัพย์น้อยสุดสักหนึ่งบริษัท

A) min(r.items())[0]
B) min([(k[1],k[0]) for k in r])[1]
C) sorted([(-v,k) for k,v in r.items()])[-1][1]  (****)
D) max([(-v,r[v]) for v in t.values()])[1]
E) ไม่มีข้อใดถูก
<21>
ให้ d เป็น dict ที่มี 
- key เป็นรหัสลูกค้า
- value เก็บลิสต์ของชื่อเกมที่ลูกค้าคนนี้ได้ซื้อไปแล้ว
ข้อใดแสดงจำนวนชื่อเกมที่แตกต่างกันทั้งหมดที่ได้ขายไปแล้ว

A) c = {}
   for k in d:
     c = c.union(d[k])
   print(len(c))
B) c = 0
   for k,v in d.items:
     c += len(v)
   print(c)
C) c = 0
   for k in d:
     for e in d[k]:
       c += 1
   print(c)
D) ในตัว A, B, C มีถูก 2 ข้อ 
E) ไม่มีข้อใดถูก  (****)
<21>
ให้ d เป็น dict ที่มี 
- key เป็นรหัสสินค้า
- value เก็บลิสต์ของรหัสสาขาร้านที่ยังมีสินค้านี้เหลืออยู่
ข้อใดแสดงจำนวนสาขาร้านทั้งหมดที่ยังมีสินค้าขายในร้าน

A) c = set()
   for k in d.keys:
     c = c.union(d[k])
   print(len(c))
B) c = 0
   for v in d.values:
     c += len(v)
   print(c)
C) c = 0
   for k in d:
     for e in d[k]:
       c += 1
   print(c)
D) ในตัว A, B, C มีถูก 2 ข้อ 
E) ไม่มีข้อใดถูก  (****)
<22>
ให้ d เป็น dict ที่มี 
- key เป็นรหัสลูกค้า
- value เก็บลิสต์ของชื่อเกมที่ลูกค้าคนนี้ได้ซื้อไปแล้ว

ข้อใดสร้าง s เป็น dict ที่มี 
- key เป็นชื่อเกม
- value เก็บเซตของรหัสลูกค้าทั้งหมดที่ได้ซื้อเกมนี้

A) s = dict()
   for v in d.values:
     if v not in s: 
       s[v] = set()
     s[v].add(d[v])
B) s = dict()
   x = [(k,e) for k in d for e in d[k]]
   for k,e in x: 
     s[e] = set()
   for k,e in x: 
     s[e].add(k)   (****)
C) s = dict([(d[k],k) for k in d])
D) s = dict()
   x = [(k,e) for k in d for e in d[k]]
   for k,e in x: 
     s[e].update(k)
E) ไม่มีข้อใดถูก
<22>
ให้ d เป็น dict ที่มี 
- key เป็นรหัสสินค้า
- value เก็บลิสต์ของรหัสสาขาร้านที่ยังมีสินค้านี้เหลืออยู่

ข้อใดสร้าง s เป็น dict ที่มี 
- key เป็นรหีสสาขาร้าน
- value เก็บเซตของรหัสสินค้าต่าง ๆ ที่ร้านนี้มีขาย

A) s = dict()
   for v in d.values:
     if v not in s: 
       s[v] = set()
     s[v].add(d[v])
B) s = dict()
   x = [(k,e) for k in d for e in d[k]]
   for k,e in x: 
     s[e] = set()
   for k,e in x: 
     s[e].add(k)   (****)
C) s = dict([(d[k],k) for k in d])
D) s = dict()
   x = [(k,e) for k in d for e in d[k]]
   for k,e in x: 
     s[e].update(k)
E) ไม่มีข้อใดถูก
<23>
ให้ d เป็น numpy array ขนาด 100x100 
ให้ N = d.shape[0] และ M = d.shape[1]
(สมมติว่าได้ import numpy as np แล้ว)

ข้อใดทำให้ข้อมูลในแถวแนวนอนอินเด็กซ์เลขคี่ทั้งหมด
มีค่าเป็น 0 ทั้งแถว

A) d[1:-1:2] = [0]
B) d[range(0,N,2), range(M)] = 0
C) d[::-2, ::] = 0  (****)
D) d[np.arange(N)%2==0, np.arange(M)] = 0
E) ไม่มีข้อใดถูก
<23>
ให้ d เป็น numpy array ขนาด 111x111 
ให้ N = d.shape[0] และ M = d.shape[1]
(สมมติว่าได้ import numpy as np แล้ว)

ข้อใดทำให้ข้อมูลในแถวแนวนอนอินเด็กซ์เลขคู่ทั้งหมด
มีค่าเป็น 0 ทั้งแถว

A) d[0:-1:2] = [0]
B) d[range(1,N,2), range(M)] = 0
C) d[-2::-2, ::] = 0  (****)
D) d[np.arange(N)%2==1, np.arange(M)] = 0
E) ไม่มีข้อใดถูก
<24>
ให้ x เป็น numpy array หนึ่งมิติเก็บจำนวนเต็ม
ฟังก์ชันใดคืน mode ของข้อมูลใน x
mode คือข้อมูลที่ปรากฏเป็นจำนวนครั้งมากสุดใน x
ถ้ามีตัวที่เป็น mode หลายตัว ให้คืนตัวซ้ายสุด
(สมมติว่าได้ import numpy as np แล้ว)

A) def mode(x):
     y = np.array([x]).T
     c = np.sum(x==y, axis=0)
     return x[np.argmax(c)]  (****)
B) def mode(x):
     return np.max(np.sum(x.dot(x.T),axis=1))
C) def mode(x):
     t = x.reshape((x.shape[0],1))
     return np.max(np.sum(x==t, axis=1))
D) def mode(x):
     t = x.reshape((x.shape[::-1]))
     return x[np.argmax(np.sum(x==t, axis=1))]
E) ไม่มีข้อใดถูก
<24>
ให้ x เป็น numpy array หนึ่งมิติเก็บจำนวนเต็ม
f(x) ในข้อใดคืนจริง เมื่อ x มีข้อมูลในที่ซ้ำกัน
เกิน 50% ของจำนวนข้อมูลทั้งหมด ถ้าไม่มีคืนเท็จ

(สมมติว่าได้ import numpy as np แล้ว)

A) def f(x):
     N = x.shape[0]
     y = np.array([x]).T
     m = np.max(np.sum(x==y, axis=0))
     return m > N/2
B) def f(x):
     N = x.shape[0]
     s = np.sum(x.dot(x.T),axis=0)
     m = np.max(s)
     return m > N/2
C) def f(x):
     N = x.shape[0]
     c = np.sum(x == sorted(x)[N//2])
     return c > N/2
D) มีข้อที่ทำได้ตามต้องการ 2 ข้อ  (****)
E) ไม่มีข้อใดถูก
<25>
ข้อใดข้างล่างนี้ไม่ใช่ชื่อเมท็อดและ
ไม่ใช่ชื่อฟังก์ชันที่เรียนในวิชานี้

A) input ที่รับข้อมูลทางแป้นพิมพ์์
B) append ที่นำข้อมูลไปต่อท้ายลิสต์
C) dot ที่หาผลคูณจุด
D) shape ที่ให้รูปร่างและขนาดของอาเรย์ (****)
E) ทุกข้อเป็นชื่อเมท็อด หรือชื่อฟังก์ชัน
<26>
ให้ d เป็น dict มี
- คีย์ ชื่อจังหวัด, value เป็น dict ที่มี
  - คีย์ 'region', value เก็บชื่อย่อภาค
  - คีย์ 'population', value เก็บจำนวนประชากร
- ชื่อย่อภาคประกอบด้วย N, E, W, S, C, NE
นักเรียนคนหนึ่งเขียนฟังก์ชัน f(d) ข้างล่างนี้ มีหน้าที่
คืน dict ที่มีคีย์เป็นภาค, value เก็บจำนวนจังหวัดในภาค

def f(d):
  c = {'N':0, 'E':0, 'W':0, \
       'S':0, 'C':0, 'NE':0}
  for p in d:        
    r = d[p]['region']  # บรรทัด I
    for k in c:         # บรรทัด II
       if r in k:       # บรรทัด III
          c[r] += 1     # บรรทัด IV
          break         # บรรทัด V
  return c

หลังจากทดสอบการทำงานแล้ว พบว่า ได้คำตอบเกือบถูก
ถ้าจะปรับฟังก์ชันนี้ ด้วยจำนวนการแก้ไขคำสั่งให้น้อยสุด ๆ
เพื่อให้ทำงานได้ถูกต้อง ต้องแก้ไขที่บรรทัดใด

A) บรรทัด I
B) บรรทัด II
C) บรรทัด III  (****)
D) บรรทัด IV
E) บรรทัด V