ประเภทข้อมูล

ประเภทข้อมูล หรือ Data Type คือลักษณะการจัดเก็บข้อมูลที่จะสามารถเก็บข้อมูลและใช้งานตามลักษณะที่ได้ระบุไว้ใน Python

โดยใน Python นั้นมีให้เราเลือกเก็บมากมาย แต่ก็จะมีเพียง 6 ประเภทที่เราจะได้ใช้งานกันบ่อย ๆ ดังต่อไปนี้

ประเภทข้อมูลประเภทข้อมูลที่จัดเก็บตัวอย่างข้อมูลที่จัดเก็บได้
Stringตัวอักษร"kumamon" "1112"
Booleanค่าจริงหรือเท็จTrue False
Floatค่าที่มีจุดทศนิยม1.00 1.112 -0.999
Integerจำนวนเต็ม2000 0 -1
Listลิสต์[1, 0, -555]
Dictionaryดิกชันแนรี[{'a': '1112', 'b': 0, 'c': 555}]

วิธีการเก็บข้อมูล

เนื่องจาก Python จะทำการเลือกประเภทข้อมูลให้โดยอัตโนมัติหากผู้ใช้งานไม่ได้ทำการระบุ เราจึงสามารถจัดเก็บเข้าไปอยู่ในตัวแปรได้เลยดังนี้

name = "Jeff Bessus"
age = 22
height = 123.45
sus_flag = False
tag = ['Amogus', 'Red', 'Reporter']

และตัวแปร name, age, height, sus_flag, tag ก็จะมีการเก็บข้อมูลเป็นประเภท String, Integer, Float, Boolean, List ตามลำดับ

วิธีตรวจสอบประเภทของตัวแปร

บางครั้งเราอยากที่จะทราบว่าตัวแปรหรือข้อมูลแบบนี้มีการเก็บข้อมูลเป็นประเภทใด เราก็สามารถทำการตรวจสอบได้โดยการใช้ฟังก์ชัน type() ในการตรวจสอบได้ และ Python ก็จะทำการคืนค่าประเภทตัวแปรออกมาให้เรารับทราบ

var = "Hello"
type(var) # <class 'str'> (เป็นประเภท String)

var = "1234"
type(var) # <class 'str'> (เป็นประเภท String)

var = 1234
type(var) # <class 'int'> (เป็นประเภท Integer)

var = 1234.56
type(var) # <class 'float'> (เป็นประเภท Float)

var = True
type(var) # <class 'bool'> (เป็นประเภท Boolean)

การแปลงประเภทตัวแปร

จากที่เราได้เรียนวิธีการใช้ฟังก์ชัน input() ไปเมื่อหัวข้อที่แล้ว เมื่อเราเข้าไปอ่านใน Documentation แล้วก็จะได้คำอธิบายมาดังนี้

If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.

หรือก็คือการอ่านแต่ละบรรทัด ด้วยข้อมูลใดก็ตามจะมีการแปลงมาเป็น String เสมอ ตัวอย่างเช่น

var = input()  # ใส่ค่า "Hello World" เข้ามาเป็น input
print(var)  # ผลลัพทืก็จะออกมาเป็น "Hello World"

var = input()  # ใส่ค่า 1112 เข้ามาเป็น input
print(var)  # ผลลัพทืก็จะออกมาเป็น "1112"

var = input()  # ใส่ค่า True เข้ามาเป็น input
print(var)  # ผลลัพทืก็จะออกมาเป็น "True"

var = input()  # ใส่ค่า 11.12 เข้ามาเป็น input
print(var)  # ผลลัพทืก็จะออกมาเป็น "11.12"

แล้วถ้าเราอยากจะรับข้อมูลมาเป็นประเภทอื่นบ้างหล่ะ เช่น Integer หรือ Boolean เพื่อที่เราจะได้เอามันมาทำ Operation ที่ใช้ได้กับพวกประเภทดังกล่าวได้เท่านั้น ตัวอย่างเช่น

var1 = input()  # ใส่ค่า 12
var2 = input()  # ใส่ค่า 14

var3 = var1 * var2  # คาดหวังว่า 12 x 14 = 168

print(var3)

แล้วมันก็ขึ้น Error อ่ะ เพราะว่ามันเป็น String ทั้งสองตัวแปรเลย จึงไม่สามารถเอามันมาคูณกันได้ ดังนั้นเราจึงต้องทำการเปลี่ยนประเภทตัวแปร (Data Casting) ซึ่งก็สามารถทำได้หลายวิธีมากเลย แต่เราจะทำด้วยการใช้ฟังก์ชันในหัวข้อถัดไป

วิธีการแปลง

เราสามารถใช้งานฟังก์ชันที่อยู่ใน Python ในการเปลี่ยนแปลงค่าได้ด้วยวิธีดังนี้

ประเภทตัวแปรวิธีการแปลง
Stringstr()
Booleanbool()
Floatfloat()
Integerint()

โดย Python จะพยายามเก็บข้อมูลและแปลงประเภทข้อมูลให้อัตโนมัติ หากมีความจำเป็น

ตัวอย่างเช่น (การแปลง String ไปเป็น Integer)

var = "1112"
var = int(var)
print(type(var))  # ก็จะออกมาเป็น <class 'int'>

ตัวอย่างที่ 2 (การเปลี่ยน Float ไปเป็น Integer)

var = 11.12
var = int(var)
print(type(var)) # ก็จะออกมาเป็น <class 'int'>

และเนื่องจากฟังก์ชันจะมีการคืนค่าทันที เราจึงสามารถสรุปรวบยอดเป็นบรรทัดเดียวได้ดังนี้

var1 = int(input())
var1 = bool(input())
var1 = float(input())

และเนื่องจากมี data type มีมากกว่า 4 ประเภท ตามที่พี่มงได้อธิบายไว้
การแปลงประเภทข้อมูลชนิดอื่นๆ จะอยู่ใน lecture ถัดๆไปนะจ๊ะ

Challenge

น้องๆ ลองทดสอบดูครับ ตัวอย่างเช่น

var1 = 1112
var2 = 0.1112
var3 = var1 + var2

พี่มงจึงได้อยากรู้ว่า var3 นั้นได้จัดเก็บเป็นข้อมูลประเภทใด โดยการใช้ type() และก็ได้ผลบอกว่ามันคือประเภท float
จึงถามน้องๆว่า var3 ทำไมจึงจัดเก็บไปเป็นประเภท float ครับ?