แม้แต่นักพัฒนาที่ดีที่สุดก็ยังสร้างข้อผิดพลาดทางไวยากรณ์ตลอดเวลาเมื่อเขียนโค้ด ภาษาการเขียนโปรแกรมมีกฎเกณฑ์มากมาย และแม้แต่การพิมพ์ผิดเพียงครั้งเดียวก็อาจทำให้เกิดข้อผิดพลาดได้
หากคุณพบข้อผิดพลาด "syntaxerror:EOL ขณะสแกนสตริงตามตัวอักษร" ไม่ต้องกังวล ในคู่มือนี้ เราจะพูดถึงความหมายของข้อผิดพลาดนี้และวิธีแก้ไข เราจะอธิบายสถานการณ์ตัวอย่างบางส่วนเพื่อช่วยคุณระบุสาเหตุและวิธีแก้ไขที่เป็นไปได้
เริ่มกันเลย!
ปัญหา:syntaxerror:EOL ขณะสแกนสตริงตามตัวอักษร
ไวยากรณ์เป็นเหมือนไวยากรณ์ของภาษาโปรแกรม ภาษาอังกฤษมีกฎเกณฑ์ที่ควบคุมเครื่องหมายวรรคตอนและการสะกดคำ ภาษาโปรแกรมมีกฎที่คล้ายคลึงกัน
มาดูข้อผิดพลาดของเรากัน:
syntaxerror: EOL while scanning string literal
ข้อความ SyntaxError บอกเราว่าเราไม่ได้ปฏิบัติตามกฎไวยากรณ์ของ Python
คำอธิบายของข้อผิดพลาดระบุว่า Python คาดหวังให้อักขระตัวใดตัวหนึ่งปรากฏขึ้นที่ส่วนท้ายของบรรทัดโค้ดที่ไม่พบ ตัวอย่างเช่น Python อาจคาดหวังให้สตริงปิด (”) อักขระที่ส่วนท้ายของบรรทัดที่คุณเปิดสตริง
หากพบข้อผิดพลาดทางไวยากรณ์ Python จะหยุดรันโปรแกรม เนื่องจากล่าม Python ต้องการให้คุณแก้ไขปัญหาก่อนที่จะสามารถอ่านโค้ดที่เหลือของคุณได้
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ข้อผิดพลาดนี้มักเกิดจาก:
- สตริงที่ขยายหลายบรรทัดโดยใช้รูปแบบที่ไม่ถูกต้อง
- ไม่มีเครื่องหมายคำพูด
- เครื่องหมายคำพูดไม่ตรงกัน
ตัวอย่างสถานการณ์:สตริงหลายบรรทัด
ใน Python สตริงสามารถขยายได้หลายบรรทัด ไวยากรณ์สำหรับสตริงแบบหลายบรรทัดจะแตกต่างจากสตริงแบบเดิม สตริงแบบหลายบรรทัดต้องมีเครื่องหมายอัญประกาศสามตัว หรือเขียนโดยใช้เครื่องหมายอัญประกาศสามตัว
มาดูสตริงแบบหลายบรรทัดกัน:
def welcome_hero(): message = "Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman." print(message) welcome_hero()
เราได้กำหนดฟังก์ชันที่เรียกว่า welcome_hero()
. ฟังก์ชันนี้พิมพ์ข้อความไปยังคอนโซล ข้อความนี้ถูกกำหนดให้กับตัวแปร "ข้อความ"
มาลองรันโค้ดของเรากัน:
File "main.py", line 2 message = "Welcome, Hero! ^ SyntaxError: EOL while scanning string literal
ข้อผิดพลาดถูกส่งกลับ เนื่องจากสตริงที่ใช้เครื่องหมายคำพูดเดี่ยวหรือคู่ไม่สามารถขยายหลายบรรทัดได้ เพื่อแก้ปัญหานี้ เราจำเป็นต้องใส่เครื่องหมายคำพูดเดี่ยวหรือคู่สามคำ ข้อความใดๆ ที่ปรากฏระหว่างอักขระเหล่านี้จะเป็นส่วนหนึ่งของสตริง:
message = """Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."""
มาลองรันโค้ดของเรากับบรรทัดที่แก้ไขนี้กัน รหัสของเราส่งคืน:
Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman.
ความสำเร็จ! รหัสของเราพิมพ์ข้อความโดยไม่มีข้อผิดพลาด
ตัวอย่างสถานการณ์:ไม่มีเครื่องหมายคำพูด
ต้องปิดสตริงหลังจากประกาศเนื้อหาของสตริงแล้ว มิฉะนั้น Python จะส่งคืนข้อผิดพลาดทางไวยากรณ์ มาดูสตริงที่ไม่ปิดกัน:
def welcome_hero(): message = "Welcome, Hero! print(message) welcome_hero()
เรียกใช้รหัสของเรา:
File "main.py", line 2 message = "Welcome, Hero! ^ SyntaxError: EOL while scanning string literal
เราลืมปิดสตริงของเรา หากคุณดูที่บรรทัดของโค้ดที่เราประกาศตัวแปร "ข้อความ" จะไม่มีอักขระสตริงปิด
เราสามารถแก้ไขข้อผิดพลาดนี้ได้โดยปิดสตริงโดยใช้สิ่งเดียวกัน เครื่องหมายคำพูดที่เราใช้ในการเปิดสตริงของเรา
def welcome_hero(): message = "Welcome, Hero!" print(message) welcome_hero()
เรียกใช้รหัสของเราอีกครั้ง:
Welcome, Hero!
รหัสของเราทำงานสำเร็จ
ตัวอย่างสถานการณ์:เครื่องหมายคำพูดไม่ตรงกัน
ประเภทของใบเสนอราคาที่คุณใช้ในการเปิดสตริงควรเหมือนกับประเภทของใบเสนอราคาที่คุณใช้เพื่อปิดสตริง
ข้อผิดพลาดทางไวยากรณ์จะถูกส่งกลับเมื่อประเภทของเครื่องหมายคำพูดที่คุณใช้เปิดและปิดสตริงต่างกัน มาดูโปรแกรมที่เปิดสตริงโดยใช้เครื่องหมายอัญประกาศเดี่ยว (‘) และปิดสตริงโดยใช้เครื่องหมายอัญประกาศคู่ (”):
def welcome_hero(): message = 'Welcome, Hero!" print(message) welcome_hero()
รหัสของเราส่งคืน:
File "main.py", line 2 message = 'Welcome, Hero!" ^ SyntaxError: EOL while scanning string literal
เราสามารถแก้ไขปัญหานี้ได้โดยการทำใบเสนอราคาให้ตรงกัน เราจะเปลี่ยนเครื่องหมายคำพูดแรกของเราเพื่อใช้เครื่องหมายคำพูดคู่ (“):
def welcome_hero(): message = "Welcome, Hero!" print(message) welcome_hero()
รหัสของเราทำงานสำเร็จแล้ว:ยินดีต้อนรับฮีโร่!
บทสรุป
ข้อผิดพลาด “syntaxerror:EOL ขณะสแกนตัวอักษรสตริง” นั้นพบโดยนักพัฒนา Python ทุกคน ข้อผิดพลาดนี้เกิดขึ้นเมื่อ:
- คุณลืมปิดสตริง
- คุณปิดสตริงโดยใช้สัญลักษณ์ที่ไม่ถูกต้อง
- คุณประกาศสตริงหลายบรรทัดโดยใช้เครื่องหมายอัญประกาศหนึ่งอันแทนที่จะเป็นสาม
เพื่อแก้ไขข้อผิดพลาดนี้ ให้ตรวจสอบว่าเงื่อนไขข้างต้นเป็นจริงหรือไม่ จากนั้นทำการเปลี่ยนแปลงที่จำเป็นในโค้ดของคุณ ตอนนี้คุณพร้อมที่จะเริ่มแก้ไขข้อผิดพลาดนี้อย่างผู้เชี่ยวชาญ Python แล้ว!