จงสร้างตัวแปรชื่อ count_alpha
เป็นดิกที่มี key เป็นตัวอักษรอังกฤษทั้งใหญ่และเล็กทุกตัวอักษร ส่วน value ให้เป็น 0 หมด
count_alpha = {}
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
alpha += alpha.lower()
for c in alpha:
count_alpha[c] = 0
var = "count_alpha"
obj = Ex().check_object(var, missing_msg = "ไม่พบตัวแปร " + var)
obj.has_equal_value(expr_code="type("+var+")", incorrect_msg=var + " ต้องเป็น dict")
obj.has_equal_value(expr_code="len("+var+")", incorrect_msg = "ยังขาดบางตัวอักษร")
obj.has_equal_value(incorrect_msg = "ยังตั้งค่าในดิกไม่ถูกต้อง")
มีดิกชื่อ number_of_students
อยู่แล้วตัวหนึ่ง จัดเก็บข้อมูลในรูปแบบ {รหัสวิชา: จำนวนนิสิตที่ลงทะเบียน}
โดยรหัสวิชาเป็นสตริง จงเขียนคำสั่งเพิ่มจำนวนนิสิตที่ลงทะเบียนให้กับวิชา 2110101 อีก 28 คน และตั้งให้วิชา 2301107 มีนิสิตลงทะเบียน 824 คน
number_of_students = {"2110101": 440, "2110183": 7, "2110211": 120}
number_of_students["2110101"] += 28
number_of_students["2301107"] = 824
var = "number_of_students"
obj = Ex().check_object(var, missing_msg = "ไม่พบตัวแปร " + var)
obj.has_equal_value(expr_code="type("+var+")", incorrect_msg=var + " ต้องเป็น dict")
obj.has_equal_value(incorrect_msg = "ยังตั้งค่าในดิกไม่ถูกต้อง")
โปรแกรมนี้มีตัวแปร student1 เป็นดิกเก็บรายละเอียดของนักเรียนคนหนึ่ง จงเขียนฟังก์ชัน read_data()
มีหน้าที่อ่านข้อมูลจากอินพุตประกอบด้วย เลขประจำตัว, ชื่อ-สกุล, วัน, เดือน, ปีเกิด (คั่นด้วย comma และช่องว่าง) มาเก็บในดิกที่มีรูปแบบเดียวกับ student1 แล้วคืนเป็นผลของฟังก์ชัน เช่น
อินพุตเป็น 4230000021, Natalie P., 9, 6, 1981
จะได้ผลจาก read_data
เป็น {"ID": "4230000021", "Name": "Natalie P.", "Birthdate": [9, 6, 1981]}
___inp___ = ["12345, George L., 14, 5, 1944"]
def input():
t = ___inp___.pop(0)
___inp___.append(t)
return t
def read_data():
x = input().split(", ")
???
student1 = {"ID": "5830000021",
"Name": "Pranpriya M.",
"Birthdate": [27, 3, 1997]}
def read_data():
x = input().split(", ")
r = {}
r["ID"] = x[0]
r["Name"] = x[1]
r["Birthdate"] = [int(x[2]), int(x[3]), int(x[4])]
return r
q = "`"
fname = "read_data"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้ไม่รับพารามิเตอร์ใด ๆ')
fcall = fname + "()"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")
จงเขียนโปรแกรมอ่านจากอินพุตบรรทัดเดียวเป็นรายการของชื่อย่อจังหวัด อังกฤษกับไทย คั่นด้วยช่องว่าง เช่น BKK กทม CMI ชม
เพื่อนำมาสร้างเป็นดิกชื่อ abbr = {"BKK": "กทม", "CMI": "ชม", "กทม": "BKK" ,"ชม": "CMI"}
___inp___ = ["CBI ชบ BKK กทม CMI ชม KBI กบ KNN ขก"]
def input():
t = ___inp___.pop(0)
___inp___.append(t)
return t
x = input().split()
abbr = {}
for i in range(0,len(x),2):
abbr[x[i]] = x[i+1]
abbr[x[i+1]] = x[i]
var = "abbr"
obj = Ex().check_object(var, missing_msg = "ไม่พบตัวแปร " + var)
obj.has_equal_value(expr_code="type("+var+")", incorrect_msg=var + " ต้องเป็น dict")
obj.has_equal_value(incorrect_msg = "ยังตั้งค่าในดิกไม่ถูกต้อง")
จงเขียนฟังก์ชัน add(points, members, extra)
รับดิก points
ที่เก็บข้อมูลในรูปแบบ {รหัสสมาชิก: จำนวนแต้มสะสม}
, members
เป็นลิสต์เก็บรหัสสมาชิก กับ extra
เป็นจำนวนแต้ม ฟังก์ชันนี้จะเพิ่มแต้มเป็นจำนวน extra
ในดิก points
ให้กับสมาชิกที่มีรหัสปรากฏใน members
ฟังก์ชันนี้ไม่คืนอะไรเลย เพราะจะปรับข้อมูลใน points
def add(points, members, extra):
for m in members:
points[m] += extra
q = "`"
fname = "add"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์สามตัว')
func.check_body().check_not(has_code(r"points\s*\="),
msg="ไม่ควรมีคำสั่ง points = เพื่อเปลี่ยนค่าใน points")
func.check_call("add({},{},0)").has_equal_value(incorrect_msg="ฟังก์ชันนี้ต้องไม่คืนอะไรเลย")
pt = {"01":10, "02":20, "03":30, "04":40}
mb = ["02", "01"]
ex = 5
func.check_body().set_context(pt, mb, ex).has_equal_value(name = "points", incorrect_msg = "ปรับแต้มใน points ไม่ถูกต้อง อ่านโจทย์อีกครั้ง")
บรรทัดแรกของอินพุตคือรายการของรหัสสินค้า ตามด้วยบรรทัดต่อ ๆ ไปจนถึง end คือรายการการประมูลสินค้า แต่ละบรรทัดประกอบด้วย รหัสผู้ประมูล รหัสสินค้า ราคาประมูล เราต้องการสร้างดิกชื่อ bid = {รหัสสินค้า: [รหัสผู้ประมูลสูงสุด, ราคาประมูลสูงสุด]}
คือ มีรหัสสินค้าเป็นคีย์ ส่วนค่าเป็นลิสต์สองช่องเก็บรหัสผู้ประมูลกับราคาประมูลสูงสุด จากตัวอย่างอินพุต จะได้ bid = {'P001': ['U102', 120], 'P002': ['U101', 150], 'P102': ["", 0]}
โปรแกรมนี้มีคำสั่งอ่านรหัสสินค้าทั้งหมดมาสร้างดิก bid ที่มีทุกค่าเป็น ["", 0] คือยังไม่มีใครประมูลเลย จงเขียนคำสั่งอ่านข้อมูลการประมูลเพื่อสร้าง bid ให้ได้ตามที่ต้องการ
___inp___ = ["P101 P102 P103",
"U101 P101 100",
"U101 P102 100",
"U102 P101 100",
"U102 P102 200",
"U102 P101 110",
"U101 P101 120",
"end"]
def input():
t = ___inp___.pop(0)
___inp___.append(t)
return t
prods = input().split()
bid = {}
for p in prods:
bid[p] = ["", 0]
x = input().split()
while x[0] != "end":
x = input().split()
prods = input().split()
bid = {}
for p in prods:
bid[p] = ["", 0]
x = input().split()
while x[0] != "end":
user = x[0]
prod = x[1]
price = int(x[2])
if price > bid[prod][1]:
bid[prod] = [user, price]
x = input().split()
var = "bid"
obj = Ex().check_object(var, missing_msg = "ไม่พบตัวแปร " + var)
obj.has_equal_value(expr_code="type("+var+")", incorrect_msg=var + " ต้องเป็น dict")
obj.has_equal_value(incorrect_msg = "ยังตั้งค่าในดิกไม่ถูกต้อง")