Python Input นี้จะกล่าวถึงการรับข้อมูลจากผู้ใช้ เพื่อนำข้อมูลไปประมวลผลต่อไป หรือ การเขียนโค้ดเพื่อให้มีการโต้ตอบกับผู้ใช้ ตัวอย่างคลาสสิกก็น่าจะเป็น การให้ผู้ใช้งานใส่ชื่อผู้ใช้งาน อาจจะเอาไปบันทึกว่าใครเป็นคนใช้งานล่าสุด หรือว่า ให้ใส่ตัวแปรหรือข้อมูลเพื่อนำไปคำนวณหรือจัดการอะไรต่อไป
ฟังก์ชัน Python Input()
วิธีเขียนคำสั่ง โดยใช้ฟังก์ชัน input ง่าย ๆ ก็คือ
Input([ข้อความแนะนำ])
[ข้อความแนะนำ] ในวงเล็บเป็นข้อความเพื่อแสดงข้อความแนะนำถึงผู้ใช้ ว่าต้องการให้ผู้ใช้ใส่ข้อมูลอะไร อย่างเช่น “ใส่ชื่อของท่าน” เพื่อจะขอให้ผู้ใช้งานพิมพ์ชื่อ
เมื่อใช้ฟังก์ชัน input() หมายความว่า จะมีการรอจนกว่าผู้ใช้จะป้อนค่าบางอย่างเข้าไป และกด enter แล้ว จะมีการอ่านค่าที่ผู้ใช้พิมพ์เข้าไป และส่งกลับไปประมวลผลตามคำสั่งที่เขียนไปว่าจะให้ทำอะไรกับสิ่งที่รับจากผู้ใช้งานใส่เข้ามา
tip: สิ่งที่ผู้ใช้พิมพ์เข้าไป จะเป็น string (ข้อความ) เท่านั้น ไม่ว่าจะพิมพ์ตัวเลขเข้าไป ก็จะโดนเก็บเป็น string
มาดูตัวอย่างกัน จะเขียนและแสดงผลผ่าน https://colab.research.google.com/
เราจะให้ผู้ใช้งานใส่ ชื่อ นามสกุล และ บริษัท แล้วให้พิมพ์ออกมาว่า ผู้ใช้คนนี้ชื่อนามสกุลอะไร ทำงานที่ไหน โดยให้ผลลัพธ์ออกมาว่า “คุณ ชื่อผู้ใช้ ทำงานที่บริษัท ชื่อบริษัท” เราเขียนโค้ดได้แบบนี้
name = input("โปรดใส่ชื่อและนามสกุล: ")
company = input("โปรดใส่ชื่อบริษัท: ")
print(“คุณ ”, name, “ ทำงานที่บริษัท “ , company)
โค้ดนี้ เราสร้างตัวแปร name สำหรับข้อมูล “ชื่อ” ที่ผู้ใช้จะใส่เข้ามา และตัวแปร company สำหรับข้อมูลบริษัทที่ผู้ใช้งานจะใส่เข้ามา
เมื่อเรากด run คำสั่งนี้ เราจะได้ output แรกคือ การขอรับค่า input สำหรับตัวแปร name
เมื่อเรากด run คำสั่งนี้ เราจะได้ output แรกคือ การขอรับค่า input สำหรับตัวแปร name
เมื่อมีการพิมพ์ค่าลงไป ก็จะมีการขอรับค่า input สำหรับตัวแปร company
เมื่อใส่ค่าแล้ว ก็จะส่ง output ออกมา
แปลง input ให้เป็นตัวเลข
อย่างที่บอกข้างต้นว่า สิ่งที่ input เก็บจะเป็น string หรือ ข้อความ แต่ถ้าเราจะให้เก็บเป็นตัวเลข จะเป็น intiger หรือ float เพื่อจะใช้ในการคำนวณเราจะทำอย่างไร?
วิธีง่าย ๆ ก็คือ เราต้องใช้วิธี type conversion
คือ
float()
หรือ
Int()
โปรดอ่านเรื่อง ประเภทข้อมูล หรือ Data Type ประกอบ
จะยกตัวอย่างให้ดู
point = float(input("โปรดใส่คะแนน "))
print("คะแนนที่ได้: ", point)
print("ตรวจสอบประเภทข้อมุล:", type(point))
ตัวอย่างนี้ เราสร้างตัวแปร point โดยให้ผู้ใช้เป็นคนใส่ตัวเลขเข้ามา แต่เนื่องจากฟังก์ชัน input จะเก็บข้อมูลเป็น string เท่านั้น เราใช้ฟังก์ชัน float ครอบทับ input เพื่อแปลงประเภทข้อมูลจาก string ให้เป็น float
บรรทัดที่ 2 จะเป็นการแสดง output จาก input ที่รับมา
และ บรรทัดที่ 3 เราใช้ฟังก์ชัน type เพื่อแสดงประเภทข้อมูลของตัวแปร point ที่เก็บไว้ เพื่อแสดงให้เห็นว่า นี่เป็น float จริง ๆ นะจ๊ะ
รับ input หลายค่าในบรรทัดเดียว
ตัวอย่างด้านบน จะเป็นการใส่ input ในแต่ละบรรทัดคำสั่ง แต่ในการเขียนโค้ดจริง เราเขียนรับ input ในบรรทัดเดียวมากกว่า 1 input ได้ โดยจะใช้ฟังก์ชัน split() เป็นตัวช่วย
split() จะแยก string เป็น list โดยจะให้ค่าตั้งต้นว่าใช้ช่องว่างเป็นตัวคั่น แต่เราจะระบุตัวคั่นอย่างที่ต้องการก็ได้
ลองกลับไปที่ตัวอย่างแรก เราจะใช้ฟังก์ชัน input() เพียงครั้งเดียว เราสามารถให้ผู้ใช้ใส่ชื่อ และบริษัท เก็บไว้ในตัวแปร 2 ตัว
name, company = input("โปรดใส่ชื่อและนามสกุล, บริษัท แยกโดยใช้ช่องว่าง ").split()
print("\n")
print("ข้อมูลผู้ใช้งาน: ", name,company)
ตัวอย่างนี้เราสร้างตัวแปร 2 ตัว คือ name กับ company เพื่อรับข้อมูล ชื่อ นามสกุล และชื่อบริษัท โดยเราจะใช้ .split เป็นตัวแยกข้อมูลที่รับมา
แต่พอพิมพ์ว่า “ชื่อนั่น นามสกุลนี่ DataRevol.com”
แต่ผลปรากฏว่า….
เกิด error ขึ้น
เหตุผลง่ายมาก ถ้าเห็นบรรทัดแรกก็คงเห็นแล้วว่า “แยกโดยใช้ช่องว่าง” โดยเราสร้างตัวแปรเอาไว้รองรับเพียงแค่ 2 ตัว แต่เวลาพิมพ์เข้าไป กลายเป็นว่า มีวรรคคั่น กลายเป็น 3 ตัวแปร มันก็ error แบบนี้แหละจ้ะ
ถ้าเราเปลี่ยนใหม่ เป็น
name, company = input("โปรดใส่ชื่อและนามสกุล, บริษัท โปรดใส่จุลภาคตามหลังนามสกุล ").split(',')
print("\n")
print("ข้อมูลผู้ใช้งาน: ", name,company)
สิ่งที่เปลี่ยนไปก็คือ split มีการกำหนดให้ใช้ จุลภาค หรือ comma ในการแยกตัวแปร ซึ่งเราก็ต้องบอก (หรือแนะนำ) ผู้ใช้งานด้วยว่าต้องใส่ จุลภาคกำกับสำหรับแบ่งด้วยนะ ว่าอันไหนชื่อนามสกุล อันไหนชื่อบริษัท
ผลลัพธ์ที่ออกมาก็จะได้อย่างที่ต้องการ
ฟังก์ชัน python input() ก็มีเรื่องราวคร่าว ๆ เท่านี้ ไม่มีอะไรมาก เป็นฟังก์ชันสำหรับรับข้อมูลเพื่อนำไปทำอะไรก็ตาม
Learn Python – เรียนรู้ไพธอนไปด้วยกัน
Divider
บันทึกส่วนตัว เกี่ยวกับการเรียนรู้ภาษาไพธอน
Discover more from Data Revol
Subscribe to get the latest posts sent to your email.