On this page
รับข้อมูล & แสดงผล (Input & Output)
คุยกับผู้ใช้ผ่าน input() และ print() พร้อม f-string สำหรับจัดรูปข้อความให้สวยงาม
โปรแกรมที่มีประโยชน์ต้องรับข้อมูลเข้าและแสดงผลออก หัวข้อนี้เจาะ input() กับ print() ให้ลึก รวมถึง f-string ซึ่งเป็นวิธีจัดรูปข้อความที่ใช้บ่อยที่สุดในงานจริง
แสดงผลด้วย print()
print("Hello") # Hello
print("a", "b", "c") # a b c (คั่นด้วยช่องว่างอัตโนมัติ)
print("a", "b", sep="-") # a-b (เปลี่ยนตัวคั่นด้วย sep)
print("ไม่ขึ้นบรรทัดใหม่", end=" ") # คุม end (ปกติคือขึ้นบรรทัดใหม่)
print("ต่อท้ายเลย") # ไม่ขึ้นบรรทัดใหม่ ต่อท้ายเลยf-string — วิธีจัดรูปข้อความที่ดีที่สุด
f-string คือใส่ตัว f นำหน้าเครื่องหมายคำพูด แล้ววางตัวแปรไว้ในวงเล็บปีกกา {} Python จะแทนค่าให้อัตโนมัติ อ่านง่ายและทรงพลังมาก
name = "Aphisit"
age = 25
print(f"สวัสดี {name} อายุ {age} ปี")
# สวัสดี Aphisit อายุ 25 ปี
# คำนวณในวงเล็บได้เลย
print(f"ปีหน้าอายุ {age + 1} ปี") # ปีหน้าอายุ 26 ปี
# จัดรูปทศนิยม: :.2f = 2 ตำแหน่ง
pi = 3.14159
print(f"ค่า pi = {pi:.2f}") # ค่า pi = 3.14
# จัดความกว้าง/หลักพัน
price = 1234567
print(f"ราคา {price:,} บาท") # ราคา 1,234,567 บาทวิธีเก่าใช้ + ต่อข้อความ เช่น "อายุ " + str(age) + " ปี" ซึ่งต้องแปลงชนิดเองและอ่านยาก f-string สั้นกว่า ปลอดภัยกว่า และเป็นมาตรฐานที่ใช้กันทั่วไปในโค้ดสมัยใหม่
รับข้อมูลด้วย input()
input() หยุดรอให้ผู้ใช้พิมพ์แล้วกด Enter ค่าที่ได้เป็นข้อความ (str) เสมอ — แม้ผู้ใช้พิมพ์ตัวเลข ถ้าจะคำนวณต้องแปลงชนิดก่อน
name = input("คุณชื่ออะไร: ") # ได้เป็น str
age = int(input("อายุเท่าไหร่: ")) # รับแล้วแปลงเป็น int ทันที
height = float(input("สูงกี่เมตร: "))# แปลงเป็น float
print(f"สวัสดี {name}")
print(f"อีก 10 ปีคุณจะอายุ {age + 10} ปี")ถ้าลืมครอบ int() แล้วเอาไปบวก จะกลายเป็นการต่อข้อความ หรือถ้าเทียบ age > 18 โดย age เป็น str จะ error ติดนิสัยครอบ int()/float() ตั้งแต่ตอนรับเลย
ตัวอย่างรวม: โปรแกรมคำนวณ BMI
print("=== คำนวณ BMI ===")
weight = float(input("น้ำหนัก (กก.): "))
height = float(input("ส่วนสูง (เมตร): "))
bmi = weight / (height ** 2)
print(f"ค่า BMI ของคุณคือ {bmi:.1f}")
# ถ้าใส่ 60 และ 1.70 -> ค่า BMI ของคุณคือ 20.8รับหลายค่าในบรรทัดเดียว (split / map)
บ่อยครั้งผู้ใช้พิมพ์หลายค่าคั่นด้วยช่องว่างในบรรทัดเดียว — ใช้ .split() หั่นเป็นลิสต์ แล้ว map() แปลงชนิดทีเดียว เทคนิคนี้เจอบ่อยมากเวลาแก้โจทย์/รับ input หลายค่า
# ผู้ใช้พิมพ์: 10 20 30
parts = input("ใส่เลขคั่นด้วยช่องว่าง: ").split() # ['10','20','30']
nums = [int(x) for x in parts] # [10, 20, 30]
print(sum(nums)) # 60
# รับ 2 ค่าแยกตัวแปรในบรรทัดเดียว
a, b = input("ใส่ 2 เลข: ").split()
a, b = int(a), int(b)
print(a + b)
# สั้นสุดด้วย map
x, y = map(int, input().split()) # แปลงทุกตัวเป็น int พร้อมแยกตัวแปรสรุปหัวข้อนี้
- print() แสดงผล ปรับ sep และ end ได้
- f-string (f"...{ตัวแปร}...") คือวิธีจัดรูปข้อความที่ดีที่สุด — คำนวณและจัดรูปทศนิยม/หลักพันได้
- input() รับข้อความจากผู้ใช้ ได้เป็น str เสมอ ต้องแปลงชนิดก่อนคำนวณ
1) รับชื่อและปีเกิด แล้ว print อายุโดยประมาณด้วย f-string 2) รับราคาสินค้าและจำนวน แล้วแสดงราคารวมแบบมีหลักพัน (:,) 3) เขียนโปรแกรมคำนวณพื้นที่สามเหลี่ยมจากฐานและสูง แสดงผลทศนิยม 2 ตำแหน่ง