String Concatination

Concatenation นั้นหมายถึงการนำ string มาแปะเข้าด้วยกัน [Wikipedia.com]open in new window

น้องสามารถทำการเอา String มาแปะกันได้ โดยการใช้เครื่องหมายบวก (+)

ตัวอย่างเช่น

text = "Hello"
text2 = "World"
print(text + text2) # Returns "HelloWorld"

หรือน้องๆสามารถใช้เครื่องหมาย , เพื่อทำการเอามาแปะกัน
แต่ว่าจะแตกต่างจาก + นั่นคือ เอาไปแปะแล้วมี Space ด้วย 1 ตัว

ตัวอย่างเช่น

text = "Hello"
text2 = "World"
print(text, text2) # Returns "Hello World"

แต่ในตัวอย่างนี้

text1 = "Hello"
text2 = "World"
text3 = text1, text2 # Returns ('Hello', 'World')

แล้วทำไมมันไม่ได้เหมือน print(text1, text2) หล่ะครับ
นั่นก็เพราะว่า เขียนแบบนั้น ก็หมายถึงการให้ตัวแปร text1 และ text2 ไปจัดเก็บอยู่ในตัวแปร text3 นั่นเอง

แต่เอาเป็นว่า มันได้ค่าไม่เท่ากันครับ ไว้ใน lecture หน้าๆจะมาอธิบายครับ

Integer Concatination

พี่มงบอกเองไม่ใช่เหรอ ว่าเอา String มาทำอะไรกับตัวเลขไม่ได้
แต่ก็ยังมีข้อยกเว้นอยู่นะครับ เมื่อเอา String มายุ่งกับ Integer ตัวอย่างเช่น

text = "Kumamon"
print(text * 5) # Returns "KumamonKumamonKumamonKumamonKumamon"

ซึ่งการคูณแบบนี้ Python จะคิดว่าให้ทำการ copy และแปะตัว string นั้น 5 รอบ

Challenge

น้องลองคิดดูซิ ว่าถ้าพี่เขียนแบบนี้

text = "Kumamon"
print(5 * text)

แล้วจะรันผ่าน และได้ผลลัพท์เหมือน print(text * 5) หรือเปล่า

แล้วทำไมอันนี้ มันไม่ทำงานหล่ะครับ ???

text = "kuma"
text2 = "mon"
print(text + text2 + 555)

มันแสดงข้อความนี้ออกมาอ่ะครับ

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int

นั่นก็เพราะว่า Python นึกว่าน้องจะเอาไป Concatinate นั่นเอง ซึ่งเลข 555 นั้นไม่ใช่ String แต่เป็น Integer จึงไม่สามารถทำการ Concat ได้
วิธีการแก้ไขจึงต้องแปลงค่า Integer ไปเป็น String ซะก่อน เลยได้เป็น

text = "kuma"
text2 = "mon"
print(text + text2 + str(555)) # Returns kumamon555

วิธีให้ตัวแปรเก็บค่า String

น้องสามารถใช้ "" เพื่อครอบตัวอักษร เพื่อบอกว่ามันเป็น String ก็ได้
หรือน้องจะใช้ฟังก์ชั่น str() เพื่อทำการ Data Type Casting ก็ได้ครับ

ตัวอย่างการให้มันเก็บแบบ string แน่นอน

text1 = "" # ขอบอกไว้ก่อนว่า Python ไม่ต้องทำการจองตัวแปรนะครับ
text2 = "Hello World"
text3 = "Not that much 555"
text4 = "12" # ค่า '12' (string) จะไม่เท่ากับ 12 (integer) นะครับ ต้องระวังให้ดี