การรับข้อมูลจากผู้ใช้ (User Input) ในภาษา Python
การรับข้อมูลจากผู้ใช้ (User Input) ในภาษา Python สามารถทำได้โดยใช้ฟังก์ชัน input()
ซึ่งจะรับค่าข้อมูลจากผู้ใช้ผ่านทางคีย์บอร์ด (Keyboard) ซึ่งสามารถรับข้อมูลได้ทั้งตัวอักษรและตัวเลขได้ตามต้องการ การรับข้อมูลที่ผู้ใช้ป้อนผ่านคีย์บอร์ด และส่งค่ากลับมาในรูปของข้อความ (string) เพื่อนำไปใช้งานต่อได้ โดยรูปแบบการใช้งาน input()
ดังนี้
variable = input("Please enter a value: ")
โดยที่ variable
คือตัวแปรที่จะเก็บค่าที่ผู้ใช้ป้อนเข้ามา และ "Please enter a value: "
คือข้อความที่จะแสดงให้ผู้ใช้เห็น และบอกว่าต้องป้อนค่าอะไร
เทคนิคการเขียนรับข้อมูลจากผู้ใช้ (User Input) คือ
- ระบุชื่อตัวแปรที่จะใช้รับค่าจากผู้ใช้ให้ชัดเจน
- ตรวจสอบว่าข้อมูลที่รับเข้ามาจากผู้ใช้ตรงกับเงื่อนไขที่กำหนดหรือไม่
- การใช้งาน loop เพื่อรับข้อมูลจากผู้ใช้ซ้ำๆ จนกว่าข้อมูลที่รับเข้ามาจะถูกต้องตามเงื่อนไขที่กำหนด
- ใช้ try-except statement สำหรับการตรวจสอบประเภทของข้อมูลที่รับเข้ามา และแสดงข้อความเตือนถ้าผู้ใช้ป้อนข้อมูลไม่ถูกต้อง
- อ่านค่า input จากผู้ใช้โดยใช้ฟังก์ชัน
input()
และแปลงประเภทของข้อมูลตามที่ต้องการด้วยฟังก์ชันint()
หรือfloat()
- จัดเก็บข้อมูลที่ได้รับจากผู้ใช้ไว้ในตัวแปร เพื่อนำไปใช้ในการประมวลผลต่อไป
ตัวอย่าง การใช้งาน input()
:
name = input("กรุณากรอกชื่อของคุณ? ")
print("สวัสดี, " + name + "!")
ผลลัพธ์ คือ
กรุณากรอกชื่อของคุณ? กิตติมศักดิ์ ในจิต
สวัสดี, กิตติมศักดิ์ ในจิต!
จากตัวอย่างนี้ โปรแกรมจะถามชื่อของผู้ใช้ด้วยข้อความ "กรุณากรอกชื่อของคุณ? "
และรับค่าจากผู้ใช้เป็นตัวอักษร (string) จากนั้นแสดงข้อความ "สวัสดี, "
ตามด้วยชื่อที่ผู้ใช้ป้อนเข้ามา โดยใช้ตัวแปร name
ที่เก็บค่าที่ผู้ใช้ป้อนเข้ามา
ตัวอย่าง การใช้งานการรับข้อมูลจากผู้ใช้ (User Input)
# ขอให้ผู้ใช้ป้อนชื่อและอายุ
name = input("กรุณาป้อนชื่อของคุณ: ")
age = int(input("กรุณาป้อนอายุของคุณ: "))
# คำนวณปีเกิดของผู้ใช้
current_year = 2023
birth_year = current_year - age
# พิมพ์ข้อความทักทายผู้ใช้พร้อมทั้งแสดงปีเกิด
print(f"สวัสดีคุณ {name} คุณเกิดในปี {birth_year}")
จากตัวอย่างนี้ เราใช้ฟังก์ชัน input()
ในการรับค่าจากผู้ใช้ และใช้ int()
ในการแปลงข้อมูลที่ผู้ใช้ป้อนเป็นจำนวนเต็ม เรากำหนดชื่อของผู้ใช้และอายุของผู้ใช้เป็นตัวแปร name
และ age
ตามลำดับ และใช้ตัวแปรเหล่านี้ในการคำนวณปีเกิดของผู้ใช้ สุดท้ายเราใช้ f-string เพื่อพิมพ์ข้อความทักทายผู้ใช้พร้อมทั้งแสดงปีเกิดของผู้ใช้
ผลลัพธ์ที่ได้หลังจากกรอกข้อมูลเข้าไปจะมีลักษณะดังนี้
กรุณาป้อนชื่อของคุณ: John
กรุณาป้อนอายุของคุณ: 25
สวัสดีคุณ John คุณเกิดในปี 1998
ในตัวอย่างนี้ ผู้ใช้ป้อนชื่อเป็น “John” และอายุเป็น 25 จากนั้นโปรแกรมคำนวณและแสดงปีเกิดของผู้ใช้ว่าเกิดในปี 1998 ตามสูตรที่ใช้คำนวณในโปรแกรม
ตัวอย่าง การรับข้อมูลจากผู้ใช้ โดยมีการตรวจสอบความถูกต้องของข้อมูลที่ผู้ใช้ป้อนเข้ามา โดยตัวอย่างนี้จะรับชื่อ, อายุ, อีเมล, รายได้, และรหัสผ่านของผู้ใช้
# รับข้อมูลเกี่ยวกับการเงินจากผู้ใช้
name = input("ชื่อ: ")
while True:
try:
age = int(input("อายุ: "))
break
except ValueError:
print("กรุณาป้อนอายุเป็นตัวเลขเท่านั้น")
email = input("อีเมล: ")
while True:
try:
income = float(input("รายได้: "))
break
except ValueError:
print("กรุณาป้อนรายได้เป็นตัวเลขเท่านั้น")
password = input("รหัสผ่าน: ")
จากตัวอย่างนี้ เราใช้ฟังก์ชัน input()
เพื่อรับข้อมูลจากผู้ใช้ และใช้คำสั่ง while
และการตรวจสอบการป้อนข้อมูลใหม่ในกรณีที่ผู้ใช้ป้อนข้อมูลไม่ถูกต้อง ในกรณีที่ผู้ใช้ป้อนอายุเป็นอักขระแทนตัวเลขหรือป้อนรายได้เป็นอักขระแทนตัวเลข เราจะแสดงข้อความแจ้งเตือนและขอให้ผู้ใช้ป้อนข้อมูลใหม่ในขั้นตอนถัดไปของการทำงาน
โปรแกรมดังกล่าวเป็นโปรแกรมที่รับข้อมูลจากผู้ใช้เกี่ยวกับชื่อ, อายุ, อีเมล, รายได้และรหัสผ่าน โดยโปรแกรมจะทำการตรวจสอบว่าผู้ใช้ป้อนข้อมูลได้ถูกต้องหรือไม่ ถ้าผู้ใช้ป้อนข้อมูลไม่ถูกต้องโปรแกรมจะแจ้งเตือนและให้ผู้ใช้ป้อนข้อมูลใหม่จนกว่าจะป้อนข้อมูลที่ถูกต้อง โดยมีการรับข้อมูล 5 ส่วน คือ
- ส่วนที่ 1: รับข้อมูลชื่อจากผู้ใช้
- ส่วนที่ 2: รับข้อมูลอายุจากผู้ใช้ โดยใช้ลูป while และฟังก์ชัน try-except เพื่อตรวจสอบว่าผู้ใช้ป้อนอายุเป็นตัวเลขหรือไม่ ถ้าผู้ใช้ป้อนอายุไม่ใช่ตัวเลขโปรแกรมจะแจ้งเตือนผู้ใช้ให้ป้อนอายุใหม่จนกว่าจะป้อนอายุที่ถูกต้อง
- ส่วนที่ 3: รับข้อมูลอีเมลจากผู้ใช้
- ส่วนที่ 4: รับข้อมูลรายได้จากผู้ใช้ โดยใช้ลูป while และฟังก์ชัน try-except เพื่อตรวจสอบว่าผู้ใช้ป้อนรายได้เป็นตัวเลขหรือไม่ ถ้าผู้ใช้ป้อนรายได้ไม่ใช่ตัวเลขโปรแกรมจะแจ้งเตือนผู้ใช้ให้ป้อนรายได้ใหม่จนกว่าจะป้อนรายได้ที่ถูกต้อง
- ส่วนที่ 5: รับข้อมูลรหัสผ่านจากผู้ใช้
ตัวอย่าง รับข้อมูลจากผู้ใช้โดยมีเงื่อนไขต่าง ๆ ในการป้อนข้อมูลเกี่ยวกับรถยนต์ คือ ยี่ห้อรถ (brand), รุ่นรถ (model), ปีที่ผลิต (year), สีรถ (color), และราคารถ (price) โดยเงื่อนไขที่กำหนดไว้ดังนี้
- ยี่ห้อรถ (brand) : ต้องเป็นข้อความที่มีความยาวไม่เกิน 20 ตัวอักษร
- รุ่นรถ (model) : ต้องเป็นข้อความที่มีความยาวไม่เกิน 20 ตัวอักษร
- ปีที่ผลิต (year) : ต้องเป็นตัวเลข 4 หลัก
- สีรถ (color) : ต้องเป็นข้อความที่มีความยาวไม่เกิน 10 ตัวอักษร
- ราคารถ (price) : ต้องเป็นจำนวนเต็มหรือทศนิยม
โดยในการรับข้อมูลจากผู้ใช้จะมีการตรวจสอบเงื่อนไขโดยใช้ฟังก์ชั่นต่าง ๆ เช่น input() และ while loop ที่ช่วยให้รับข้อมูลได้อย่างถูกต้องตามเงื่อนไขที่กำหนด
while True:
make = input("ยี่ห้อรถ: ")
if len(make) <= 20:
break
print("กรุณาป้อนยี่ห้อรถที่มีความยาวไม่เกิน 20 ตัวอักษร")
while True:
model = input("รุ่นรถ: ")
if len(model) <= 20:
break
print("กรุณาป้อนรุ่นรถที่มีความยาวไม่เกิน 20 ตัวอักษร")
while True:
try:
year = int(input("ปีที่ผลิต: "))
if len(str(year)) == 4:
break
print("กรุณาป้อนปีที่ผลิตเป็นตัวเลข 4 หลัก")
except ValueError:
print("กรุณาป้อนปีที่ผลิตเป็นตัวเลข")
while True:
color = input("สีรถ: ")
if len(color) <= 10:
break
print("กรุณาป้อนสีรถที่มีความยาวไม่เกิน 10 ตัวอักษร")
while True:
try:
price = float(input("ราคารถ: "))
break
except ValueError:
print("กรุณาป้อนตัวเลขที่เป็นจำนวนเต็มหรือทศนิยม")
ตัวอย่าง การรับข้อมูลจากผู้ใช้ (User Input) เพื่อคำนวณหาพื้นที่วงกลม
# รับค่ารัศมีจากผู้ใช้
while True:
try:
radius = float(input("ป้อนค่ารัศมีของวงกลม: "))
if radius > 0:
break
print("รัศมีต้องมีค่าเป็นจำนวนบวก")
except ValueError:
print("กรุณาป้อนค่ารัศมีเป็นตัวเลข")
# คำนวณหาพื้นที่วงกลม
area = 3.14159 * radius ** 2
# แสดงผลลัพธ์
print(f"พื้นที่วงกลมที่มีรัศมี {radius} เท่ากับ {area:.2f}")
จากตัวอย่างนี้ จะมีการรับค่ารัศมีจากผู้ใช้ โดยจะตรวจสอบว่าผู้ใช้ป้อนค่าที่ถูกต้องหรือไม่ ในกรณีที่ผู้ใช้ป้อนค่าที่ไม่ถูกต้อง โปรแกรมจะแสดงข้อความแจ้งเตือนและขอให้ผู้ใช้ป้อนค่าใหม่ หลังจากนั้นโปรแกรมจะคำนวณหาพื้นที่วงกลมด้วยสูตร 3.14159 * radius ** 2 และแสดงผลลัพธ์ออกทางหน้าจอ
ตัวอย่าง การรับข้อมูลจากผู้ใช้ (User Input) เพื่อคำนวณหาพื้นที่สามเหลี่ยม
# รับความยาวฐานและความสูงจากผู้ใช้
base = float(input("ป้อนความยาวฐาน: "))
height = float(input("ป้อนความสูง: "))
# คำนวณหาพื้นที่สามเหลี่ยม
area = 0.5 * base * height
# แสดงผลลัพธ์
print(f"พื้นที่สามเหลี่ยมคือ {area:.2f}")
จากตัวอย่าง ผู้ใช้จะถูกขอให้ป้อนความยาวฐานและความสูงของสามเหลี่ยม เมื่อป้อนเสร็จแล้วโปรแกรมจะคำนวณหาพื้นที่และแสดงผลลัพธ์ออกทางหน้าจอ โดยใช้ print()
และฟังก์ชั่น format string
ในการแสดงผลลัพธ์ ทั้งนี้ผลลัพธ์จะถูกจัดรูปแบบให้แสดงเป็นทศนิยมสองตำแหน่งด้วย :.2f
ที่เขียนเป็นส่วนหนึ่งของ f-string.
ตัวอย่าง การรับข้อมูลจากผู้ใช้ (User Input) เพื่อคำนวณหาปริมาณพีระมิด
การคำนวณหาปริมาณของพีระมิด โดยให้ผู้ใช้ป้อนความยาวของพื้นฐานและความสูงของพีระมิด และโปรแกรมจะคำนวณหาปริมาณของพีระมิดจากข้อมูลที่ผู้ใช้ป้อนเข้ามา โดยใช้สูตร 1/3 x พื้นฐาน x ความสูง
base = float(input("ป้อนความยาวของพื้นฐานของพีระมิด: "))
height = float(input("ป้อนความสูงของพีระมิด: "))
volume = (1/3) * base * height
print("ปริมาณของพีระมิดคือ:", volume)
จากตัวอย่าง โปรแกรมจะถามผู้ใช้ให้ป้อนความยาวของพื้นฐานและความสูงของพีระมิด โดยข้อมูลทั้งสองตัวจะถูกเก็บเป็นตัวแปร base
และ height
ตามลำดับ และจากนั้นโปรแกรมจะคำนวณหาปริมาณของพีระมิดจากสูตรที่กำหนดไว้ และแสดงผลลัพธ์ออกทางหน้าจอด้วยคำสั่ง print()
โดยแสดงผลลัพธ์เป็นข้อความพร้อมกับค่าปริมาณของพีระมิดที่คำนวณได้ในตัวแปร volume
ตัวอย่าง การรับข้อมูลจากผู้ใช้ (User Input) เพื่อคำนวณหาพื้นที่ห้าเหลี่ยมด้านเท่า
import math
print("โปรแกรมคำนวณพื้นที่ห้าเหลี่ยมด้านเท่า")
while True:
try:
side = float(input("ป้อนความยาวด้านของห้าเหลี่ยม: "))
if side > 0:
break
print("กรุณาป้อนตัวเลขที่มากกว่าศูนย์")
except ValueError:
print("กรุณาป้อนตัวเลข")
area = (5 * side**2) / (4 * math.tan(math.pi/5))
print("พื้นที่ห้าเหลี่ยมด้านเท่า ", area)
จากตัวอย่าง โปรแกรมนี้จะรับความยาวด้านของห้าเหลี่ยมจากผู้ใช้ โดยใช้ฟังก์ชัน input()
และทำการตรวจสอบว่าผู้ใช้ป้อนค่าตัวเลขที่มากกว่าศูนย์หรือไม่ ถ้าไม่ใช่จะถามใหม่จนกว่าผู้ใช้จะป้อนค่าตัวเลขที่ถูกต้อง จากนั้นคำนวณหาพื้นที่ของห้าเหลี่ยมด้านเท่า ด้วยสูตร (5 * side**2) / (4 * math.tan(math.pi/5))
และแสดงผลลัพธ์ออกทางหน้าจอ
ตัวอย่าง การรับข้อมูลจากผู้ใช้ (User Input) เพื่อคำนวณหาปริมาณปริซึมฐานสี่เหลี่ยมคางหมู
# รับความยาวของฐานสี่เหลี่ยมคางหมู
base = float(input("ป้อนความยาวของฐานสี่เหลี่ยมคางหมู: "))
# รับความสูงของปริซึม
height = float(input("ป้อนความสูงของปริซึม: "))
# คำนวณหาพื้นที่ฐานของปริซึม
base_area = base**2
# คำนวณหาปริมาณปริซึมฐานสี่เหลี่ยมคางหมู
pyramid_volume = (1/3) * base_area * height
# แสดงผลลัพธ์
print("ปริซึมฐานสี่เหลี่ยมคางหมูมีปริมาณเท่ากับ:", pyramid_volume)
จากตัวอย่าง โปรแกรมนี้ใช้ฟังก์ชัน input()
เพื่อรับค่าความยาวของฐานและความสูงของปริซึมจากผู้ใช้ จากนั้นโปรแกรมจะคำนวณหาพื้นที่ฐานของปริซึมและปริมาณของปริซึมฐานสี่เหลี่ยมคางหมู โดยใช้สูตรที่เหมาะสม สุดท้ายโปรแกรมจะแสดงผลลัพธ์ที่คำนวณได้ในหน่วยของปริมาณ
การรับข้อมูลจากผู้ใช้ที่เป็นรูปภาพเป็นเรื่องที่ท้าทาย แต่โดยทั่วไปแล้ว เราจะไม่รับข้อมูลรูปภาพโดยตรงเข้าสู่โปรแกรมได้ แต่สามารถรับข้อมูลที่เป็นที่อยู่ (path) ของไฟล์รูปภาพเข้ามา แล้วนำไปใช้ประมวลผลหรือแสดงผลต่อไปได้
ตัวอย่างเช่น หากเราต้องการให้ผู้ใช้กรอกที่อยู่ของไฟล์รูปภาพ จะสามารถเขียนโปรแกรมเพื่อรับค่าได้ดังนี้
from PIL import Image
# รับที่อยู่ไฟล์รูปภาพจากผู้ใช้
image_path = input("กรุณาป้อนที่อยู่ไฟล์รูปภาพ: ")
# เปิดไฟล์รูปภาพ
try:
image = Image.open(image_path)
width, height = image.size
print("ขนาดรูปภาพ:", width, "x", height)
except FileNotFoundError:
print("ไม่พบไฟล์รูปภาพที่ระบุ")
จากตัวอย่างข้างต้น โปรแกรมจะขอให้ผู้ใช้ป้อนที่อยู่ของไฟล์รูปภาพ จากนั้นจะเปิดไฟล์รูปภาพด้วยโมดูล PIL และแสดงขนาดของรูปภาพออกทางหน้าจอ หากไม่พบไฟล์รูปภาพที่ระบุ โปรแกรมจะแสดงข้อความว่า “ไม่พบไฟล์รูปภาพที่ระบุ”