หมายเหตุ : * ควรใช้ float(), int() ในการแปลงตัวเลขจากผู้ใช้แทน eval() * เพราะข้อมูลที่ผู้ใช้กรอกจะตรงกับที่ต้องการใช้ * ถ้าผู้ใช้กรอกไม่ตรง โปรแกรมจะปิดและมีข้อความแสดงข้อผิดพลาด - error message Show
3.10. ตัวอย่างโปรแกรมรวมตังค์print("โปรแกรมรวมตังค์") print() print("กรอกจำนวนเงินตามประเภท") tens = int(input("มูลค่า 10 มีจำนวน: ")) twenties = int(input("แบงค์ 20 มีจำนวน: ")) fifties = int(input("แบงค์ 50 มีจำนวน: ")) hundreds = int(input("แบงค์ 100 มีจำนวน: ")) total = tens*10 + twenties*20 + fifties*50 + hundreds*100 print() print("รวมมีเงินทั้งหมด ", total) 3.11. การใช้ชุดคำสั่ง math libraryนอกจากการใช้ตัวดำเนินการทางคณิตศาสตร์เช่น รวมตังค์print("โปรแกรมรวมตังค์") print() print("กรอกจำนวนเงินตามประเภท") tens = int(input("มูลค่า 10 มีจำนวน: ")) twenties = int(input("แบงค์ 20 มีจำนวน: ")) fifties = int(input("แบงค์ 50 มีจำนวน: ")) hundreds = int(input("แบงค์ 100 มีจำนวน: ")) total = tens*10 + twenties*20 + fifties*50 + hundreds*100 print() print("รวมมีเงินทั้งหมด ", total) 8 และ รวมตังค์print("โปรแกรมรวมตังค์") print() print("กรอกจำนวนเงินตามประเภท") tens = int(input("มูลค่า 10 มีจำนวน: ")) twenties = int(input("แบงค์ 20 มีจำนวน: ")) fifties = int(input("แบงค์ 50 มีจำนวน: ")) hundreds = int(input("แบงค์ 100 มีจำนวน: ")) total = tens*10 + twenties*20 + fifties*50 + hundreds*100 print() print("รวมมีเงินทั้งหมด ", total) 9 ในการประมวลค่าของสมการแล้ว Python ยังมาพร้อมกับชุดคำสั่งพิเศษสำหรับใช้ในการคำนวณใน math library อีกด้วย
ตัวอย่างฟังก์ชันที่สามารถใช้ได้ใน math library ตารางสรุป กลุ่มฟังก์ชัน functions
ceil(x), fabs(x), factorial(n), floor(x), fmod(x, y) fsum(..), gcd(a, b), remainder(x, y)
isClose(x, y, rel_tol=1e-09, abs_tol=0.0), isfinite(x), isnan(x)
exp(x), log(x, base), log2(x), log10(x), pow(x, y), sqrt(x)
acos(x), asin(x), atan(x), atan2(y, x), cos(x), hypot(x, y), sin(x), tan(x)
degrees(x), radians(x)
acosh(x), asinh(x), atanh(x), cosh(x), sinh(x), tanh(x)
erf(x), erfc(x), gamma(x), lgamma(x)
pi, e, tau, inf, nan 3.12. ตัวอย่างโปรแกรมซอฟต์แวร์สำหรับเพื่อแก้สมการ \(ax^2 + bx + c = 0\)
Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ \[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]
import math a = float(input('กรอกค่า a: ')) b = float(input('กรอกค่า b: ')) c = float(input('กรอกค่า c: ')) x1 = (-b + math.sqrt(b**2 - 4*a*c))/(2*a) x2 = (-b - math.sqrt(b**2 - 4*a*c))/(2*a) print('รากที่หนึ่งของสมการคือ '+str(x1)) print('รากที่สองของสมการคือ '+str(x2)) หรือ print(f'(x1={x1}, x2={x2})')
รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่? ข้อมูลทดสอบชุดที่ 1 Input Output กรอกค่า a: 1 x1=-1.0, x2=-1.0 กรอกค่า b: 2 กรอกค่า c: 1 ข้อมูลทดสอบชุดที่ 2 Input Output กรอกค่า a: 1 x1=8.0, x2=-2.0 กรอกค่า b: -6 กรอกค่า c: -16 ข้อมูลทดสอบชุดที่ 3 Input Output กรอกค่า a: 1 x1=-5.0, x2=-1.0 กรอกค่า b: 6 กรอกค่า c: 5 ข้อมูลทดสอบชุดที่ 4 Input Output กรอกค่า a: 3 x1=0.215250437022, x2=-1.54858377035 กรอกค่า b: 4 กรอกค่า c: -1 3.13. Errorกรอกค่า a: 1 กรอกค่า b: 2 กรอกค่า c: 3 Traceback (most recent call last): File "<pyshell 26>", line 1, in -toplevel-main() File "...", line 14, in ... ValueError: math domain error> 3.14. Exercises
กำนดสมการในการคำนวณหาความเร็วปลาย \(v_s\) คือ \[v_s = v_0 + at\] หน่วยวัด
ข้อมูลนำเข้า ข้อมูลนำเข้ามีบรรทัดเดียวเป็นชุดของตัวเลข 3 จำนวนคั่นด้วย Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 0 โดยตัวแรกเป็นค่า \(a\) ตัวถัดมาเป็นค่าของ \(v_0\) และ \(t\)ตามลำดับ ข้อมูลส่งออก ตัวเลขหนึ่งตัวระบุค่าของ \(v_s\) ตัวอย่างข้อมูล Input Output 8, 5, 20 165 10, 2, 15 152 5, 10, 20 110 3.15. การเขียนโปรแกรมสะสมค่าเป็นการเขียนโปรแกรมที่จำเป็นต้องมีการคำนวณมากกว่า 1 ครั้งจึงจะได้ผลลัพธ์ เช่น
3.15.1. ตัวอย่างการเขียนโปรแกรมสะสมค่า เพื่อบวก 5 ตัวเลข
Input - ตัวเลข 5 ตัวเลข Output - ผลรวม 5 ตัวเลข Process - เก็บสะสมผลรวมของตัวเลขที่ผู้ใช้กรอกมาเรื่อยจนครบ 5 ตัวเลข \[total = total + x\] เมื่อ \(x\) แทนค่าที่ผู้ใช้กรอก
total = 0 x = int(input('กรอกค่า x: ')) total = total + x x = int(input('กรอกค่า x: ')) total = total + x x = int(input('กรอกค่า x: ')) total = total + x x = int(input('กรอกค่า x: ')) total = total + x x = int(input('กรอกค่า x: ')) total = total + x print('ผลรวมคือ '+str(total)) หรือ print(f'ผลรวมคือ {total}')
รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่? ตัวอย่างข้อมูลชุดที่ 1 Input Output กรอกค่า x: 1 ผลรวมคือ 15 กรอกค่า x: 2 กรอกค่า x: 3 กรอกค่า x: 4 กรอกค่า x: 5 ตัวอย่างข้อมูลชุดที่ 2 Input Output กรอกค่า x: -1 ผลรวมคือ 63 กรอกค่า x: 22 กรอกค่า x: 13 กรอกค่า x: 14 กรอกค่า x: 15 ตัวอย่างข้อมูลชุดที่ 3 Input Output กรอกค่า x: 5 ผลรวมคือ 35 กรอกค่า x: 6 กรอกค่า x: 7 กรอกค่า x: 8 กรอกค่า x: 9 3.16. คำสั่งทำซ้ำInput - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 1 ครั้ง จากตัวอย่างข้างต้นจะเห็นว่าการเขียนโปรแกรมที่มีการทำงานซ้ำๆกันด้วยคำสั่งชุดเดิมๆ จะเกิดขึ้นบ่อยมาก ดังนั้นจึงมีคำสั่งทำซ้ำ Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 2 ซึ่งจะช่วยให้การเขียนโปรแกรมมีความยืดหยุ่นและลดความซ้ำซ้อน(ในการพิมพ์ลงไปมาก) จากตัวอย่างการเขียนโปรแกรมเพื่อบวก 5 ตัวเลข type(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>0 สามารถนำมาเขียนใหม่โดยใช้ Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 2 ดังนี้ type(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>1 3.16.1. Exercise
ข้อมูลนำเข้า (Input) ตัวเลขทศนิยม 10 ตัวเลข แทน gpa ของนักศึกษา 10 คน ตัวเลขละบรรทัด ข้อมูลส่งออก (Output) ตัวเลขแสดงผลรวมของ gpa ของนักศึกษาทั้ง 10 คน ตัวอย่างข้อมูลนำเข้า-ส่งออก ตัวอย่างข้อมูล Input Output 2.55 33.82 3.55 2.75 2.66 3.95 4.00 3.75 3.64 3.44 3.53
ข้อมูลนำเข้า (Input) ตัวเลขทศนิยม 10 ตัวเลข แทน gpa ของนักศึกษา 10 คน ตัวเลขละบรรทัด ข้อมูลส่งออก (Output) ตัวเลขแสดงผลเฉลี่ยของ gpa ของนักศึกษาทั้ง 10 คน ตัวอย่างข้อมูล Input Output 2.55 3.382 3.55 2.75 2.66 3.95 4.00 3.75 3.64 3.44 3.53 3.16.2. ถ้าผู้ใช้ต้องการกรอกจำนวนตัวเลขเองtype(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>2 ตัวอย่างข้อมูลชุดที่ 1 Input Output จำนวนตัวเลขที่ต้องการกรอก: 3 ผลรวมคือ 20 กรอกค่า x: 9 กรอกค่า x: 7 กรอกค่า x: 4 ตัวอย่างข้อมูลชุดที่ 1 Input Output จำนวนตัวเลขที่ต้องการกรอก: 2 ผลรวมคือ 29 กรอกค่า x: 15 กรอกค่า x: 14 3.16.3. Exercise
ข้อมูลนำเข้า (Input) บรรทัดแรกเป็นตัวเลขจำนวนเต็ม \(n\) ระบุจำนวนนักศึกษา \(n\) บรรทัดถัดมาเป็นตัวเลขทศนิยมระบุค่า gpa ของนักศึกษาแต่ละคน ข้อมูลส่งออก (Output) ตัวเลขทศนิยมหนึ่งค่า ระบุผลรวมของ gpa ของนักศึกษาทั้งหมด ตัวอย่างข้อมูลนำเข้า-ส่งออก ตัวอย่างข้อมูลชุดที่ 1 Input Output 3 10.43 3.22 3.55 3.66 ตัวอย่างข้อมูลชุดที่ 2 Input Output 6 21.17 3.45 3.65 3.32 3.55 3.54 3.66
3.17. ฟังก์ชันInput - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 4
type(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>3 3.18. Exerciseจงเขียนคำสั่งทำซ้ำเพื่อให้ได้ผลลัพธ์ต่อไปนี้
3.19. การใช้ลำดับแทนInput - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$ Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$ Process - คำนวณรากของสมการโดยใช้สมการ 4 3.19.1. ลำดับ (sequence) ~ Recallลำดับ (sequence) หมายถึง ชุดของข้อมูลที่มีสมาชิกเรียงกันเป็นลำดับมีตำแหน่งของสมาชิกแต่ละตัวชัดเจน เช่น 3.44, 2.22, 3.00, 3.50, 3.66 เป็นลำดับที่มีสมาชิกดังนี้
ตัวอย่างการเขียนชุดข้อมูลที่เป็นลำดับในภาษา Python type(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>4 3.19.2. การใช้คำสั่งทำซ้ำกับลำดับtype(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>5 3.19.3. การใช้คำสั่งทำซ้ำเพื่อสะสมค่าtype(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>6 3.20. การตรวจสอบค่าสะสมในแต่ละขั้นตอนtype(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>7 3.21. การสะสมในแต่ละขั้นตอนด้วยการคูณ หรือตัวดำเนินการอื่นtype(3) <class 'int'>type(3.44) <class 'float'>age = 32 type(age) <class 'int'>8 3.22. ตัวอย่างการพัฒนาซอฟต์แวร์คำนวณยอดเงินลงทุนใน 10 ปี
Input Output ต้นทุน, อัตราค่าตอบแทน: 1000, 0.01 ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 1104.6221254112043 ต้นทุน, อัตราค่าตอบแทน: 10000, 0.03 ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 13439.16379344122 ต้นทุน, อัตราค่าตอบแทน: 2000000000, 0.05 ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 3257789253.554883 3.23. Exercise
\[n! = n \times (n-1) \times (n-2) \times ... \times 2 \times 1\] ตัวอย่างการคำนวณ \[\begin{split}5! = 5 \times 4 \times 3 \times 2 \times 1 \\ 9! = 9 \times 8 \times 7 \times 6 \times 5 \times 4 \times 3 \times 2 \times 1\end{split}\] ตัวอย่างข้อมูลนำเข้า-ส่งออก ตัวอย่างข้อมูล Input Output 3 6 5 120 9 362880 20 2432902008176640000 EX0307 จงเขียนโปรแกรมเพื่อคำนวณหายอดเงินฝากธนาคารรวมเมื่อสิ้นปีที่ 4 จากเงินต้นที่ผู้ใช้กรอก และอัตราดอกเบี้ยร้อยละ 4 ต่อปี |