“PRINT” ใน Python เรื่องง่ายๆที่เข้าใจไม่ยาก
เข้าเรื่องเลยครับ รูปแบบของ “print” ในภาษา Python มีวิธีใช้ยังไงบ้าง วันนี้ผมจะมาแจกแจงให้ดูนะครับ
ก่อนอื่นนะคับ เรามาดูพื้นฐานก่อนว่าคำสั่ง print เราจะทำอะไรได้บ้าง จิงๆแล้ว print คือ funtion หนึ่งในตัว python นะคับโดยมีรายละเอียดแบบนี้
นั่นหมายความว่าเราจะเลือกใส่แค่ ค่า (value), ให้มีตัวแยกระหว่างค่า (sep) หรือจะกำหนดให้จบคำสั่ง print ด้วย enter ไหม (end=’\n’) มาดูตัวอย่างกันเลยนะคับ
อาจจะยังงงๆนะคับ เรามาดูแบบ simple กันเลยดีกว่าว่าในการใช้มีกี่วิธีบ้าง
1. Print แบบทั่วไปเลย
>>> print('My name is Q') # เราสามารถใช้ ' หรือ " ก็ได้นะครับMy name is Q # ผลลัพธ์ที่ได้
2. Print จากการแทนค่าตัวแปร
>>> name = 'Atthana' # กำหนดค่า string มาเก็บไว้ในตัวแปร name
>>> print('My name is ', name) # แทนค่า name เข้าไปในค่าทีต้องการ printMy name is Atthana # ผลลัพธ์ที่ได้
3. Print จาก %, style-formatting
>>> name = 'Atthana'
>>> age = 28
>>> grade = 3.34
>>> print('I am %d years old' %(age)) # %d = decimal โดยดึงค่ามาจาก ageI am 28 years old # ผลลัพธ์ที่ได้ จะดึงค่ามาจาก age
#===================================================================>>> print('my grade is %f' %(grade)) # %f = float โดยดึงค่ามาจาก grademy grade is 3.340000 # ผลลัพธ์ที่ได้ แต่ค่าทศนิยมเพียบเลย
#===================================================================
>>> print('my grade is %.2f' %(grade))# .2f = กำหนดทศนิยม 2 ตำแหน่งmy grade is 3.34
#===================================================================
>>> print('my grade is %.0f' %(grade))# .0f = ไม่ให้มีจุดทศนิยมเลยนะคับmy grade is 3
#===================================================================
>>> print('My name is %s, I\'m %d years old' %(name,age))# เอามายำรวมกันเลยนะครับ ระหว่าง string and decimal ส่วน \ ใช้เพื่อให้โปรแกรมมันข้าม single quote หลัง I ไปเลย (ignore ตัวถัดไป)My name is Atthana, I'm 28 years old # ผลลัพธ์ที่ได้
#===================================================================
หรือ...
การแก้ปัญหาวิธีเดียวกัน เราสามารถใช้ Double quote ทำงานร่วมกับ Single quote ก็ได้ เช่น
>>> print("My name is %s, I'm %d years old" %(name,age))
My name is Atthana, I'm 28 years old
#===================================================================
อีกกรณีคือ เมื่อเราต้องการจะ print double quote ออกมาด้วย จะทำได้แบบนี้นะ...
>>> print("Atthana: \"you are so handsome guy\"")
Atthana: "you are so handsome guy" # ผลลัพธ์จะได้ " ด้วย จากการใช้ \
#===================================================================
หรือใช้งานร่วมกันระหว่าง ' และ " ก็แก้ปัญหานี้ได้เช่นกัน
>>> print('Atthana: "you are so handsome guy"')
Atthana: "you are so handsome guy" # ใช้ single quote ช่วยแก้ปัญหานี้
- ตัวอย่างของการ apply
%s
กับ dictionary ลองทำความเข้าใจจากรูปด้านล่างดู
4. Print จาก {} (curry bracket) และกำหนด .format
(แนะนำให้ใช้วิธีนี้นะคับ เพราะ Python version เก่าๆก็ไม่มีปัญหาอะไร)
>>> money = 1000000
>>> print('I have money {} baht'.format(money))I have money 1000000 baht # ผลลัพธ์ที่ได้ จะไปอิงตามตัวแปร money นะ
#===================================================================
แต่จะเห็นว่า 1000000 มันคือ หนึ่งล้าน แต่จะดูยากหน่อยเพราะไม่มี comma คั่นเลย
ดังนั้นเราสามารถกำหนดค่าใน curry bracket ได้ เช่น>>> print('I have money {:,d} baht'.format(money))
I have money 1,000,000 baht # เพิ่ม :,d จะทำให้ดูง่ายขึ้นเพราะแบ่งหลักให้แล้ว
#===================================================================แต่ในกรณ๊ที่ data type เป็น float เราจะใส่ :,d เหมือนเดิมไม่ได้นะ ก็จะต้องเปลี่ยนเป็น :,f แทน ลองดูตัวอย่างครับ>>> account = 1234567.12345
>>> print('I have money {:,f} baht'.format(account))I have money 1,234,567.123450 baht # ดูง่ายขึ้นไหม เพราะมี , เพิ่มให้แล้วแต่จะพบว่ามันก็ยังอ่านยากอยู่ดี เพราะดันมีจุดทศนิยมหลายตำแหน่ง จึงต้องนำสิ่งที่เรียนไปตะกี้มาเพิ่มเติมโดยการกำหนดจุดทศนิยมให้กับมัน นั่นคือ>>> print('I have money {:,.2f} baht'.format(account))I have money 1,234,567.12 baht # กำหนด .2 เพิ่มเพื่อระบุ 2 ตำแหน่งทศนิยม
ถ้าจะไม่เอาทศนิยมเลย ก็เหมือนเดิมนะครับ คือกำหนดให้เป็น .0 นั่นเอง
>>> print('I have money {:,.0f} baht'.format(account))I have money 1,234,567 baht # เห็นไหม ไม่มีทศนิยมแล้ว
การใช้ .format() ร่วมกับ kwargs นะคับ (วิธีนี้จะใช้กับข้อมูลที่เป็น dict)
info = {'name': 'Atthana', 'position': 'Software Developer'} # dictprint('My name is {name}, and position is {position}.'.format(**info))
# ----- output -----
My name is Atthana, and position is Software Developer.
5. f-Strings
สุดท้ายนะคับ สำหรับการใช้ Style-formating แบบสั้นๆอีกแบบนะคับคือ
แค่เขียน f หน้าตัว {} เท่านั้น โดยไม่ต้องเขียนคำว่า .format() ตัวอย่างนะคับ
>>> greeting = "Hello"
>>> name = "Atthana"
>>> message = f'{greeting}, {name}' #จะเห็นว่าแค่ใส่ f ด้านหน้าของ''เท่านั้นเองนะคับ
>>> print(message)
Hello, Atthana # ผลลัทธ์ที่ได้ ก้อจะ Print Hello + , + Atthana ตามตัวแปรใน {} เลยคับ# =======================================================หรือ ถ้า print ตัวแรกก้อสามารถกำหนด decimal format ได้เลย เช่น
>>> a = 0.1
>>> b = 0.2
>>> c = a+b
>>> print(f'{c:.2f}')0.30 # จะได้แบบกำหนดให้แสดงแบบจุดทศนิยม 2 ตำแหน่งด้วย :.2f
หรือ อีกตัวอย่างคับ
def print_hi(name):
print(f'Hi, {name}')
if __name__ == '__main__':
print_hi('PyCharm')# ------------------------------
# output
# Hi, PyCharm (result)
การจัดการกับตัวเลข โดยใช้ f-Strings
# The Thousands Separator using f-strings
a = 1000000
print(f'{a:,}') # จะทำให้ 1000000 ถูกแบ่งด้วย comma (,)
print(f'{a:,.2f}') # นอกจากถูกแบ่งด้วย , แล้วก้อยังเป็นทศนิยม 2 ตำแหน่งด้วย# -------------------------------
# output
# 1,000,000
# 1,000,000.00
เราสามารถกำหนด condition เพื่อให้แสดงค่าใน f-Strings ได้ด้วยนะ จากตัวอย่าง
- จะเห็นว่า ถ้าไม่มีค่า
grade_ranges_dict[grade]
จะให้แสดงคำว่าขึ้นไป
, แต่ถ้ามีค่าก็ให้แสดงgrade_ranges_dict[grade]
ได้เลย - ถ้าบรรทัดมีความยาวเกินไป เราสามารถตัดมาขึ้นบรรทัดใหม่ได้ โดยการใช้
\
คั่นไว้ได้นะ
คราวนี้ลองมายำหลายๆแบบกันดูนะ
>>> print('I have money {1:,.2f} baht\nI have in wallet {0:,d}'.format(money, account))I have money 1,234,567.12 baht # ผลลัพธ์ที่ได้
I have in wallet 1,000,000 # ผลลัพธ์ที่ได้# \n = ขึ้นบรรทัดใหม่
# \t = Tab
# 1:,.2f อธิบายว่า 1 = ให้ไป point ที่ .format index ที่ 1 นั่นคือ account และ :,f คือ ให้เรียก float โดยมี comma แบ่งด้วย และ .2 คือ เอาแค่ทศนิยม 2 ตำแหน่งนะเช่นเดียวกัน
# 0:,d อธิบายว่า 0 = ให้ไป point ที่ .format index ที่ 0 นั่นคือ money และ :,d คือ ให้เรียก decimal โดยมี comma แบ่งด้วย แค่นั่นเองครับ
สุดท้ายลองยำชุดใหญ่ดูนะครับ
>>> print('I have money {ac:,.2f} baht\nI have in wallet {mn:,d}'.format(mn = money, ac = account))I have money 1,234,567.12 baht
I have in wallet 1,000,000# จะพบว่าเหมือนกับตัวอย่างด้านบนเลยนะคับ แค่เปลี่ยนจากการ point ไปที่ index 0 หรือ 1 มาเป็นการตั้งชื่อให้มันแทนเท่านั้นเอง และนำชื่อที่ตั้งไว้ไปเสียบแทนในตำแหน่งของ index
จบล่ะคับ
ศึกษาเพิ่มเติมได้จาก document ตาม link นี้คับ
แล้วพบกันใหม่คับ