จงเขียนฟังก์ชัน to_celsius(f)
ที่รับอุณหภูมิในหน่วยองศาฟาเรนไฮต์ เพื่อแปลงและคืนผลกลับเป็นอุณหภูมิในหน่วยองศาเซลเซียส
def to_celsius( f ):
return (f - 32)*5/9
func = Ex().check_function_def('to_celsius', missing_msg="ไม่พบฟังก์ชัน to\_celsius")
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์แค่ตัวเดียว')
func.check_correct(
multi(
check_call("to_celsius(32)").has_equal_value(incorrect_msg="ได้ผลไม่ถูกต้อง เช่น เมื่อ f = 32"),
check_call("to_celsius(0)").has_equal_value(incorrect_msg="ได้ผลไม่ถูกต้อง เช่น เมื่อ f = 0"),
check_call("to_celsius(212)").has_equal_value(incorrect_msg="ได้ผลไม่ถูกต้อง เช่น เมื่อ f = 212")
),
check_body().has_code("return", not_typed_msg="น่าจะต้องมี return ในฟังก์ชันนะ")
)
จงเขียนฟังก์ชัน triangle_area
รับพารามิเตอร์สามตัวแทนความยาวด้านทั้งสามของสามเหลี่ยม ฟังก์ชันนี้คำนวณและคืนพื้นที่ของสามเหลี่ยมเป็นผลลัพธ์ หมายเหตุ: สามเหลี่ยมที่มีความยาวด้านทั้งสามเป็น \(a\), \(b\) และ \(c\) จะมีพื้นที่เท่ากับ \(\sqrt{s(s-a)(s-b)(s-c)}\) โดยที่ \(s=\frac{a+b+c}{2}\)
def triangle_area(a, b, c):
s = (a+b+c)/2
area = (s*(s-a)*(s-b)*(s-c))**0.5
return area
func = Ex().check_function_def('triangle_area', missing_msg="ไม่พบฟังก์ชัน triangle\_area")
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ 3 ตัว')
for v in ["3,4,5", "3,3,3", "7,7,3"]:
func.check_call("triangle_area("+str(v)+")").\
has_equal_value(incorrect_msg = "ผิด เช่น " + v +", ดูสูตรการคำนวณพื้นที่สามเหลี่ยมในโจทย์")
จงเขียนฟังก์ชัน is_prime
รับจำนวนเต็มบวกเป็นพารามิเตอร์หนึ่งตัว ฟังก์ชันนี้ทดสอบและคืนผลว่าจำนวนเต็มที่รับมาเป็นจำนวนเฉพาะหรือไม่ ถ้าเป็น ก็คืนจริง ถ้าไม่เป็นจำนวนเฉพาะ ก็คืนเท็จ
def is_prime(n):
if n == 1: return False
for k in range(2, n):
if n%k == 0:
return False
return True
func = Ex().check_function_def('is_prime', missing_msg="ไม่พบฟังก์ชัน is\_prime")
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
for n in [1,2,997,9851,38021]:
func.check_call("is_prime("+str(n)+")").\
has_equal_value(incorrect_msg = "ผิด เช่น " + str(n))
กำหนดให้มีฟังชัน is_prime(n)
ซึ่งทดสอบว่า n เป็นจำนวนเฉพาะหรือไม่ ให้ใช้แล้ว จงเขียนฟังก์ชัน is_twin_prime
ที่รับจำนวนเต็มบวก 2 จำนวน มาตรวจสอบว่า จำนวนเต็มทั้งสองเป็น twin primes หรือไม่ หมายเหตุ: a กับ b เป็น twin primes ก็เมื่อ a กับ b ต่างกัน 2 พอดี และทั้งคู่เป็นจำนวนเฉพาะ เช่น 3 กับ 5, 13 กับ 11 เป็นต้น
def is_prime(n):
if n == 1: return False
for k in range(2, n):
if n%k == 0:
return False
return True
def is_twin_prime(p1,p2):
return abs(p1-p2)==2 and \
is_prime(p1) and \
is_prime(p2)
func = Ex().check_function_def('is_twin_prime', missing_msg="ไม่พบฟังก์ชัน is\_twin\_prime")
func.has_equal_part_len('args', 'ฟังก์ชันนี้รับพารามิเตอร์ตัวเดียว')
# แปลกข้างล่างนี้ใช้ func.check_body().check_function("is_prime") ไม่ได้
func.check_body().has_code("is_prime", not_typed_msg="น่าจะใช้ is_prime ให้เป็นประโยชน์")
for v in ["17, 19", "139, 137", "61, 63", "49, 47", "619, 617"]:
func.check_call("is_twin_prime("+str(v)+")").\
has_equal_value(incorrect_msg = "ผิด เช่น " + str(v))