จำนวนในภาษา Python (Python Numbers)

ทบทวนจากบทที่แล้ว การคำนวนด้วยภาษา Python

ภาษา python มีเลขจำนวนแบ่งได้ 3 ชนิด คือ
1. จำนวนเต็ม (int ,or integer ) คือ จำนวนเต็มบวก หรือจำนวนเต็มลบ โดยไม่มีทศนิยม
2. จำนวนจริง (float , or floating point) คือจำนวนจริง ที่เป็นจำนวนจริงบวก หรือจำนวนจริงลบ เป็นเลขทศนิยม
3. จำนวนเชิงซ้อน (complex number) คือ จำนวนที่ประกอบด้วย จำนวนจริง และจำนวนจินตภาพ โดยจำนวนจินตภาพจะเขียนด้วย j ตามหลังตัวเลข

ข้อมูลเลขจำนวนนี้มีคุณสมบัติที่สามารถเพิ่มหรือลดค่าได้ คำนวณค่าได้ และเปลี่ยนแปลงค่าได้

จำนวนเต็ม (integer)

จำนวนเต็ม (int ,or integer ) คือ จำนวนเต็มบวก หรือจำนวนเต็มลบ โดยไม่มีทศนิยม สามารถเก็บความยาวได้ไม่จำกัด (ขึ้นอยู่กับจำนวนหน่วยความจำที่เครื่องมีอยู่) เลขจำนวนเต็มสามารถแสดงได้หลายแบบ เช่น จำนวนเต็มแบบฐานสิบ , จำนวนเต็มแบบฐานสอง , จำนวนเต็มแบบฐานแปด , จำนวนเต็มแบบฐานสิบหก เช่น

เลขฐานสิบเลขฐานสองเลขฐานแปดเลขฐานสิบหก
28‭0b111000o340x1c
-38-0b100110-0o46-0x26
4560b1110010000o7100x1c8
เลขจำนวนเต็มสามารถแสดงได้ จำนวนเต็มแบบฐานสิบ , จำนวนเต็มแบบฐานสอง , จำนวนเต็มแบบฐานแปด , จำนวนเต็มแบบฐานสิบหก

การกำหนดว่าข้อมูลนี้เป็นตัวเลขฐานอะไร เราจะใช้การเติม prefix หน้าตัวเลขฐานนั่น

ระะบบเลขฐานprefixตัวอย่าง
เลขฐานสิบ (decimal) ไม่ใส่ prefix28
เลขฐานสอง (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()

  1. ฟังก์ชัน 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 หาร yfmod(5,2) #5 mod 2 ได้ 1
fsum(iterable)คำสั่งรวมค่าที่อยุ่ภายใน iterablei = [ 1 , 5 ,7 ,9]
fsum(i) # 1 + 5 + 7 + 9 = 22.0
exp(x)คำสั่งคำนวณ e ยกกำลัง xexp(2) # e ยกกำลัง 2
log(x,[base])คำสั่งคำนวณค่า log ของ x ที่ฐาน base
ถ้าไม่ได้กำหนดค่า base จะใช้ฐาน e แทน
log(100,10) # log ของ 100 ฐาน 10 ได้ 2.0
log2(x)คำสั่งคำนวณค่า log ของ x ที่ฐาน 2log2(9) # log ของ 8 ฐาน 2 ได้ 3.0
log10(x)คำสั่งคำนวณค่า log ของ x ที่ฐาน 10log10(100) # log ของ 100 ฐาน 10 ได้ 2.0
pow(x,y)คำสั่งเลข x ยกกำลัง ypow(3,2) # 3 ยกกำลัง 2 ได้ 9
sqrt(x,y) คำสั่งหารากที่ 2 ของ xsqrt(9,3) # รากที่ 2 ของ 9 ได้ 3.0
sin(x)คำสั่งหาค่า sin ของเรเดียน x sin(1.5708) # ค่า sin ของมุม 1.578 เรเดืยน
หรือ 90 องศา
cos(x)คำสั่งหาค่า cos ของ xcos(0) # ค่า cos ของมุม 0 เรเดืยน
หรือ 0องศา
tan(x)คำสั่งหาค่า tan ของ xtan(0.785398) # ค่า tan ของมุม 0.785398เรเดืยน
หรือ 45 องศา
asinh(x)คำสั่งหาค่า arc sin ของ xasinh(1.5708) # ค่า arc sin ของมุม 1.578 เรเดืยน
หรือ 90 องศา
acosh(x)คำสั่งหาค่า arc cos ของ xacosh(0) # ค่า arc cos ของมุม 0 เรเดืยน
หรือ 0องศา
atanh(x)คำสั่งหาค่า arc tan ของ xatanh(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 ได้)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: