การจัดการข้อผิดพลาดด้วย try-except
แนวทางที่ดีในการเขียนฟังก์ชันของตัวเองคือการคาดการณ์ไว้ด้วยว่าผู้อื่น (หรือแม้แต่ตัวเอง หากใช้ฟังก์ชันผิดพลาด) อาจเรียกใช้ฟังก์ชันนั้นอย่างไร
จากแบบฝึกหัดก่อนหน้า จะเห็นว่าฟังก์ชัน len() รับอาร์กิวเมนต์ประเภทสตริง ลิสต์ และทูเพิลได้ แต่ไม่สามารถรับประเภท int ได้ และจะส่งข้อผิดพลาดพร้อมข้อความที่เหมาะสมเมื่อรับอาร์กิวเมนต์ที่ไม่ถูกต้อง วิธีหนึ่งที่ทำแบบนี้ได้คือการใช้บล็อก try-except สำหรับจัดการข้อผิดพลาด
ในแบบฝึกหัดนี้ จะได้นิยามฟังก์ชันและใช้บล็อก try-except เพื่อรองรับกรณีที่มีการส่งอาร์กิวเมนต์ที่ไม่ถูกต้องเข้ามา
นึกถึงฟังก์ชัน shout_echo() ที่เคยนิยามไว้ในแบบฝึกหัดก่อนหน้า โดยโค้ดตัวอย่างได้ให้โครงสร้างบางส่วนไว้แล้ว เป้าหมายคือเติมโค้ดจัดการข้อผิดพลาดให้สมบูรณ์ และระบุข้อความแจ้งข้อผิดพลาดที่เหมาะสมเมื่อเกิดข้อผิดพลาดขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้น: การเขียนฟังก์ชัน
คำแนะนำการฝึกหัด
- กำหนดค่าเริ่มต้นให้กับตัวแปร
echo_wordและshout_wordsเป็นสตริงว่างเปล่า - เพิ่มคีย์เวิร์ด
tryและexceptในตำแหน่งที่เหมาะสมของบล็อกจัดการข้อผิดพลาด - ใช้ตัวดำเนินการ
*เพื่อเชื่อมword1ซ้ำechoครั้ง แล้วกำหนดผลลัพธ์ให้กับecho_word - เชื่อมสตริง
'!!!'ต่อท้ายecho_wordแล้วกำหนดผลลัพธ์ให้กับshout_words
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define shout_echo
def shout_echo(word1, echo=1):
"""Concatenate echo copies of word1 and three
exclamation marks at the end of the string."""
# Initialize empty strings: echo_word, shout_words
# Add exception handling with try-except
____:
# Concatenate echo copies of word1 using *: echo_word
echo_word = ____
# Concatenate '!!!' to echo_word: shout_words
shout_words = ____
____:
# Print error message
print("word1 must be a string and echo must be an integer.")
# Return shout_words
return shout_words
# Call shout_echo
shout_echo("particle", echo="accelerator")