ทบทวนจากบทที่แล้ว การคำนวนด้วยภาษา Python
ภาษา python มีเลขจำนวนแบ่งได้ 3 ชนิด คือ
1. จำนวนเต็ม (int ,or integer ) คือ จำนวนเต็มบวก หรือจำนวนเต็มลบ โดยไม่มีทศนิยม
2. จำนวนจริง (float , or floating point) คือจำนวนจริง ที่เป็นจำนวนจริงบวก หรือจำนวนจริงลบ เป็นเลขทศนิยม
3. จำนวนเชิงซ้อน (complex number) คือ จำนวนที่ประกอบด้วย จำนวนจริง และจำนวนจินตภาพ โดยจำนวนจินตภาพจะเขียนด้วย j ตามหลังตัวเลข
ข้อมูลเลขจำนวนนี้มีคุณสมบัติที่สามารถเพิ่มหรือลดค่าได้ คำนวณค่าได้ และเปลี่ยนแปลงค่าได้
จำนวนเต็ม (integer)
จำนวนเต็ม (int ,or integer ) คือ จำนวนเต็มบวก หรือจำนวนเต็มลบ โดยไม่มีทศนิยม สามารถเก็บความยาวได้ไม่จำกัด (ขึ้นอยู่กับจำนวนหน่วยความจำที่เครื่องมีอยู่) เลขจำนวนเต็มสามารถแสดงได้หลายแบบ เช่น จำนวนเต็มแบบฐานสิบ , จำนวนเต็มแบบฐานสอง , จำนวนเต็มแบบฐานแปด , จำนวนเต็มแบบฐานสิบหก เช่น
เลขฐานสิบ | เลขฐานสอง | เลขฐานแปด | เลขฐานสิบหก |
---|---|---|---|
28 | 0b11100 | 0o34 | 0x1c |
-38 | -0b100110 | -0o46 | -0x26 |
456 | 0b111001000 | 0o710 | 0x1c8 |
การกำหนดว่าข้อมูลนี้เป็นตัวเลขฐานอะไร เราจะใช้การเติม prefix หน้าตัวเลขฐานนั่น
ระะบบเลขฐาน | prefix | ตัวอย่าง |
---|---|---|
เลขฐานสิบ (decimal) | ไม่ใส่ prefix | 28 |
เลขฐานสอง (binary) | ‘0b’ | 0b11100 |
เลขฐานแปด (octal) | ‘0o’ | 0o34 |
เลขฐานสิบหก (hexadecimal) | ‘0x’ | 0x1c |
และสามารถเขียนโปรแกรมเพื่อแปลงจากเลขฐานสิบเป็นเลขฐานอื่นๆโดยใช้ฟังก์ชันดังนี้
ฟังก์ชัน | ความหมาย | ตัวอย่าง |
---|---|---|
bin() | แปลงจากเลขฐานสิบ เป็นเลขฐานสอง | a = 21 bin(a) #0b10101 |
oct() | แปลงจากเลขฐานสิบ เป็นเลขฐานแปด | a = 21 oct(a) #0o25 |
hex() | แปลงจากเลขฐานสิบ เป็นเลขฐานสิบสอง | a = 21 hex(a) #0x15 |
จำนวนจริง (floating point)
จำนวนจริง (float , or floating point) คือจำนวนจริง ที่เป็นจำนวนจริงบวก หรือจำนวนจริงลบ เป็นเลขทศนิยม
สามารถเขียนได้ 2 รูปแบบคือ เขียนตัวเลขที่มีเครื่องหมายจุดทศนิยม เช่น 2.35 หรือ เขียนอยู่ในรูปเลขยกกำลังสิบ (Exponential form) โดยใช้ตัวอักษร E แล้วตามด้วยเลขยกกำลัง เช่น 3.48E2 = 3.48 x 10^2
Note: การบวก ลบ คูณ หาร หรือการดำเนินการทางคณิตศาสตร์ระหว่าง integer กับ float จะได้ผลลัพท์เป็น float เสมอ เนื่องจาก float มีขนาดใหญ่กว่า integer
จำนวนเชิงซ้อน (complex)
จำนวนเชิงซ้อน (complex number) คือ จำนวนที่ประกอบด้วย จำนวนจริง และจำนวนจินตภาพ โดยจำนวนจินตภาพจะเขียนด้วย j ตามหลังตัวเลข เช่น
3 + 7j มีจำนวนจริงเป็น 3 และจำนวนจินตภาพเป็น 7
Note: จำนวนจินตภาพ ในทางคณิตศาสตร์นั้น ตัว j จะมีคุณสมบัติที่ เมื่อ j ยกกำลัง 2 มีค่าเท่ากับ -1
การเปลี่ยนชนิดของข้อมูล (Type Conversion)
ภาษา python สามารถเปลี่ยนชนิดของข้อมูลตัวเลขได้ โดยใช้ฟังก์ชัน int(), float() และ complex()
- ฟังก์ชัน int() จะทำการเปลี่ยนข้อมูลตัวเลขเป็นข้อมูลตัวเลขจำนวนเต็ม และสามารถเปลี่ยนตัวเลขที่อยู่ในรูปของตัวอักษรมาเป็นข้อมูลตัวเลขจำนวนเต็มได้ด้วย เช่น
Coding
ผลลัพท์
print(int(18.0)) print(int(23.8)) print(int(3+7j)) print(int('543')) print(int('543.0'))
18 23 TypeError: can't convert complex to int 543 invalid literal for int() with base 10: '543.0'
บรรทัดที่ 1 คำสั่ง int เปลี่ยนเลขทศนิยม 18.0 โดยตัดทศนิยมทิ้ง ได้เป็นจำนวนเต็ม 18
บรรทัดที่ 2 คำสั่ง int เปลี่ยนเลขทศนิยม 23.8 โดยตัดทศนิยมทิ้งโดยไม่มีการปัด ได้เป็นจำนวนเต็ม 23
บรรทัดที่ 3 เกิด Error เนื่องจากคำสั่ง int ไม่สามารถเปลี่ยนจำนวนเชิงซ้อนเป็นจำนวนเต็มได้
บรรทัดที่ 4 คำสั่ง int เปลี่ยน ‘543’ ซึ่งเป็นข้อความที่เป็นจำนวนเต็ม ให้เป็นจำนวนเต็มได้ 543
บรรทัดที่ 5 เกิด Error เนื่องจากคำสั่ง int ไม่สามารถเปลี่ยนข้อความที่ไม่เป็นจำนวนเต็มให้เป็นจำนวนเต็มได้
2. ฟังก์ชัน float() จะทำการเปลี่ยนข้อมูลตัวเลขเป็นข้อมูลตัวเลขจำนวนจริง หรือเลขทศนิยม และสามารถเปลี่ยนตัวเลขที่อยู่ในรูปของตัวอักษรมาเป็นข้อมูลตัวเลขจำนวนจริงได้ เช่น
Coding
print(float(18)) print(float(23.8)) print(float(3+7j)) print(float('543')) print(float('543.0'))
ผลลัพท์
18.0 23.8 TypeError: can't convert complex to float 543.0 543.0
บรรทัดที่ 1 คำสั่ง float เปลี่ยนเลขจำนวนเต็ม 18 โดยเพิ่มทศนิยม ได้เป็นจำนวนเต็ม 18.0
บรรทัดที่ 2 คำสั่ง float จะไม่แก้ไขเลขจำนวนจริง ดังนั่นผลลัพท์ได้ 23.8 เหมือนเดิม
บรรทัดที่ 3 เกิด Error เนื่องจากคำสั่ง float ไม่สามารถเปลี่ยนจำนวนเชิงซ้อนเป็นจำนวนจริงได้
บรรทัดที่ 4 คำสั่ง float เปลี่ยน ‘543’ ซึ่งเป็นข้อความที่เป็นจำนวนเต็ม ให้เป็นจำนวนจริงได้ 543.0
บรรทัดที่ 5 คำสั่ง float เปลี่ยน ‘543.0’ ซึ่งเป็นข้อความที่เป็นจำนวนจริง ให้เป็นจำนวนจริงได้ 543.0
3. ฟังก์ชัน complex() จะทำการเปลี่ยนข้อมูลตัวเลขเป็นข้อมูลตัวเลขจำนวนเชิงซ้อน และสามารถเปลี่ยนตัวเลขที่อยู่ในรูปของตัวอักษรมาเป็นข้อมูลตัวเลขจำนวนเชิงซ้อนได้ เช่น
Coding
print(complex(18)) print(complex(23.8)) print(complex('3+7j')) print(complex('543')) print(complex('543.0'))
ผลลัพท์
(18+0j) (23.8+0j) (3+7j) (543+0j) (543+0j)
บรรทัดที่ 1 คำสั่ง complex เปลี่ยนเลขจำนวนเต็ม 18 โดยเติมจำนวนจินตภาพ 0j ได้เป็นจำนวนเชิงซ้อน (18+0j)
บรรทัดที่ 2 คำสั่ง complex เปลี่ยนเลขจำนวนเต็ม 23.8 โดยเติมจำนวนจินตภาพ 0j ได้เป็นจำนวนเชิงซ้อน (23.8+0j)
บรรทัดที่ 3 คำสั่ง complex เปลี่ยน ‘3+7j’ ซึ่งเป็นข้อความที่เป็นจำนวนเชิงซ้อน ให้เป็นจำนวนเชิงซ้อนได้ (3+7j)
บรรทัดที่ 4 คำสั่ง complex เปลี่ยน ‘543’ ซึ่งเป็นข้อความที่เป็นจำนวนเต็ม ให้เป็นจำนวนเชิงซ้อน โดยเติมจำนวนจินตภาพ 0j ได้ (543+0j)
บรรทัดที่ 5 คำสั่ง complex เปลี่ยน ‘543.0’ ซึ่งเป็นข้อความที่เป็นจำนวนจริง ให้เป็นจำนวนเชิงซ้อน โดยเติมจำนวนจินตภาพ 0j ได้ (543+0j)
ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operators)
ก่อนที่จะรู้จักตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operators) เราต้องรู้จักกับ ตัวดำเนินการกำหนดค่า (Assignment operator) ตัวดำเนินการนี้ใช้เครื่องหมาย ‘=’ ใช้ในการกำหนดค่าให้กับตัวแปร เช่น
a = 5 b = 4.1 c = 'Hello World'
ตัวดำเนินการทางคณิตศาสตร์ คือสัญลักษณ์ทางคณิตศาสตร์ที่ใช้แทนการกระทำอย่างใดอย่างหนึ่ง เช่น การบวก การลบ การคูณ การหาร และ การคำนวนที่เพิ่มเติม เช่น การหารเอาเศษ (Modulus) ,เลขยกกำลัง (Exponent) , การหารเอาส่วน (Floor division)
Operator | ความหมาย | ตัวอย่าง |
---|---|---|
+ | ก่ารบวก ( Addition ) | a = 10 b = 5 a + b # 10 + 5 =15 |
– | การลบ ( Subtraction ) | a = 10 b = 5 a – b # 10 – 5 = 5 |
* | การคูณ ( Multiplication ) | a = 4 b = 2 a * b # 4 x 2 = 8 |
/ | การหาร ( Division ) | a = 4 b = 2 a / b # 4 / 2 = 2.0 |
// | การหารเอาส่วน ( Floor Division ) | a = 5 b = 2 a // b # 5 // 2 = 2 |
% | การหารเอาเศษ ( Modulus ) | a = 5 b = 2 a % b # 5 Mod 2= 1 |
** | เลขยกกำลัง ( Exponent ) | a = 4 b = 2 a ** b # 4 ยกกำลัง 2 = 16 |
ตัวอย่าง
a = 5 b = 2 print("a + b = ", a + b) print("a - b = ", a - b) print("a * b = ", a * b) print("a / b = ", a / b) print("a // b = ", a // b) print("a % b = ", a % b) print("a ** b = ", a ** b)
ผลลัพท์
a + b = 7 a - b = 3 a * b = 10 a / b = 2.5 a // b = 2 a % b = 1 a ** b = 25
การคำนวนคณิตศาสตร์ซับซ้อนโดยใช้ไลบรารี่ Math
ภาษา python มีไลบรารี่ที่ช่วยในการคำนวณคณิตศาสตร์มากมาย ในบทนี้จะสอนการใช้งานโมดูล Math เพื่อช่วยในการคำนวณคณิตศาสตร์ที่ซับซ้อนขึ้น
โมดูล Math (Math Module) คือโมดูลมาตรฐาน (Standard module) ของภาษา python ประกอบด้วยฟังก์ชันทางคณิตศาสตร์ โดยต้องทำการประกาศใช้โมดูล Math ก่อน โดยใช้คำสั่ง import math
import math print(math.sqrt(4)) # รากที่ 2 ของ 4 คือ 2.0
ฟังก์ชันในโมดูล Math ที่น่าสนใจ
Function | ความหมาย | ตัวอย่าง |
---|---|---|
ceil(x) | คำสั่งปัดเศษส่วนของเลขทศนิยมขึ้น | ceil(5.1) # 6 |
fabs(x) | คำสั่งเปลี่ยนเป็นค่าสัมบูรณ์ | fabs(5.6) # 5.6 fabs(-5.6) # 5.6 |
floor(x) | คำสั่งปัดเศษส่วนของเลขทศนิยมลง | ceil(5.9) # 5 |
fmod(x,y) | คำสั่งหารเอาเศษ ที่ได้จาก x หาร y | fmod(5,2) #5 mod 2 ได้ 1 |
fsum(iterable) | คำสั่งรวมค่าที่อยุ่ภายใน iterable | i = [ 1 , 5 ,7 ,9] fsum(i) # 1 + 5 + 7 + 9 = 22.0 |
exp(x) | คำสั่งคำนวณ e ยกกำลัง x | exp(2) # e ยกกำลัง 2 |
log(x,[base]) | คำสั่งคำนวณค่า log ของ x ที่ฐาน base ถ้าไม่ได้กำหนดค่า base จะใช้ฐาน e แทน | log(100,10) # log ของ 100 ฐาน 10 ได้ 2.0 |
log2(x) | คำสั่งคำนวณค่า log ของ x ที่ฐาน 2 | log2(9) # log ของ 8 ฐาน 2 ได้ 3.0 |
log10(x) | คำสั่งคำนวณค่า log ของ x ที่ฐาน 10 | log10(100) # log ของ 100 ฐาน 10 ได้ 2.0 |
pow(x,y) | คำสั่งเลข x ยกกำลัง y | pow(3,2) # 3 ยกกำลัง 2 ได้ 9 |
sqrt(x,y) | คำสั่งหารากที่ 2 ของ x | sqrt(9,3) # รากที่ 2 ของ 9 ได้ 3.0 |
sin(x) | คำสั่งหาค่า sin ของเรเดียน x | sin(1.5708) # ค่า sin ของมุม 1.578 เรเดืยน หรือ 90 องศา |
cos(x) | คำสั่งหาค่า cos ของ x | cos(0) # ค่า cos ของมุม 0 เรเดืยน หรือ 0องศา |
tan(x) | คำสั่งหาค่า tan ของ x | tan(0.785398) # ค่า tan ของมุม 0.785398เรเดืยน หรือ 45 องศา |
asinh(x) | คำสั่งหาค่า arc sin ของ x | asinh(1.5708) # ค่า arc sin ของมุม 1.578 เรเดืยน หรือ 90 องศา |
acosh(x) | คำสั่งหาค่า arc cos ของ x | acosh(0) # ค่า arc cos ของมุม 0 เรเดืยน หรือ 0องศา |
atanh(x) | คำสั่งหาค่า arc tan ของ x | atanh(0.785398) # ค่า arc tan ของมุม 0.785398เรเดืยน หรือ 45 องศา |
radians(x) | คำสั่งแปลงมุม x จากองศาให้เป็นเรเดียน | radians(90) #แปลง 90 องศา เป็น 1.5708 เรเดืยน |
pi | ค่าคงที่ทางคณิตศาสตร์ของ π = 3.141592… | |
e | ค่าคงที่ทางคณิตศาสตร์ของ e = 2.718281… |
การสุ่มเลข (random number)
ในภาษา python จะมีโมดูล random ที่ใช้ในการสุ่มตัวเลขตามช่วงที่กำหนด
Coding
import random print(random.randrange(1,10)) print(random.randrange(-5,5)) print(random.randrange(1.5,10.0)) print(random.randrange(1.0,10.0))
ผลลัพท์
2 -4 ValueError("non-integer arg 1 for randrange()") 4
บรรทัดที่ 1 ให้นำเข้าโมดูล random เข้ามาใช้งาน
บรรทัดที่ 3 คำสั่ง randrange โดยกำหนดให้สุ่มตัวเลขระหว่าง 1 ถึง 10
บรรทัดที่ 4 คำสั่ง randrange โดยกำหนดให้สุ่มตัวเลขระหว่าง -5 ถึง 5
บรรทัดที่ 5 Error คำสั่ง randrange ไม่สามารถสุ่มตัวเลขที่ไม่ใช่จำนวนเต็มได้
บรรทัดที่ 6 คำสั่ง randrange โดยกำหนดให้สุ่มตัวเลขระหว่าง 1 ถึง 10 (เนื่องจาก 1.0 และ 10.0 สามารถเปลี่ยนเป็นจำนวนเต็ม 1 และ 10 ได้)