Python รับข้อมูลด้วย input()
พอเขียนโปรแกรมเป็นแล้ว สิ่งที่อยากทำต่อมาคือให้โปรแกรม “คุย” กับคนได้ ไม่ใช่แค่รันแล้วแสดงผลลัพธ์เดิมทุกครั้ง ตัวที่ทำหน้าที่นี้ใน Python คือฟังก์ชัน input()
input() ทำงานยังไง
เวลาโปรแกรมเจอ input() จะหยุดรอ ให้เราพิมพ์อะไรบางอย่างแล้วกด Enter จากนั้นค่าที่เราพิมพ์จะถูกส่งกลับมาให้เราเก็บไว้ในตัวแปร
name = input("คุณชื่ออะไร: ")
print("สวัสดีครับคุณ", name)ผลลัพธ์ (บรรทัดแรกคือสิ่งที่เราพิมพ์เอง):
คุณชื่ออะไร: สมชาย
สวัสดีครับคุณ สมชายข้อความที่ใส่ในวงเล็บ ("คุณชื่ออะไร: ") เรียกว่า prompt เป็นแค่ข้อความบอกใบ้ให้คนใช้รู้ว่าต้องกรอกอะไร จะใส่หรือไม่ใส่ก็ได้ แต่ใส่ไว้จะเป็นมิตรกับคนใช้มากกว่า
เรื่องที่คนมักพลาด: input() คืนค่าเป็นข้อความเสมอ
จุดนี้สำคัญมาก ไม่ว่าคุณจะพิมพ์ตัวเลขลงไปแค่ไหน input() จะมองเป็นข้อความ (string) ทั้งหมด
age = input("อายุเท่าไหร่: ")
print(age + 1)โค้ดนี้พังทันที เพราะเราพยายามเอาข้อความ "20" มาบวกกับตัวเลข 1
TypeError: can only concatenate str (not "int") to strทางแก้คือแปลงชนิดข้อมูลก่อนใช้ ถ้าอยากได้จำนวนเต็มใช้ int() ถ้าอยากได้ทศนิยมใช้ float()
age = int(input("อายุเท่าไหร่: "))
print("ปีหน้าคุณจะอายุ", age + 1)ผลลัพธ์:
อายุเท่าไหร่: 20
ปีหน้าคุณจะอายุ 21รับหลายค่าในบรรทัดเดียว
บางครั้งเราอยากให้คนใช้กรอกหลายค่ารวดเดียว เช่น กรอกตัวเลขสองตัวคั่นด้วยเว้นวรรค ใช้ split() ช่วยตัดข้อความออกเป็นส่วน ๆ
a, b = input("กรอกเลขสองตัว คั่นด้วยเว้นวรรค: ").split()
a = int(a)
b = int(b)
print("ผลบวก =", a + b)ผลลัพธ์:
กรอกเลขสองตัว คั่นด้วยเว้นวรรค: 7 5
ผลบวก = 12ถ้าอยากเขียนสั้นลง แปลงทุกตัวพร้อมกันด้วย map() ได้
a, b = map(int, input("กรอกเลขสองตัว: ").split())
print("ผลคูณ =", a * b)ตัวอย่างรวม: โปรแกรมคำนวณพื้นที่สี่เหลี่ยม
print("=== คำนวณพื้นที่สี่เหลี่ยมผืนผ้า ===")
width = float(input("ความกว้าง (เมตร): "))
height = float(input("ความยาว (เมตร): "))
area = width * height
print("พื้นที่ =", area, "ตารางเมตร")ผลลัพธ์:
=== คำนวณพื้นที่สี่เหลี่ยมผืนผ้า ===
ความกว้าง (เมตร): 3.5
ความยาว (เมตร): 4
พื้นที่ = 14.0 ตารางเมตรสรุป
input()ใช้รับข้อความจากคนใช้ โปรแกรมจะหยุดรอจนกว่าจะกด Enter- ค่าที่ได้เป็น string เสมอ ถ้าจะเอาไปคำนวณต้องแปลงด้วย
int()หรือfloat()ก่อน split()ช่วยแยกข้อความหลายค่าในบรรทัดเดียว จับคู่กับmap()เพื่อแปลงชนิดทีเดียวได้
บทถัดไปเราจะไปดูตัวดำเนินการ (operators) ว่ามีอะไรบ้าง เพื่อเอาค่าที่รับเข้ามาไปคำนวณต่อ