3.4 การแปลงชนิดข้อมูล
ฟังก์ชัน input () จะรับข้อมูลเข้าจากผู้ใช้ผ่านทางคีย์บอร์ด และจะเป็นข้อมูลชนิดสตริงเท่านั้น ซึ่งไม่สามารถนําไปคํานวณทางคณิตศาสตร์ได้
นักเรียนคิดว่าคําสั่งต่อไปนี้ ทํางานได้หรือไม่
width = input("ป้อนความกว้างของสี่เหลี่ยม")
length = input("ป้อนความยาวของสี่เหลี่ยม")
area = width * length
print("พื้นที่สี่เหลี่ยม คือ", area, "ตารางหน่วย")
หากพิมพ์คําสั่งในคอนโซลจะมีข้อผิดพลาดจากการทํางานในคําสั่ง area = width * length เพราะตัวแปร width และ length จะเก็บข้อมูลสตริง แม้ว่าผู้ใช้จะป้อนข้อมูลเป็นตัวเลขก็ตาม
ดังนั้นหากต้องการนําค่าที่รับจากฟังก์ชัน input ( ) ไปใช้ในการคํานวณทางคณิตศาสตร์ จะต้องแปลงให้เป็นข้อมูล ชนิดจํานวนก่อนโดยใช้ฟังก์ชัน int() เพื่อแปลงสตริงเป็นจํานวนเต็ม หรือฟังก์ชัน float () เพื่อแปลงสตริง เป็นจํานวนจริง ดังตัวอย่างที่ 3.7
ตัวอย่างที่ 3.7 การแปลงข้อมูลสตริงให้เป็นข้อมูลชนิดจํานวน
พิมพ์คําสั่งต่อไปนี้ในคอนโซล
val = input("ป้อนค่าจํานวนเต็มค่าหนึ่ง ") # บรรทัดที่ 1
type (val) # บรรทัดที่ 2
intVal = int (val) # บรรทัดที่ 3
type (intVal) # บรรทัดที่ 4
จะได้ผลลัพธ์คือ
>>> val = input("ป้อนค่าจํานวนเต็มค่าหนึ่ง ")
ป้อนค่าจํานวนเต็มค่าหนึ่ง 4
>>> type (val)
str
>>> intVal = int (val)
>>> type (intVal)
int
จากตัวอย่างที่ 3.7 อธิบายได้ดังนี้
1. หลังจากไพทอนรันคําสั่งในบรรทัดที่ 1 และผู้ใช้ป้อนตัวอักขระ "4" แล้ว ตัวแปร val จะเก็บข้อมูลสตริง
ของอักขระ "A" ซึ่งตรวจสอบได้จากคําสั่ง type (val) ในบรรทัดที่ 2
2. บรรทัดที่ 3 ใช้ฟังก์ชัน int () ในการแปลงค่าสตริงของตัวแปรให้เป็นจํานวนเต็ม แล้วกําหนดค่าให้กับตัวแปร intVal ซึ่ง
ตรวจสอบชนิดได้จากคําสั่งในบรรทัดที่ 4
ตัวอย่างที่ 3.8 ร่วมด้วยช่วยแชร์
ถ้านักเรียนไปรับประทานอาหารฉลองวันปิดเทอมกับเพื่อน และตกลงกันว่าจะจ่ายค่าอาหารคนละ เท่า ๆ กัน นักเรียนแต่ละคนจะต้อง
จ่ายค่าอาหารคนละเท่าใด ให้ใช้คําสั่งไพทอนแสดงวิธีหาคําตอบที่ละลําดับ
แนวคิดการแก้ปัญหา
จากแนวทางการแก้ปัญหานี้ในบทที่ 1 แนวทางการแก้ปัญหาอาจเขียนเป็นรหัสลําลองได้ดังนี้
1. totalPrice 4 - รับค่าอาหารทั้งหมด
2. mber 4 - รับจํานวนผู้รับประทานอาหาร
3. avg +- ค่าอาหารทั้งหมด/จํานวนผู้รับประทานอาหาร
4. แสดงผล avg
พิมพ์คําสั่งต่อไปนี้ลงในคอนโซล
totalPrice = int (input('ค่าอาหารทั้งหมด ))
number = int (input(จํานวนผู้รับประทานอาหาร ))
avg = totalPrice/number
print ("จ่ายค่าอาหารคนละ", avg, 'บาท)
หากทดลองป้อนราคาอาหาร และจํานวนผู้รับประทานอาหาร เป็น 1,289 บาท และ 15 คน ตามลําดับ จะได้ผลลัพธ์ดังนี้
>>> totalPrice = int (input(ค่าอาหารทั้งหมด ))
ราคาอาหารทั้งหมด >? 1289
>>> number = int (input('จํานวนผู้รับประทานอาหาร "))
จํานวนผู้รับประทานอาหาร >? 15
>>> avg = totalPrice/number
>>> print ("จ่ายค่าอาหารคนละ, avg, 'บาท)
จ่ายค่าอาหารคนละ 85.93333333333334 บาท