จงเขียนฟังก์ชัน sum_all(M)
รับ M เป็นลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์ของจำนวน ฟังก์ชันนี้คืนผลรวมของทุกจำนวนในเมทริกซ์ M
def sum_all(M):
def sum_all(M):
s = 0
for row in M:
for e in row:
s += e
return s
q = "`"
fname = "sum_all"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
import random
M = [[random.randint(-10,10) for i in range(4)] for j in range(3)]
params = [[[1,2],[3,4],[2,2]], M]
for p in params:
fcall = fname + "(" + str(p) + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")
จงเขียนฟังก์ชัน sum_row(M)
รับ M เป็นลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์ของจำนวน ฟังก์ชันนี้คืนลิสต์ที่ช่องที่ k เก็บผลรวมของทุกจำนวนในแถวแนวนอนที่ k ของเมทริกซ์ M
def sum_row(M):
def sum_row(M):
s = []
for r in range(len(M)):
su = 0
for c in range(len(M[r])):
su += M[r][c]
s.append(su)
return s
q = "`"
fname = "sum_row"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
import random
M = [[random.randint(-10,10) for i in range(4)] for j in range(3)]
params = [[[1,2],[3,4],[2,2]], M]
for p in params:
fcall = fname + "(" + str(p) + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")
จงเขียนฟังก์ชัน sum_col(M)
รับ M เป็นลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์ของจำนวน ฟังก์ชันนี้คืนลิสต์ที่ช่องที่ k เก็บผลรวมของทุกจำนวนในแถวแนวตั้วที่ k ของเมทริกซ์ M
def sum_col(M):
def sum_col(M):
s = []
for c in range(len(M[0])):
su = 0
for r in range(len(M)):
su += M[r][c]
s.append(su)
return s
q = "`"
fname = "sum_col"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
import random
M = [[random.randint(-10,10) for i in range(4)] for j in range(3)]
params = [[[1,2],[3,4],[2,2]], M]
for p in params:
fcall = fname + "(" + str(p) + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")
จงเขียนฟังก์ชัน identity(n)
รับ n เป็นจำนวนเต็มบวก ฟังก์ชันนี้คืนลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์เอกลักษณ์ (identity matrix) ขนาด nxn (เมทริกซ์เอกลักษณ์ คือ เมทริกซ์จัตุรัสที่ทุกช่องมีค่า 0 ยกเว้นแนวทแยงจากซ้ายบนลงมาขวาล่างมีค่าเป็น 1
def identity( n ):
def identity( n ):
I = []
for r in range( n ):
I.append( [0]*n )
I[r][r] = 1
return I
q = "`"
fname = "identity"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
params = [1, 3, 5, 6]
for p in params:
fcall = fname + "(" + str(p) + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")
จงเขียนฟังก์ชัน transpose(M)
รับ M เป็นลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์ของจำนวน ฟังก์ชันนี้คืนลิสต์ซ้อนลิสต์ที่แทนเมทริกซ์สลับเปลี่ยน (transpose matrix) ของ M
def transpose( M ):
def transpose( M ):
T = []
nrows = len(M)
ncols = len(M[0])
for c in range(ncols):
T.append([0]*nrows)
for r in range(nrows):
T[c][r] = M[r][c]
return T
q = "`"
fname = "transpose"
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
import random
M = [[random.randint(-10,10) for i in range(2)] for j in range(5)]
params = [[[1,2],[3,4],[2,2]], M]
for p in params:
fcall = fname + "(" + str(p) + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fcall+q) + " ให้ผลผิด")