จงเขียนฟังก์ชัน get_countries(capital_city, s)
รับ capital_city
เป็นดิกเก็บข้อมูลในรูปแบบ {ชื่อประเทศ: ชื่อเมืองหลวง}
และ s
เป็นสตริง ฟังก์ชันนี้คืนลิสต์ของชื่อประเทศที่ขึ้นต้นด้วยค่าที่เก็บใน s
โดยลิสต์ที่คืนเรียงชื่อประเทศจากน้อยไปมากตามพจนานุกรม
def get_countries(capital_city, s):
def get_countries(capital_city, s):
result = []
for country in capital_city:
if country.find(s) == 0:
result.append(country)
result.sort()
return result
q = "`"
fname = "get_countries"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์สองตัว')
cc = str({"A":"12", "B":"21", "AA1":"13", "AA2":"14", "AA3":"15", "AAA":"16", "BA":"17"})
msg = "ให้ผลผิด อ่านโจทย์อีกรอบ"
func.check_call(fname + "("+cc+", 'AA')").has_equal_value(incorrect_msg=msg)
func.check_call(fname + "("+cc+", 'B')").has_equal_value(incorrect_msg=msg)
จงเขียนฟังก์ชัน get_courseIDs(number_of_students, k)
รับดิก number_of_students
ที่เก็บข้อมูลในรูปแบบ {รหัสวิชา: จำนวนนิสิตที่ลงทะเบียน} กับ k
ที่เป็นจำนวนเต็ม ฟังก์ชันนี้คืนลิสต์ของรหัสวิชาต่าง ๆ ที่มีจำนวนผู้ลงทะเบียนเรียนตั้งแต่ k
คนขึ้นไป โดยให้เรียงรหัสวิชาในลิสต์ที่คืนจากน้อยไปมาก
def get_courseIDs(number_of_students, k):
def get_courseIDs(number_of_students, k):
result = []
for cid in number_of_students:
if number_of_students[cid] >= k:
result.append(cid)
result.sort()
return result
q = "`"
fname = "get_courseIDs"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์สองตัว')
cc = str({"01":100, "02":99, "03":10, "04":200, "05":120, "06":22})
func.check_call(fname + "("+cc+", 100)").has_equal_value(incorrect_msg="ให้ผลผิด อ่านโจทย์อีกรอบ")
จงเขียนฟังก์ชัน add_all(points, blacklist, extra)
รับดิก points
ที่เก็บข้อมูลในรูปแบบ {รหัสสมาชิก: จำนวนแต้มสะสม}
, blacklist
เป็นลิสต์เก็บรหัสสมาชิก กับ extra
เป็นจำนวนแต้ม ฟังก์ชันนี้จะเพิ่มแต้มเป็นจำนวน extra
ในดิก points
ให้กับสมาชิกทุกรายที่มีรหัสไม่ปรากฏใน blacklist
ฟังก์ชันนี้ไม่คืนอะไรเลย เพราะจะปรับข้อมูลใน points
def add_all(points, blacklist, extra):
def add_all(points, blacklist, extra):
for m in points:
if m not in blacklist:
points[m] += extra
q = "`"
fname = "add_all"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.check_args("points", missing_msg = "อย่าเปลี่ยนหัวฟังก์ชัน ต้องเป็น add\_all(points, blacklist, extra)")
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์สามตัว')
func.check_body().check_not(has_code(r"points\s*\="),
msg="ไม่ควรมีคำสั่ง points = เพื่อเปลี่ยนค่าใน points")
func.check_call("add_all({},[],0)").has_equal_value(incorrect_msg="ฟังก์ชันนี้ต้องไม่คืนอะไรเลย")
pt = {"01":10, "02":20, "03":30, "04":40}
bl = ["02", "01"]
ex = 5
func.check_body().set_context(pt, bl, ex).has_equal_value(name = "points", incorrect_msg = "ปรับแต้มใน points ไม่ถูกต้อง อ่านโจทย์อีกครั้ง")