จงเติมคำสั่งในบรรทัดที่ให้ค่ากับตัวแปร y เพื่อให้ yi = 2(xi)2 - 5 สำหรับทุกค่าของ i (แก้ไขบรรทัด y = ___ บรรทัดเดียว ไม่ต้องแก้ไขบรรทัดอื่น ๆ)
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5.0, 5.0, 0.1)
y = _________
plt.plot(x, y)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5.0, 5.0, 0.1)
y = 2*x**2 - 5
plt.plot(x, y)
plt.show()
Ex().check_function('matplotlib.pyplot.plot', missing_msg = "ฟังก์ชัน plot หายไปไหน ?").\
    check_args(["args", 1]).has_equal_value(incorrect_msg="ยังไม่ถูกต้อง: โจทย์ให้พล็อต กำลังสองของ x")
  จงเติมคำสั่งในบรรทัดที่ให้ค่ากับตัวแปร x กับ y โดย x เก็บมุม 0, 1, 2, ..., 360 องศา ส่วน y เก็บค่า sin(x) คือให้ yi = sin(xi) สำหรับทุกค่าของ i (แก้ไขบรรทัด x = และ y = เท่านั้น ไม่ต้องแก้ไขบรรทัดอื่น ๆ)
import matplotlib.pyplot as plt
import numpy as np
x = ________
y = ________
plt.plot(x, y)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 361, 1)
y = np.sin(np.radians(x))
plt.plot(x, y)
plt.show()
Ex().check_function('matplotlib.pyplot.plot', missing_msg = "ฟังก์ชัน plot หายไปไหน ?").multi(
    check_args(["args", 0]).has_equal_value(
        incorrect_msg="ยังไม่ถูกต้อง: โจทย์ให้พล็อต x จาก 0,1,2,..,360 องศา"),
    check_args(["args", 1]).has_equal_value(
        incorrect_msg="ยังไม่ถูกต้อง: โจทย์ให้พล็อต y = sin(x)")
)
เขียนคำสั่งเพื่อสร้างอาเรย์ในตัวแปรชื่อต่อไปนี้ (ไม่ใช้คำสั่งวงวน)
a1 ขนาด 10x10 ทุกช่องมีค่า -3a2 ขนาด 10x10 แถวคู่เป็น 2 ทุกตัว แถวคี่เป็น 7 ทุกตัวa3 ขนาด 10x10 ทุกช่องเป็น 0 ยกเว้นในแนวทแยงมุมจากซ้ายบนลงมาขวาล่างเป็น 9a4 ขนาด 10x10 ทุกช่องเป็น 0 ยกเว้นในแนวทแยงมุมจากขวาบนลงมาซ้ายล่างเป็น 9
import numpy as np
import numpy as np
a1 = np.ndarray((10,10), int)
a1[:,:] = -3
a2 = np.ndarray((10,10), int)
a2[::2, :] = 2
a2[1::2, :] = 7
ir = np.arange(0, 10, 1)
a3 = np.zeros((10,10), int)
a3[ir,ir] = 9
a4 = np.zeros((10,10), int)
a4[ir,ir[::-1]] = 9
Ex().check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
vars = ['a1', 'a2', 'a3', 'a4']
for v in vars:
  obj = Ex().check_object(v, missing_msg = "ไม่มีตัวแปร `" + v + "`")
  obj.has_equal_value(expr_code = "type("+v+")", incorrect_msg = "`" + v + "` ต้องเป็น numpy array")
  obj.has_equal_value(expr_code = v+".dtype", incorrect_msg = "`" + v + "` เก็บข้อมูลที่มีประเภทข้อมูลไม่ตรงตามโจทย์")
  obj.has_equal_value(incorrect_msg = "`" + v + "` มีค่าไม่ตรงตามโจทย์")
  กำหนดให้มี A เป็นอาเรย์หนึ่งมิติ (มีให้แล้ว) จงเขียนคำสั่งเพื่อนำข้อมูลจาก A มาสร้างอาเรย์ใหม่ในตัวแปรชื่อต่อไปนี้ (ไม่ใช้คำสั่งวงวน)
