ตัวอักษรต่อบรรทัด (line continuation character) ของ Python ให้คุณต่อบรรทัดโค้ดบนบรรทัดใหม่ในโปรแกรมของคุณ ตัวอักษรต่อบรรทัดไม่สามารถตามด้วยค่าใดๆ ได้
หากคุณระบุตัวอักษรหรือคำสั่งหลังตัวอักษรต่อบรรทัด คุณจะเจอข้อผิดพลาด "SyntaxError: unexpected character after line continuation character"
ในคู่มือนี้ เราพูดถึงว่าข้อผิดพลาดนี้หมายถึงอะไรและทำไมมันจึงถูกยกขึ้น เราจะเดินทางผ่านสองตัวอย่างของข้อผิดพลาดนี้ในการทำงาน เพื่อคุณสามารถเรียนรู้วิธีใช้ในโค้ดของคุณ
SyntaxError: unexpected character after line continuation character
ตัวอักษรต่อบรรทัดให้คุณเขียนสตริงยาวหลายบรรทัดของโค้ด ตัวอักษรนี้มีประโยชน์เพราะมันทำให้โค้ดอ่านง่ายขึ้น ตัวอักษรต่อบรรทัดคือแบ็กสแลช ("\")
ในขณะที่อาจยากที่จะติดตามบรรทัดโค้ดที่ยาวมาก บรรทัดโค้ดหนึ่งที่แบ่งหลายบรรทัดจะง่ายต่อการติดตาม
ตัวอักษรต่อบรรทัดมักใช้เพื่อแยกโค้ด หรือเขียนสตริงยาวหลายบรรทัดของโค้ด:
url = "https://careerkarma.com" \ "/blog/python-syntaxerror-unexpected-character-after" \ "line-continuation-character"
เราแบ่งสตริงของเราเป็นสามบรรทัด นี่ทำให้อ่านโค้ดของเราง่ายขึ้น
สองสถานการณ์ที่ข้อผิดพลาดนี้อาจถูกยกขึ้น รวมถึง:
- ใช้แบ็กสแลชแทนฟอร์เวิร์ดสแลชเป็นตัวดำเนินการหาร
- เพิ่มบรรทัดใหม่ในสตริงโดยไม่ล้อมตัวอักษรบรรทัดใหม่ในวงเล็บ
เราจะพูดถึงแต่ละสถานการณ์ทีละอย่าง
สถานการณ์ #1: การหารด้วยแบ็กสแลช (Division Using a Backslash)
ที่นี่ เราเขียนโปรแกรมที่คำนวณดัชนีมวลกาย (BMI) ของบุคคล เริ่มต้น เราต้องขอผู้ใช้ป้อนความสูงและน้ำหนักเข้าไปในโปรแกรม Python:
height = input("What is your height? ") weight = input("What is your weight? ") ต่อไป เราคำนวณ BMI ของผู้ใช้ สูตรสำหรับคำนวณค่า BMI คือ:
BMI = kg/m2
"Kg" คือน้ำหนักของบุคคลเป็นกิโลกรัม "m2" คือความสูงของบุคคลยกกำลังสอง แปลงเป็น Python สูตรการคำนวณ BMI ดูเหมือนนี้:
bmi = float(weight) \ (float(height) * 2) print("Your BMI is: " + str(bmi)) เราแปลงค่าของ "weight" และ "height" เป็นตัวเลขจุดลอยตัว เพื่อที่เราจะทำฟังก์ชันคณิตศาสตร์บนพวกมันได้
เราพิมพ์ BMI ของผู้ใช้ไปยังคอนโซล เราแปลง "bmi" เป็นสตริงโดยใช้เมธอด str() เพื่อที่เราจะต่อได้กับข้อความ "Your BMI is: " เราปัดค่าของ "bmi" ให้เหลือสองตำแหน่งทศนิยมโดยใช้เมธอด round()
มารันโค้ดของเรา:
File "main.py", line 4 bmi = float(weight) \ (float(height) * 2) ^ SyntaxError: unexpected character after line continuation character
เราพบข้อผิดพลาด นี่เป็นเพราะเราใช้ "\" เป็นตัวดำเนินการหารแทนเครื่องหมาย "/" เราสามารถแก้โค้ดของเราโดยใช้ตัวดำเนินการหาร "/":
bmi = float(weight) / (float(height) * 2) print("Your BMI is: " + str(round(bmi, 2))) โค้ดของเราคืนค่า:
What is your height? 1.70 What is your weight? 63 Your BMI is: 18.53
โค้ดของเราคำนวณ BMI ของผู้ใช้สำเร็จแล้ว
สถานการณ์ #2: การใช้ตัวอักษรบรรทัดใหม่อย่างผิดวิธี (Using the New Line Character Incorrectly)
ต่อไป เราเขียนโปรแกรมที่เขียนรายการส่วนผสมลงไฟล์ เราเริ่มต้นด้วยการกำหนดรายการส่วนผสมสำหรับสูตรชอร์ตบริด (shortbread):
ingredients = [ "150g plain flour", "100g butter, chilled an cubed", "50g caster sugar" ]
ต่อไป เราเปิดไฟล์ชื่อ "shortbread_recipe.txt" ซึ่งเราจะเขียนรายการส่วนผสมของเรา:
with open("shortbread_recipe.txt", "w+") as ingredients_file: for i in ingredients: ingredients_file.write(i + \n) โค้ดนี้วนซ้ำผ่านทุกส่วนผสมในตัวแปร "ingredients" แต่ละส่วนผสมถูกเขียนลงไฟล์ส่วนผสมตามด้วยตัวอักษรบรรทัดใหม่ใน Python ("\n") นี่ทำให้มั่นใจว่าแต่ละส่วนผสมปรากฏบนบรรทัดใหม่
มารันโค้ด Python ของเรา:
File "main.py", line 9 ingredients_file.write(i + \n) ^ SyntaxError: unexpected character after line continuation character
โค้ดของเราคืนค่าข้อผิดพลาด นี่เป็นเพราะเราไม่ได้ล้อมตัวอักษรบรรทัดใหม่ในเครื่องหมายอ้างอิง
ในขณะที่ตัวอักษรบรรทัดใหม่เป็นตัวอักษรพิเศษ มันต้องถูกล้อมภายในเครื่องหมายอ้างอิงทุกครั้งที่ใช้ เพราะ Python จัดการ "\" เป็นตัวอักษรต่อบรรทัด
เพื่อแก้ไขข้อผิดพลาดในโค้ดของเรา เราต้องล้อมตัวอักษรบรรทัดใหม่ในเครื่องหมายอ้างอิงคู่:
with open("shortbread_recipe.txt", "w+") as ingredients_file: for i in ingredients: ingredients_file.write(i + "\n") มารันโค้ดของเรา โค้ดของเราคืนค่าไม่มีค่าไปยังคอนโซล ไฟล์ใหม่ชื่อ "shortbread_recipe.txt" ถูกสร้าง เนื้อหาของมันคือดังนี้:
150g plain flour 100g butter, chilled an cubed 50g caster sugar
โค้ดของเราพิมพ์รายการของเราลงในไฟล์ "shortbread_recipe.txt" สำเร็จแล้ว
สรุป
ข้อผิดพลาด "SyntaxError: unexpected character after line continuation character" ถูกยกขึ้นเมื่อคุณเพิ่มโค้ดหลังตัวอักษรต่อบรรทัด
เพื่อแก้ไขข้อผิดพลาดนี้ ตรวจสอบให้แน่ใจว่าคุณใช้ตัวดำเนินการหารที่ถูกต้อง (ฟอร์เวิร์ดสแลช) หากคุณกำลังดำเนินการคณิตศาสตร์ หากคุณใช้ตัวอักษรพิเศษที่มีแบ็กสแลช เช่น ตัวอักษรบรรทัดใหม่ ตรวจสอบให้แน่ใจว่าพวกมันถูกล้อมภายในเครื่องหมายอ้างอิง
ตอนนี้คุณพร้อมที่จะแก้ไขข้อผิดพลาดนี้ในโค้ดของคุณ!