ผู้จัดจำหน่ายและนำเข้า อุปกรณ์ทางวิทยาศาสตร์ อุปกรณ์ห้องแลป และสื่อการเรียนการสอน

50th Anniversary

การเขียนโปรแกรมด้วย Python (What Else)

การเขียนโปรแกรมด้วย Python กับ LEGO Education คำสั่งน่ารู้: What Else?

 

คุณสามารถเพิ่มเงื่อนไข ในการทำงานของโปรแกรมได้มากกว่าหนึ่งเงื่อนไข โดยใช้คำสั่ง elif ต่อจากคำสั่ง if เพื่อตรวจสอบเงื่อนไขเพิ่มเติม คุณสามารถเพิ่มคำสั่ง elif ได้มากเท่าที่ต้องการ โดยมีรูปแบบการเขียนเช่นเดียวกับคำสั่ง if คำสั่ง elif จะต้องอยู่ระดับการเยื้องบรรทัดเดียวกับคำสั่ง if แรก และตามด้วย Logical Expression และ (:) จากนั้นให้เยื้องบรรทัด ของชุดคำสั่งถัดไปที่ต้องการให้ทำงาน เมื่อเงื่อนไขนั้นมีค่าเป็น True

ในบางกรณี เงื่อนไขทั้งหมดที่กำหนดไว้ในคำสั่ง if และ elif อาจไม่มีเงื่อนไขใดเป็นจริง True เลย คุณสามารถใช้คำสั่ง else เพื่อกำหนดให้โปรแกรมทำงานตามชุดคำสั่งที่ต้องการได้ โดยไม่จำเป็นต้องระบุเงื่อนไขเพิ่มเติม คำสั่ง else จะทำงานเมื่อเงื่อนไขก่อนหน้าทั้งหมดมีค่าเป็น False

ตัวอย่างเช่น โปรแกรมด้านล่างนี้มีการเพิ่มคำสั่ง elif และ else เพื่อให้ Hub สามารถส่งเสียงบี๊บเมื่อมีการกดปุ่มด้านซ้ายได้อีกด้วย

 

from hub import button, port, sound
import color
import color_sensor
import runloop

# This function returns `True` if the Color Sensor detects red.
def red_detected():
    return color_sensor.color(port.A) == color.RED

# This function returns `True` if the left button is pressed.
def left_pressed():
    return button.pressed(button.LEFT) > 0

async def main():
    while True:
        if red_detected():
            # If red is detected start a very long beep.
            sound.beep(440, 1000000, 100)
            # Wait until red is no longer detected.
            while red_detected():
                await runloop.sleep_ms(1)
        elif left_pressed():
            # If the left button is pressed make a short beep.
            sound.beep(880, 200, 100)
            # Wait until the left button is released.
            while left_pressed():
                await runloop.sleep_ms(1)
        else:
            # Otherwise, stop the sound.
            sound.stop()

runloop.run(main())

 

ลองนำชิ้นส่วนเลโก้สีแดง มาเคลื่อนผ่านด้านหน้า Color Sensor และกดปุ่มด้านซ้ายบน Hub ขณะที่โปรแกรมกำลังทำงาน คุณจะได้ยินเสียงบี๊บดังอย่างต่อเนื่อง ตราบใดที่เซนเซอร์ยังตรวจพบสีแดง และจะได้ยินเสียงบี๊บสั้น ๆ ทุกครั้งที่กดปุ่มด้านซ้าย

โปรแกรมตัวอย่างนี้มีการสร้างฟังก์ชัน 2 ฟังก์ชัน เพื่อใช้ตรวจสอบเงื่อนไขทางตรรกะ และส่งค่าผลลัพธ์กลับมา ได้แก่

  • ฟังก์ชัน red_detected() ใช้ตรวจสอบว่าสีที่ Color Sensor ตรวจพบเป็นสีแดงหรือไม่ และส่งค่าผลลัพธ์กลับมาเป็น True หรือ False
  • ฟังก์ชัน left_pressed() ใช้ฟังก์ชัน pressed() จากโมดูล hub.button ร่วมกับเครื่องหมาย > เพื่อตรวจสอบว่าค่าที่ได้รับมากกว่า 0 หรือไม่ จากนั้นจึงส่งค่าผลลัพธ์กลับมา

ชุดคำสั่งภายใน if ในตัวอย่างนี้ ส่วนใหญ่ยังเหมือนกับโปรแกรมตัวอย่าง แต่มีการปรับเปลี่ยนให้เรียกใช้ฟังก์ชัน red_detected() ใน 2 ตำแหน่ง แทนการเขียนเงื่อนไขเดิมซ้ำในคำสั่ง if และ while ส่วนคำสั่ง elif จะใช้ฟังก์ชัน left_pressed() เพื่อตรวจสอบว่าปุ่มด้านซ้ายบน Hub ถูกกดเป็นระยะเวลามากกว่า 0 มิลลิวินาทีหรือไม่

หมายเหตุ : คำสั่ง elif จะทำงานก็ต่อเมื่อ เงื่อนไขของคำสั่ง if แรกมีค่าเป็น False เท่านั้น ดังนั้นหากคุณกดปุ่มด้านซ้าย ในขณะที่ Color Sensor ตรวจพบสีแดง การกดปุ่มดังกล่าว จะไม่ส่งผลต่อการทำงานของโปรแกรม ด้วยเหตุนี้จึงควรพิจารณาลำดับของเงื่อนไข if และ elif อย่างรอบคอบ โดยจัดลำดับให้โปรแกรมตรวจสอบเงื่อนไขที่สำคัญที่สุดก่อน สำหรับคำสั่ง else จะทำหน้าที่หยุดเสียง เมื่อไม่มีเงื่อนไขใดมีค่าเป็น True

 

Writer : Pacharee Wongcherngyoot
CODE : 80D45678

฿ 34,500