การรับข้อมูลจากผู้ใช้ (User Input) ในภาษา Python

การรับข้อมูลจากผู้ใช้ (User Input) ในภาษา Python สามารถทำได้โดยใช้ฟังก์ชัน input() ซึ่งจะรับค่าข้อมูลจากผู้ใช้ผ่านทางคีย์บอร์ด (Keyboard) ซึ่งสามารถรับข้อมูลได้ทั้งตัวอักษรและตัวเลขได้ตามต้องการ การรับข้อมูลที่ผู้ใช้ป้อนผ่านคีย์บอร์ด และส่งค่ากลับมาในรูปของข้อความ (string) เพื่อนำไปใช้งานต่อได้ โดยรูปแบบการใช้งาน input() ดังนี้

variable = input("Please enter a value: ")

โดยที่ variable คือตัวแปรที่จะเก็บค่าที่ผู้ใช้ป้อนเข้ามา และ "Please enter a value: " คือข้อความที่จะแสดงให้ผู้ใช้เห็น และบอกว่าต้องป้อนค่าอะไร

เทคนิคการเขียนรับข้อมูลจากผู้ใช้ (User Input) คือ

  1. ระบุชื่อตัวแปรที่จะใช้รับค่าจากผู้ใช้ให้ชัดเจน
  2. ตรวจสอบว่าข้อมูลที่รับเข้ามาจากผู้ใช้ตรงกับเงื่อนไขที่กำหนดหรือไม่
  3. การใช้งาน loop เพื่อรับข้อมูลจากผู้ใช้ซ้ำๆ จนกว่าข้อมูลที่รับเข้ามาจะถูกต้องตามเงื่อนไขที่กำหนด
  4. ใช้ try-except statement สำหรับการตรวจสอบประเภทของข้อมูลที่รับเข้ามา และแสดงข้อความเตือนถ้าผู้ใช้ป้อนข้อมูลไม่ถูกต้อง
  5. อ่านค่า input จากผู้ใช้โดยใช้ฟังก์ชัน input() และแปลงประเภทของข้อมูลตามที่ต้องการด้วยฟังก์ชัน int() หรือ float()
  6. จัดเก็บข้อมูลที่ได้รับจากผู้ใช้ไว้ในตัวแปร เพื่อนำไปใช้ในการประมวลผลต่อไป

 

ตัวอย่าง การใช้งาน 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 และแสดงขนาดของรูปภาพออกทางหน้าจอ หากไม่พบไฟล์รูปภาพที่ระบุ โปรแกรมจะแสดงข้อความว่า “ไม่พบไฟล์รูปภาพที่ระบุ”