ในบทช่วยสอนนี้ เราจะดูวิธีต่างๆ ในการเพิ่มค่าตัวอักษรใน Python
Typecasting (การแปลงชนิด)
มาดูก่อนว่าจะเกิดอะไรขึ้นถ้าเราบวก int เข้ากับ char โดยไม่แปลงชนิด
ตัวอย่างโค้ด
## เริ่มต้น str char = "t" ## ลองบวก 1 เข้ากับ char char += 1 ## เกิดข้อผิดพลาด
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้ -
TypeError: must be str, not int
เพื่อเพิ่มค่าตัวอักษรใน Python เราต้องแปลงมันเป็น integer บวก 1 เข้าไป แล้วแปลง integer ผลลัพธ์กลับเป็น char เราสามารถทำได้โดยใช้ builtin methods ord และ chr
ตัวอย่างโค้ด
## เริ่มต้น str
char = "t"
## แปลง char เป็น int
i = ord(char[0])
## เราสามารถบวกตัวเลขใดๆ ได้ถ้าต้องการ
## เพิ่ม i
i += 1
## แปลง int ผลลัพธ์กลับเป็น char
## เราจะได้ 'u'
char = chr(i)
print(f"อักษรหลัง t คือ {char}")
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้ -
อักษรหลัง t คือ u
Bytes
มีอีกวิธีหนึ่งในการเพิ่มค่าตัวอักษรโดยใช้ bytes
- แปลง str เป็น bytes
- ผลลัพธ์จะเป็น array ที่มีค่า ASCII ของทุกตัวอักษรในสตริง
- บวก 1 เข้ากับตัวอักษรแรกของ bytes ที่แปลงแล้ว ผลลัพธ์จะเป็น int
- แปลง int กลับเป็น char
ตัวอย่างโค้ด
## เริ่มต้น str
char = "t"
## แปลง char เป็น bytes
b = bytes(char, 'utf-8')
## บวก 1 เข้ากับ char แรกของ 'b'
## b[0] คือ 't' ที่นี่
b = b[0] + 1
## แปลง 'b' กลับเป็น char
print(f"อักษรหลังเพิ่มค่า ASCII คือ {chr(b)}")
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้ -
อักษรหลังเพิ่มค่า ASCII คือ u
หากเรามีสตริงและแปลงเป็น bytes เราสามารถเพิ่มค่าตัวอักษรที่ต้องการได้ มาดูตัวอย่าง
ตัวอย่างโค้ด
## เริ่มต้น str
name = "tutorialspoint"
## แปลง char เป็น bytes
b = bytes(name, 'utf-8')
## บวก 1 เข้ากับ char 'a' ของ 'b'
## index ของ 'a' คือ 6
b = b[6] + 1
## แปลง 'b' กลับเป็น char
print(f"name หลังเพิ่มค่า 'a' char คือ tutori{chr(b)}lspoint")
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้ -
name หลังเพิ่มค่า 'a' char คือ tutoriblspoint
หวังว่าคุณจะเข้าใจแนวคิดนี้ดี หากมีข้อสงสัยเกี่ยวกับบทช่วยสอน กรุณาระบุในส่วนความคิดเห็น Happy Coding :)