การควบคุมเงื่อนไขในโปรแกรมอื่นจะมี if, switch หรือ case แต่สำหรับ python แล้วมีเพียงอย่างเดียวคือ if-elif-else โดยมีตัวอย่างการใช้งานดังนี้
#!/usr/bin/python
x = int(input("Please enter your number: "))
if x < 0:
print("Negative")
elif x == 0:
print("Zero")
elif x > 0:
print("Positive")
else:
print("Error")
จากตัวอย่างจะเหมือนการกำหนดเงื่อนไขโดย case หรือ switch โดยจะเริ่มจาก if ถ้าไม่ใช่แบบมีเงื่อนต่อก็ใช้ elif แต่ถ้ามีเพียง 2 ทางเลือกก็จะใช้ else ตัวอย่างเช่น
if x == 0:
print("Disabled")
else:
print("Enabled")
จากตัวอย่างนี้จะเลือกแค่ 0 หรือ 1 หรือเลือกปิดหรือเปิด
การทำงานวนรอบ (Loop)
นอกจากเงื่อนการทำงานตามกำหนดแล้วในการเขียนโปรแกรมก็จะอาศัยการวนรอบในการทำงานต่างๆ เพื่อให้ได้ซึ่งผลลัพธ์ที่ต้องการ และโดยปกติแล้วการทำงานวนรอบนี้จะมีการใช้เงื่อนไขอยู่ภายในรอบเพื่อตรวจสอบด้วย
ลองศึกษาตัวอย่างโปรแกรมนี้จะทำให้ทราบถึงการวนรอบ และ
#!/usr/bin/python
loop = True
nTotal = 0
while loop:
cGet = raw_input("Please enter your number: ")
if cGet.isdigit():
nNumber = int(cGet)
nTotal = nTotal + 1
print("You press number: {0}, count {1}".format(nNumber, nTotal))
loop = True
else:
if cGet == 'z' or cGet == 'Z':
loop = False
print("Exit...")
print("Please enter number from 0-9")
ลองศึกษาตัวอย่างโปรแกรมนี้จะทำให้ทราบถึงการวนรอบ และ
#!/usr/bin/python
loop = True
nTotal = 0
while loop:
cGet = raw_input("Please enter your number: ")
if cGet.isdigit():
nNumber = int(cGet)
nTotal = nTotal + 1
print("You press number: {0}, count {1}".format(nNumber, nTotal))
loop = True
else:
if cGet == 'z' or cGet == 'Z':
loop = False
print("Exit...")
print("Please enter number from 0-9")
จากตัวอย่างเป็นการใช้ while... ซึ่งเป็นคำสั่งสำหรับวนรอบทำงานตามเงื่อนไข โดยโปรแกรมจะวนทำงานตราบเท่าที่เงื่อนไขหลัง while จะเป็นจริง
อธิบายคำสั่ง
loop = True
สำหรับกำหนดให้ตัวแปรมีค่าเป็นจริง เพื่อให้ while ทำงานไปเรื่อยๆ จนกว่าตัวแปร loop จะเปลี่ยนเป็น False
nTotal = 0
กำหนดตัวแปร nTotal เริ่มที่ 0 เพื่อใช้นับจำนวนที่กดหมายเลข
cGet = raw_input("Please enter your number: ")
คำสั่งสำรับรับค่าจากคีย์บอร์ดแล้วนำไปเก็บไว้ในตัวแปร cGet ผ่านคำสั่ง raw_input และจะแสดงข้อความแจ้งให้ป้อนหมายเลข ในตัวอย่างนี้ใช้ raw_input แทนคำสั่ง input เพราะใช้งานได้ยืดหยุ่นกว่า input
if cGet.isdigit():
เป็นกาตรวจสอบว่าตัวแปร cGet เป็นตัวเลขหรือไม่ผ่านฟังค์ชัน isdigit()
nNumber = int(cGet)
แปลงค่าตัวอักษรให้เป็นตัวเลขที่สามารถคำนวณได้ผ่านฟังค์ชัน int() เพราะตัวเลขที่ป้อนผ่านคำสั่ง raw_input() จะเป็นข้อมูลแบบตัวอักษร ทำให้ตัวเลขนั้นไม่สามารถนำไปคำนวณได้
nTotal = nTotal + 1
เพิ่มค่า nTotal ขึ้นครั้งละ 1 เป็นการนับจำนวนครั้งที่กดตัวเลข
print("You press number: {0}, count {1}".format(nNumber, nTotal))
พิมพ์ข้อความบอกตัวเลขที่กด และจำนวนครั้งที่กดตัวเลข (ไม่นับตัวอื่นๆ ที่กด)
loop = True
เมื่อกดตัวเลขก็แจ้งให้ระบบทราบว่ายังจะทำงานต่อ โดยกำหนดให้ตัวแปร loop = True (จริงๆ ในตัวอย่างนี้ไม่ใส่ก็ได้ เพราะ loop มีค่าเป็น True อยู่แล้ว
else:
หากเงื่อนไขไม่เป็นไปตามเงื่อนไขหลัง if ก็จะเข้ามาอยู่ในการทำงานส่วนของ else
if cGet == 'z' or cGet == 'Z':
loop = False
print("Exit...")
print("Please enter number between 0-9")
if cGet == 'z' or cGet == 'Z':
ถ้าไม่ได้กดปุ่มตัวเลขแล้วให้ตรวจสอบว่าปุ่มที่กดเป็นตัวอักษร z หรือ Z ไหม ถ้าใช่ก็ให้ทำงานหลังบรรทัดนี้ แต่ถ้าไม่ใช่ให้ข้ามไปยังบล็อกถัดไป
loop = False
กรณีที่ไม่ได้กดตัวเลข และปุ่มที่กดไม่ใช่ z หรือ Z ให้กำหนดตัวแปร loop เป็นเท็จ เพื่อจะออกจากเงื่อนไขของ while
print("Exit...")
พิมพ์คำว่า Exit... ออกทางหน้าจอ
print("Please enter number between 0-9")
กรณีที่ไม่ได้กดปุ่มตัวเลขและไม่ใช่ตัวอักษร z หรือ Z ให้พิมพ์ข้อความบอกว่า กดปุ่มตัวเลขระหว่าง 0-9
เมื่อถึงบรรทัดสุดท้ายก็จะวนกลับไปตรวจสอบในเงื่อนไขของ while อีก หากไม่ได้กดปุ่ม z หรือ Z โปรแกรมก็จะเริ่มให้ป้อนตัวเลขใหม่อีกครั้งตามเงื่อนไข while loop: ดังนั้นหากต้องการออกจากการวนรอบนี้ก็กำหนดค่าให้ loop เป็น False
บล็อกในโปรแกรมตัวอย่าง
โปรแกรม python จะใช้เครื่องหมาย : สำหรับบล็อกของ loop, ฟังค์ชัน, คลาส, เงื่อนไข และใช้การเว้นวรรคหรือย่อหน้าเป็นบล็อกด้วย และให้ระวังว่า การเคาะเว้นวรรค กับกดปุ่ม Tab จะแตกต่างกัน ใช้ร่วมกันไม่ได้ ถีงแม้จะมีย่อหน้าเท่ากันก็ตาม และการย่อหน้าจะถือว่าระดับการย่อหน้าเท่ากัน คือ บล็อกเดียวกัน เช่น บรรทัดแรกเว้นวรรค 2 ช่องว่าง และบรรทัดต่อมาเว้นวรรค 3 ช่องว่างจะถือว่าเป็นบล็อกใหม่ ดังนั้นควรระวังให้มากที่สุด
loop = False
print("Exit...")
print("Please enter number between 0-9")
if cGet == 'z' or cGet == 'Z':
ถ้าไม่ได้กดปุ่มตัวเลขแล้วให้ตรวจสอบว่าปุ่มที่กดเป็นตัวอักษร z หรือ Z ไหม ถ้าใช่ก็ให้ทำงานหลังบรรทัดนี้ แต่ถ้าไม่ใช่ให้ข้ามไปยังบล็อกถัดไป
loop = False
กรณีที่ไม่ได้กดตัวเลข และปุ่มที่กดไม่ใช่ z หรือ Z ให้กำหนดตัวแปร loop เป็นเท็จ เพื่อจะออกจากเงื่อนไขของ while
print("Exit...")
พิมพ์คำว่า Exit... ออกทางหน้าจอ
print("Please enter number between 0-9")
กรณีที่ไม่ได้กดปุ่มตัวเลขและไม่ใช่ตัวอักษร z หรือ Z ให้พิมพ์ข้อความบอกว่า กดปุ่มตัวเลขระหว่าง 0-9
เมื่อถึงบรรทัดสุดท้ายก็จะวนกลับไปตรวจสอบในเงื่อนไขของ while อีก หากไม่ได้กดปุ่ม z หรือ Z โปรแกรมก็จะเริ่มให้ป้อนตัวเลขใหม่อีกครั้งตามเงื่อนไข while loop: ดังนั้นหากต้องการออกจากการวนรอบนี้ก็กำหนดค่าให้ loop เป็น False
บล็อกในโปรแกรมตัวอย่าง
โปรแกรม python จะใช้เครื่องหมาย : สำหรับบล็อกของ loop, ฟังค์ชัน, คลาส, เงื่อนไข และใช้การเว้นวรรคหรือย่อหน้าเป็นบล็อกด้วย และให้ระวังว่า การเคาะเว้นวรรค กับกดปุ่ม Tab จะแตกต่างกัน ใช้ร่วมกันไม่ได้ ถีงแม้จะมีย่อหน้าเท่ากันก็ตาม และการย่อหน้าจะถือว่าระดับการย่อหน้าเท่ากัน คือ บล็อกเดียวกัน เช่น บรรทัดแรกเว้นวรรค 2 ช่องว่าง และบรรทัดต่อมาเว้นวรรค 3 ช่องว่างจะถือว่าเป็นบล็อกใหม่ ดังนั้นควรระวังให้มากที่สุด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น