a1 เก็บจำนวนของข้อมูลใน A ที่มีค่าติดลบa2 เป็นอาเรย์เก็บข้อมูลใน A ทั้งหมดที่มีค่าติดลบ (ลำดับก่อนหลังเดียวกับที่อยู่ใน A)a3 เป็นอาเรย์เก็บอินเด็กซ์ของ A ทั้งหมดที่มีค่าติดลบ (ลำดับก่อนหลังเดียวกับที่อยู่ใน A)a4 เป็นอาเรย์เก็บข้อมูลใน A ทั้งหมดที่มีค่าตั้งแต่ -5 ถึง 5 (ลำดับก่อนหลังเดียวกับที่อยู่ใน A)
import numpy as np
A = np.array([-10, -5, -2, 0, 5, 33])
import numpy as np
import numpy as np
a1 = sum(A < 0)
a2 = A[A < 0]
a3 = np.arange(len(A))[A < 0]
t = A[A<=5]
a4 = t[-5<=t]
import numpy as np
Ex().check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
vars = ['a1', 'a2', 'a3', 'a4']
must_be_array = [False, True, True, True]
for i in range(len(vars)):
  v = vars[i]
  obj = Ex().check_object(v, missing_msg = "ไม่มีตัวแปร `" + v + "`")
  if must_be_array[i]:
    obj.has_equal_value(expr_code = "type("+v+")", incorrect_msg = "`" + v + "` ต้องเป็น numpy array")
    obj.has_equal_value(expr_code = v+".dtype", incorrect_msg = "`" + v + "` เก็บข้อมูลที่มีประเภทข้อมูลไม่ตรงตามโจทย์")
  ex = Ex().set_env(A = np.random.randint(-10, 10, np.random.randint(10,100)))
  ex.has_equal_value(name = v, incorrect_msg = "`" + v + "` มีค่าไม่ตรงตามโจทย์")
  จงเขียนฟังก์ชัน clip_to(x, e) ที่รับ x เป็นอาเรย์มิติเดียว และ e เป็นจำนวน ฟังก์ชันนี้จะเปลี่ยนค่าใน x ที่เกิน e ให้เท่ากับ e ฟังก์ชันนี้ไม่คืนอะไร (ไม่ต้องใช้คำสั่งวงวน)
import numpy as np
def clip_to(x,e):
import numpy as np
def clip_to(x,e):
    x[x>e] = e
import numpy as np
q = "`"
fname = "clip_to"
arg1 = 'np.array([1,1,2,3,4,5,4,5,1,2,1,3,3,4,5,4,6])'
arg2 = '3'
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์สองตัว')
func.check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
fcall = fname + "(" + arg1 + "," + arg2 + ")"
func.check_call(fcall).has_equal_value(incorrect_msg= "ฟังก์ชันนี้ต้องไม่คืนอะไรเลย")
func.check_body().set_context(eval(arg1), eval(arg2)).has_equal_value(name = "x", incorrect_msg = "ยังทำงานไม่ถูกต้อง")
  จงเขียนฟังก์ชัน to_second(hms) รับ hms เป็นอาเรย์ขนาด nx3 แต่ละแถวมี 3 ช่องเก็บจำนวนชั่วโมง นาที และวินาที ฟังก์ชันนี้คืนอาเรย์ n ช่องของจำนวนเต็ม โดยช่องที่ k จะเก็บจำนวนวินาทีรวมที่คำนวณได้จากจำนวนชั่วโมง นาที และวินาทีของแถวที่ k ของ hms (ไม่ต้องใช้คำสั่งวงวนใด ๆ ในฟังก์ชัน)
import numpy as np
def to_second(hms):
import numpy as np
def to_second(hms):
    return hms[:,0]*3600 + hms[:,1]*60 + hms[:,2]
import numpy as np
q = "`"
fname = "to_second"
arg = 'np.array(' + \
  str([[np.random.randint(0, 20),
        np.random.randint(0, 59),
        np.random.randint(0, 59)] for k in range(10)]) + ')'
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์หนึ่งตัว')
func.check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
fcall = fname + "(" + arg + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fname+q) + " ให้ผลผิด")
  จงเขียนฟังก์ชัน to_hms(second) รับ second เป็นอาเรย์ขนาด n ช่อง แต่ละช่องเก็บจำนวนวินาที ฟังก์ชันนี้คืนอาเรย์ nx3 ช่องของจำนวนเต็ม แต่ละแถวมี 3 ช่อง เก็บจำนวนชั่วโมง นาที และวินาทีตามลำดับ โดยนำ second ช่องที่ k ไปแปลงเป็นชั่วโมง นาที วินาที แล้วเก็บในแถวที่ k ของผลลัพธ์ เช่น 3661 วินาที แปลงได้เป็น 1 ชั่วโมง 1 นาที และ 1 วินาที  (ไม่ต้องใช้คำสั่งวงวนใด ๆ ในฟังก์ชัน)
import numpy as np
def to_hms(second):
import numpy as np
def to_hms(second):
    return np.array([
             second//3600,
             second%3600//60,
             second%60]).T
import numpy as np
q = "`"
fname = "to_hms"
arg = 'np.array(' + str([np.random.randint(3000, 30000) for k in range(10)]) + ')'
func = Ex().check_function_def(fname, missing_msg="ไม่พบฟังก์ชัน " + (q+fname+q))
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์หนึ่งตัว')
func.check_not(has_code(r"(for|while)"), msg="ไม่ใช้ for หรือ while นะ")
fcall = fname + "(" + arg + ")"
func.check_call(fcall).has_equal_value(incorrect_msg=(q+fname+q) + " ให้ผลผิด")