
ตัวแปร : ตัวอย่างเพิ่มเติม (การดีบั๊กภาษาไพธอน)

อัปเกรดสำหรับเนื้อหาเพิ่มเติม
True or false? "NameError" means we used the same variable name several times.
ลีน่าได้เขียนโปรแกรมขึ้นมา และนี่คือรหัสเทียมของเธอ บันทึกชื่อและอายุสำหรับ 2 คน คำนวณความต่างของอายุของพวกเขา และแสดงผลข้อมูล ตรงนี่รหัสเทียมถูกแปลงไปเป็น ภาษาไพธอนและบันทึกด้วยชื่อ "โปรแกรม" ลองมาทดสอบรหัสกัน บันทึกชื่อและอายุของคนสองคน โอ้ มันผิด "program line" ที่ 5 โปรแกรมมีข้อผิดพลาดในบรรทัดที่ 5 มันผิดพลาดที่ชื่อ ชื่อ age1 "ไม่ได้ตั้งไว้" บรรทัดที่ 5 หมายถึงคำสั่งที่ 5 ลองดูมันสิ ที่ 1 ที่ 2 ที่ 3 ที่ 4 คำสั่งที่ 5 ก็คือ ผลลัพธ์เท่ากับ age 1 ลบด้วย age 2 ดังนั้นคำสั่งนี้จึงมีข้อผิดพลาดที่ชื่อ age1 ไม่ได้ถูกกำหนดเอาไว้ นั่นหมายความว่าตัวแปร age1 ไม่ได้ถูกสร้างขึ้นมาใช้ในคำสั่งที่ 5 แต่เราได้สร้าง ตัวแปร age1 ในรหัสบนนี้ มันมีความต่างอยู่หน่อย เห็นหรือยังล่ะ? ตอนเราออกคำสั่งตัวแปรนั้น เราเขียนด้วย A ใหญ่ แต่ก็พยายามใช้ a เล็กในรหัสต่อมา ดังนั้น เราจึงพยายามใช้ ตัวแปรที่ไม่มีอยู่จริงไงล่ะ ตัวพิมพ์เล็กพิมพ์ใหญ่ในภาษาไพธอน เป็นเรื่องสำคัญ ตอนที่เราให้ชื่อกับตัวแปรน่ะ งั้นลองเปลี่ยนเป็นตัว "a" เล็ก แล้วทดสอบรหัสอีกครั้ง เมื่อบันทึกชื่อและอายุแล้ว คำสั่งที่ 5 ก็ดูเหมือนจะใช้งานได้ ปัญหาได้รับการแก้ไขแล้ว ดีจริง แต่เราก็ยังได้รับข้อความผิดพลาดใหม่มาอีก ตอนนี้ ข้อความบอกเราว่าผิดที่หมายเลข 6 มันเป็นเรื่องของ TypeError ประเภทตัวแปรไม่ถูกต้อง มันจะต้องเป็น str คือ ข้อมูลชนิดตัวอักษรที่มีความยาวมากกว่า 1 ตัวอักษร ไม่ใช่ int คือ มันไม่ใช่จำนวนเต็ม คำสั่งที่ 6 คือคำสั่งการพิมพ์ ภายในวงเล็บของคำสั่งการพิมพ์ มีตัวแปรอยู่หลายตัว ตัวแปรใดบ้างที่เป็นจำนวนเต็ม? n1 เป็นข้อความ is เป็นข้อความ ผลลัพธ์ที่ได้รับด้วยการ เอาจำนวนเต็ม ไปลบกับจำนวนเต็มอื่น มันจะเป็นจำนวนเต็ม ไม่ใช่ข้อความ แต่เราได้พบว่ามีจำนวนเต็ม ที่ควรเป็นข้อความนะ ทีนี้มาเปลี่ยนผลลัพธ์จากตัวแปรจำนวนเต็ม ให้เป็นข้อความ อ่า นั่นทำง่ายนะ เขียน str และวงเล็บเปิดไว้ก่อนผลลัพธ์ จากนั้นค่อยปิดวงเล็บ ทีนี้ลองทดสอบรหัสอีกครั้ง ป้อนชื่อและอายุแบบเดิมนั่นแหละ ลีน่า 16 มาเรีย 15 ลีน่าอายุมากกว่ามาเรีย 1 ปี ตอนนี้มันทำงานได้โดยไม่มีข้อความ แสดงข้อผิดพลาดเลย ถ้าเราอยากรู้ว่าข้อความแสดง ข้อผิดพลาดเป็นอย่างไร ก็ลองตั้งใจป้อนข้อมูลผิดๆ เข้าไปในรหัส แล้วดูข้อความที่แสดงออกมา