คุณสามารถเพิ่มเงื่อนไข ในการทำงานของโปรแกรมได้มากกว่าหนึ่งเงื่อนไข โดยใช้คำสั่ง 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 หรือ Falseleft_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
฿ 34,500