ลองนึกภาพการใช้งานโปรแกรมสมัครสมาชิกร้านกาแฟ ที่ในช่องอายุของสมาชิกมีความจำเป็นต้องกรอกจำนวนตัวเลขเท่านั้น เพื่อนำไปจัดเก็บลงบันทึกเข้าสู่ระบบฐานข้อมูล ดูแล้วก็น่าจะเป็นการใช้งานที่ราบรื่นตามขั้นตอนการใช้งานโปรแกรมทั่วไป แต่เผอิญผู้ใช้งานมันถือไปนิด หนึ่งป้อนเป็นค่า a7 ลงในช่องอายุ ลูกค้าก็รีบๆ เพลงให้ผู้ใช้งานรีบทำงานให้เสร็จผู้ใช้งาน จึงไม่ได้ตรวจสอบความถูกต้องของข้อมูลที่กรอกไว้บนจอภาพก่อนทำการบันทึกลงในฐานข้อมูล คิดดูว่าอะไรจะเกิดขึ้นกับข้อมูลในช่องอายุที่ต้องเป็นตัวเลข ถ้าโปรแกรมเมอร์เขียนโปรแกรมไว้ดี ก็จะมีการตรวจสอบข้อมูลตามช่องกรอกข้อมูลว่าถูกต้องหรือเปล่า แล้วแจ้งเตือนผู้ใช้งานให้แก้ไขให้ถูกต้องจะเห็นว่าพื้นฐาน 1 ในการเขียนโปรแกรมไม่ว่าจะเขียนด้วยภาษาใดหรือแม้แต่ภาษา python ก็จะต้องมีคำสั่งตรวจสอบเงื่อนไขเพื่อนำมาใช้แก้ไขปัญหา ตามที่ยกตัวอย่างโปรแกรมร้านกาแฟกับการป้อนอายุ เป็นต้น ซึ่งส่วนใหญ่คำสั่งตรวจเงื่อนไขมักจะใช้เป็นคำสั่ง If ( If statement) โดยจะมีวิธีการเขียนตามรูปแบบดังนี้
คำว่า “เงื่อนไข” ที่เห็นในรูปแบบของคำสั่ง if (ซึ่งส่วนใหญ่ Python จะเรียกว่า Comparson) ข้างต้น พูดง่ายๆ ก็คือการเปรียบเทียบสิ่งที่ต้องการตรวจสอบนั่นเอง เช่น ค่าในช่องอายุ == ตัวเลขอย่างเดียว (จากตัวอย่างที่เล่าเรื่องในตอนต้นของบทนี้ เมื่อต้องการสร้างเงื่อนไขสำหรับการตรวจสอบช่องอายุ) หรือต้องการตรวจค่าในตัวแปร a มีค่าตัวเลขเกิน 1500 หรือเปล่า วิธีเขียนเงื่อนไขเพื่อตรวจสอบคือ a > 1500 ลงในคำสั่ง if หลังจากการทดสอบตามเงื่อนไขที่ระบุ คำสั่ง if จะบอกผลลัพธ์ที่ได้เป็น 2 ลักษณะ คือ
1. ผลลัพธ์เป็นไปตามเงื่อนไขหรือค่าที่เป็นจริง (True)
2. ผลลัพธ์ไม่ตรงกับเงื่อนไขที่ตรวจสอบหรือได้ผลเป็นเท็จ (False)
แสดงการทดสอบเงื่อนไขของตำสั่ง if และชุดคำสั่งที่ต้องทำงานเมื่อเงื่อนไขเป็นจริง
แสดงเส้นทางการทดสอบเงื่อนไขที่เป็นเท็จ และเริ่มกระบวนการทำงาน
ในชุดคำสั่ง
หลังคำสั่ง else ซึ่งเป็นพื้นที่ของกลุ่มคำสั่งเมื่อการทดสอบเป็นเท็จ
เมื่อมองดูรูปแบบการสร้างเงื่อนไขเช่น a > 4 จะมีการใช้เครื่องหมายทางด้าน Operator สำหรับการเปรียบเทียบ (comparison มาประกอบร่วมกับค่าข้อมูลที่ต้องการเปรียบเทียบในที่นี้คือตัวแปรและตัวเลข 4 สำหรับการตรวจสอบเงื่อนไขว่าค่าในตัวแปร a มากกว่าค่าตัวเลข 4 หรือไม่) ลักษณะของการเลือกใช้เครื่องหมาย Operator สำหรับการเปรียบเทียบเงื่อนไขแบ่งออกเป็น 4 รูปแบบดังนี้
1. เครื่องหมายสำหรับเปรียบเทียบหาค่าข้อมูลที่เท่ากัน ( Equality comparison operation) เช่น a == 10, B == c ฯลฯ จะใช้เครื่องหมายเท่ากับ ( แต่เขียน 2 ครั้งติดกันตามตัวอย่าง)ในการสร้างเงื่อนไข
2. เครื่องหมายในการเปรียบเทียบค่าข้อมูลที่ไม่เท่ากัน (Not Equality comparison operation) จะใช้ != รวมกับค่าข้อมูลที่ต้องการเปรียบเทียบเช่น a != 10 (ค่าข้อมูลในตัวแปร a ไม่เท่ากับค่าตัวเลข 10 ใช่หรือไม่เป็นต้น
3. เครื่องหมายเปรียบเทียบค่าข้อมูลมากกว่าหรือน้อยกว่า (Greater Than and Less Than Comparison Operation) ใช้เครื่องหมาย > (มากกว่า), < (น้อยกว่า), >= (มากกว่าหรือเท่ากับ), <= (น้อยกว่าหรือเท่ากับ)
4. Not กับการทำหน้าที่ในการเปรียบเทียบ (Not Comparition operation) โอเปอเรเตอร์นี้เหมาะกับการนำมาใช้งานกับค่าข้อมูลที่เป็น True หรือ False ด้วยการทำงานของ โอเปอเรเตอร์ not จะเปลี่ยนค่าข้อมูลไปในทางตรงกันข้าม เช่น ถ้าค่าในตัวแปร A มีค่าเป็น True เมื่อนำ โอเปอเรเตอร์ not มาใช้กับตัวแปร a หรือ not a ผลลัพธ์จะได้ค่า false ด้วยเหตุนี้ถ้าข้อมูลที่จะนำมาใช้กับโอเปอเรเตอร์ not ต้องมี2สถานะเสมอคือ True และfalse
จะเห็นได้ว่า ลักษณะการใช้โอเปอเรเตอร์การเปรียบเทียบของภาษา Python จะมีการใช้งานเหมือนภาษาโปรแกรมอื่นๆ ตามมาตรฐานทั่วไปจึงง่ายต่อการเรียนรู้รูปแบบการเขียนและการทำงาน
ตารางสรุปการใช้เครื่องหมายโอเปอเรเตอร์เปรียบเทียบ
โอเปอเรเตอร์ |
ความมาย |
ตัวอย่าง |
ผลลัพธ์ |
== |
เท่ากับ |
A == 10 |
จะได้ค่า True ก็ต่อเมื่อตัวแปร A มีค่าเป็น 10 เท่านั้น |
> |
มากกว่า |
A > 3 |
ถ้าค่าข้อมูลในตัวแปร A มีค่าตั้งแต่ 4 ขึ้นไปจะได้ผลลัพธ์เป็น True |
>= |
มากกว่าหรือเท่ากับ |
A >= 3 |
ผลลัพธ์จะเป็น True ตั้งแต่ค่าในตัวแปรมีค่าเป็น 3 ขึ้นไป |
< |
น้อยกว่า |
A < 2 |
จะเป็น True เมื่อค่าข้อมูลในตัวแปร A มีค่าเป็น 1 หรือน้อยกว่า 1 เสมอ |
<= |
น้อยกว่าหรือเท่ากับ |
A <= 2 |
เมื่อไรค่าข้อมูลในตัวแปร A มีค่าเป็น 2 |
!= |
ไม่เท่ากับ |
A != 10 |
จะได้ผลลัพธ์เป็น True ตราบใดที่ค่าข้อมูลใน A ไม่เท่ากับ 10 |
not |
ตรวจค่าตรงกันข้าม
ระหว่าง True กับ False |
Not A |
|
ทดลองเขียนคำสั่งและสังเกตผลลัพธ์ที่ได้จากการทำงานตามตัวอย่างต่อไปนี้ใน Python Shell
หลังจากทำความเข้าใจการกำหนดเงื่อนไขด้วย Operator ด้านการเปรียบเทียบ เมื่อต้องนำมาประกอบการเขียนร่วมกับคำสั่ง if โดยผลลัพธ์ของคำสั่ง if มี 2 สถานะเมื่อตรวจสอบตรงตามเงื่อนไขจะได้สถานะเป็น True และได้สถานะเป็น false เมื่อการตรวจสอบไม่ตรงตามเงื่อนไขซึ่งจะมีการระบุการกระทำสำหรับแต่ละสถานะของผลลัพธ์ตามโครงสร้างของคำสั่ง if แต่งรูปแสดงเส้นทางการกระทำของผลลัพธ์ที่เกิดจากการตรวจสอบเงื่อนไข (ภายใต้โครงสร้างของคำสั่ง if จะมีวิธีกำหนดพื้นที่ย่อยโดยแบ่ง indent ของคำสั่งย่อย
การเข้าถึงพื้นที่ของกลุ่มคำสั่งย่อยภายใต้คำสั่ง if ซึ่งจะแบ่งออกเป็น 2 พื้นที่คือพื้นที่ของกลุ่มคำสั่งย่อย เมื่อผลลัพธ์ของการตรวจสอบเงื่อนไข มีสถานะเป็นจริง (True) และพื้นที่ของกลุ่มคำสั่งย่อยที่จะทำงานได้ ก็ต่อเมื่อผลการตรวจสอบเงื่อนไขไม่ตรงตามที่กำหนดของเงื่อนไข หรือได้สถานะเป็นเท็จ (False)
เมื่อต้องนำคำสั่ง if มาใช้ร่วมกับการเขียนโปรแกรม python จะมีรูปแบบที่นักพัฒนาโปรแกรมนิยมเขียนอยู่ 4 รูปแบบ ตามเหตุการณ์ของการตรวจสอบเงื่อนไขดังนี้ที่มันคิด
1. การใช้คำสั่ง if ตรวจสอบเงื่อนไขและทำงานกลุ่มคำสั่งย่อย เมื่อการตรวจสอบเงื่อนไขเป็นจริง (True) เท่านั้น
2. การใช้คำสั่ง if ร่วมกับ elif สำหรับตรวจสอบเงื่อนไขและทำกลุ่มคำสั่งย่อย เมื่อผลลัพธ์การตรวจสอบเป็นจริง (True) เท่านั้น
3. การใช้คำสั่ง if ที่มีลักษณะการตรวจสอบเงื่อนไขแบบสอนกัน (Nested)
4. การใช้คำสั่ง If ร่วมกับคำสั่ง else
ทดลองพิมพ์การใช้ if ตามรูปแบบที่ 1 ลงในโมดูลของ Python (ใน Python shell เลือกเมนู file คลิกเมนูย่อยที่ชื่อว่า New เพื่อเปิดโมดูลของ Python)
a = {'STV50' : 'TV SONY 50 นิ้ว', 'LG100' : 'TV LG', 'SCD' : 'VCD SONY', 'TDVD' : 'SAMSUNG DVD'}
b = input('ป้อนรหัสสินค้า TV SONY')
if a[b] == 'TV SONY 50 นิ้ว' :
print('ยังมีสินค้า TV SONY ในโกดัง 10 เครื่อง')
print('\n ต้องการเบิกติดต่อฝ่ายคลัง')
b = input('ป้อนรหัสสินค้า VCD SONY :')
if a[b] == 'VCD SONY' :
print('สินค้าอยู่ระหว่างจัดส่งมายังโกดัง')
print('\n อีก 2 วันจะมาถึง สามารถส่งของ')
print('\n ล่วงหน้าได้เลย')
มีรูปแบบการเขียน ดังนี้
a = 10
if a == 10:
ทำคำสั่งย่อยในพื้นที่นี้เมื่อค่าในตัวแปร a มีค่าเท่ากับ 10
elif a == 100:
ทำคำสั่งย่อยในพื้นที่นี้เมื่อค่าของตัวแปร a มีค่าเท่ากับ 100
eif a > 200:
ทำคำสั่งย่อยในพื้นที่นี้เมื่อค่าของตัวแปร a มีค่ามากกว่าหรือเท่ากับ 200
elif a < = 0 :
ทำคำสั่งย่อยในพื้นที่นี้เมื่อค่าในตัวแป a น้อยกว่าหรือเท่ากับ 0
ถ้าหากมีโจทย์ที่ต้องการตรวจค่าในตัวแปร a โดยมีเงื่อนไขและการกระทำเมื่อการตรวจสอบเงื่อนไขเป็นจรองที่แตกต่างกัน ดังเช่นตัวอย่างข้างต้น การตรวจสอบค่าในตัวแปร a จะมีถึง 4 ครั้ง สั่งเกตจากการใช้คำสั่ง if และ elif ตรวจสอบเงื่อนไขและมีการทำงานของกล่มคำสั่งย่อยของใครของมัน เมื่อผลลัพธ์การตรวจสอบมีสถานะเป็นจริง จำนวนของคำสั่ง if + elif ก็คือ จำนวนของความต้องการที่ตรวจสอบค่าในตัวแปร a นั่นเอง
เส้นทางลำดับการตรวจสอบค่าในตัวแปร a
เมื่อผลการทดสอบเป็นเท็จทั้งหมด
a = 9 if a == 10:
print('a มีค่าเป็น 10 จริง')
elif a == 100:
print('a มีค่า')
elif a >= 200:
print('มีค่ามากกว่า 200')
print('จบขั้นตอนการตรวจค่า a')
print('ทำคำสั่งอื่นๆ ต่อไป') |
เส้นทางลำดับการตรวจสอบค่าในตัวแปร a
เมื่อผลการทดสอบเป็นจริง
a = 100 if a == 10:
print('a มีค่าเป็น 10')
elif a == 100:
print('a มีค่า 100')
elif a >= 200:
print('a มีค่ามากกว่า 200')
print('จบการทดสอบ')
print('ทำคำสั่งอื่นๆ ') |
ด้านซ้ายแสดงลักษณะการทำงานของรูปแบบการเขียนคำสั่ง if + elif เมื่อผลลัพธ์การตรวจสอบเป็นเท็จทั้งหมด และทางด้านขวาแสดง การทำงานเมื่อการตรวจสอบค่าในตัวแปร a มีผลลัพธ์การตรวจสอบมีสถานะเป็นจริง และได้มีการกระทำของกลุ่มคำสั่งย่อยของคำสั่ง if หรือ elif นั้น
เพื่อให้ง่ายต่อการทำความเข้าใจจึงกำหนดลำดับการตรวจสอบในแต่ละคำสั่ง if และ elif ตามเงื่อนไขที่กำหนดไว้ โดยโครงสร้าง การเขียนจะเริ่มต้นด้วยคำสั่งตรวจสอบแรกสุดคือ คำสั่ง if และเมื่อต้องเพิ่มคำสั่งตรวจสอบถัดไปให้ใช้คำสั่ง elif จึงจะถือว่าเป็นคำสั่ง ตรวจสอบตามรูปแบบในหัวข้อที่ 2 นี้
ทดลองการใช้คำสั่ง if + elif ลงในโมดูลของ Python (บนจอภาพ Python Shell เลือกเมนู file เลือกเมนูย่อย New เพื่อทำการเปิด Python โมดูล)
การเขียนคำสั่ง if แบบ Nested ฟังดูแล้วน่าจะเป็นการเขียนอะไรที่ต้องแปลกแตกต่างจากรูปแบบการเขียนคำสั่งในข้อที่ 1 และ 2 อย่างแน่นอน แต่ความเป็นจริงก็คือ การเขียนคำสั่งแบบ Nested เป็นการใช้คำสั่ง if ซ้อนภายในกลุ่มคำสั่งย่อยของคำสั่ง if แรกเท่านั้นเอง ประโยชน์ของการเขียนคำสั่ง if แบบ Nested ก็เพื่อที่จะมีการตรวจสอบเงื่อนไขย่อยลึกลงไป ยกตัวอย่าง หากคำในตัวแปร a มีข้อมูลเกี่ยวกับทีวีโซนี่ (TV Sony), ทีวีแอลจี(TV LG), ทีวีโตชิบา(TV Toshiba), ทีวีซัมซุง(TV Samsung), วีซีดีโซนี่(VCD Sony), วีซีดีแอลจี(VCD LG) เป็นต้น เราจะใช้คำสั่ง if สำหรับการตรวจสอบเงื่อนไข สำหรับการแบ่งประเภทของข้อมูลในตัวแปร a ออกเป็น 2 ประเภท หรือ 2 คำสั่ง if ประกอบด้วย ประเภททีวีและประเภทวีซีดี ตามรูปแบบการเขียนคำสั่ง ต่อไปนี้
การใช้คำสั่ง if ตรวจสอบเงื่อนไขเพื่อแยกประเภทของข้อมูลในตัวแปร a นับเป็นการกรองข้อมูลชั้นที่ 1 ด้วยคำสั่ง if คราวนี้ลองมาเพิ่มการตรวจสอบเงื่อนไขย่อยด้วยคำสั่ง if เพิ่มลงในพื้นที่กลุ่มคำสั่งย่อยของแต่ละคำสั่ง if ในชั้นที่ 1 เพื่อตรวจสอบค่าข้อมูลเฉพาะ ยกตัวอย่าง ต้องการตรวจสอบหาค่าในตัวแปร a ที่ตรงกับคำว่า ‘tv lg’ โดยที่ค่าดังกล่าวจะตรงกับ a[1] (เนื่องด้วยตัวแปร a เป็นชนิด Sequence แบบ List ซึ่งต้องใช้หมายเลขอ้างอิงข้อมูลภายในของตัวแปร a อ่านรายละเอียดตัวแปรชนิดนี้ได้ในบทที่ 3) ซึ่งจะมีรูปแบบการเขียนคำสั่ง if เพิ่มเติมซ้อนลงในกลุ่มคำสั่งย่อยของคำสั่ง if ในชั้นที่ 1 ดังต่อไปนี้
จากรูปแบบการเขียนคำสั่งที่เห็นในตัวอย่าง จะใช้คำสั่ง if ซ้อนกันเป็นชั้นๆ โดยการตรวจสอบเงื่อนไขจะมีลำดับจากคำสั่ง if ชั้นที่ 1 ซึ่งประกอบด้วย a[1][:2] == 'vcd' ภายใต้เงื่อนไขแรกคือ a[1][:2] == 'tv' หรือการตรวจข้อมูลสำหรับกลุ่มทีวี จะมีคำสั่ง if ย่อยเป็นชั้นที่ 2 อีก 4 คำสั่งสำหรับการตรวจสอบเฉพาะค่าข้อมูลของตัวแปรจริง เช่น ค่าใน b (ซึ่งรับค่าโอนถ่ายมาจากตัวแปร a[1]) มีค่าเท่ากับ 'tv lg' ใช่หรือไม่ ถ้าใช่ก็ทำคำสั่งย่อยของคำสั่ง if b == 'tv lg' คือทำคำสั่ง print('ค่าในตัวแปร b คือ tv lg')
ตามรูปแบบการใช้คำสั่ง if ดังที่อธิบายไว้เป็นวิธีการใช้คำสั่ง if แบบ Nested สำหรับการตรวจสอบเงื่อนไขในเชิงลึก
ทดลองพิมพ์การใช้คำสั่ง if แบบ Nested ลงในโมดูลของ Python
พื้นฐานการทำงานของคำสั่ง if มีหน้าที่ตรวจสอบเงื่อนไขตามที่กำหนด และต้องมีการตอบสนองต่อผลลัพธ์ของการตรวจสอบเงื่อนไข ในพื้นที่กลุ่มคำสั่งย่อย เมืองเงื่อนไขเป็นไปตามที่กำหนดหรือมีสถานะที่เป็นจริง (True) แต่ถ้าหากต้องการเพิ่มพื้นที่กลุ่มคำสั่งย่อย กรณีผลลัพธ์ของการตรวจสอบเงื่อนไขไม่ตรงตามที่กำหนดหรือมีสถานะเป็นเท็จ (False) รูปแบบการเขียนคำสั่งในกรณีนี้จำเป็นต้องเพิ่มคำสั่ง else ให้กับคำสั่ง if
แสดงรูปแบบการเขียนและลักษณะการทำงานของคำสั่ง if และ else
ทดลองพิมพ์คำสั่ง if และคำสั่ง else สำหรับการตรวจสอบเงื่อนไขลงในโมดูลของ Python
การกำหนดเงื่อนไขมากกว่า 1 เงื่อนไขให้กับคำสั่ง if ถ้าหากต้องการสร้างเงื่อนไขตรวจค่าข้อมูลที่อยู่ในตัวแปร A ซึ่งเป็นข้อมูลชนิดตัวเลขจำนวนเต็มที่มีค่าตัวเลขอยู่ในช่วง 37 ถึง 76 จะมีวิธีการสร้างเงื่อนไขเพื่อนำไปตรวจสอบและคำสั่ง if ถึง 2 เงื่อนไขโดยเงื่อนไขแรกจะตรวจดูค่าตัวเลขในตัวแปร A ที่มีค่ามากกว่าหรือเท่ากับตัวเลข 37 ( มีรูปแบบการเขียนเพื่อนำไปใช้ในงานคือ a >= 37 และเงื่อนไขที่ 2 จะตรวจค่าตัวเลขของตัวแปร A ที่น้อยกว่าหรือเท่ากับตัวเลข 76 (มีรูปแบบของการเขียนเงื่อนไขสำหรับนำไปใช้ในคำสั่ง if ดังนี้ a <= 76) ซึ่งในการตรวจสอบด้วยคำสั่ง if จำเป็นต้องนำเงื่อนไขแลกมาผูกร่วมกับเงื่อนไขที่ 2 จึงจะทำให้การตรวจสอบเงื่อนไขได้ตามจุดที่ตั้งขึ้น สิ่งที่น่าสนใจคือการผูกเงื่อนไขทั้ง 2 เข้าด้วยกัน ให้ทำงานผสมผสานกันเป็นอย่างดีโดยอาศัยการใช้ Combining Operator ซึ่งประกอบด้วย and และ or
โอเปอเรเตอร์ที่ทำหน้าที่ผูกเงื่อนไขของคำสั่ง if เข้าด้วยกันมี 3 รูปแบบดังนี้
1. รูปแบบการเขียนคำสั่ง if ร่วมกับ and operator
2. รูปแบบการเขียนคำสั่ง if ร่วมกับ or operator
3. รูปแบบการเขียนคำสั่ง if ร่วมกับ and และ or operator
บรรทัดที่ 1 a = 5
บรรทัดที่ 2 if a >= 2 and a <= 7:
บรรทัดที่ 3 print('ตัวเลขอยู่ในช่วง 2 ถึง 7 เท่านั้น')
บรรทัดที่ 4 print('ทำเรื่องอื่นต่อไป')
จากการใช้โอเปอเรเตอร์ and ในบรรทัดที่ 2 แสดงให้เห็นการทดสอบเงื่อนไขแรกสุดคือ a >= 2 และเงื่อนไข a <= 7 โดยจะนำผลลัพธ์ของทั้งสองเงื่อนไขมาเทียบคุณสมบัติของ and operator (คุณสมบัติของการ and operator จะได้ผลลัพธ์เป็นจริง (True) ก็ต่อเมื่อผลลัพธ์ของทั้งสองเงื่อนไขเป็นจริง (True) เท่านั้น) จากตัวอย่างคำสั่งในบรรทัดที่ 2 ตัวแปร a มีค่า 5 เมื่อนำมาตรวจสอบกับเงื่อนไขที่ 1 คือ a >= 2 หรือแทนค่า 5 ที่ตัวแปร a ของเงื่อนไขแรกจะได้ 5 >= 2 แน่นอนผลลัพธ์ของเงื่อนไขนี้เป็นจรอง (True) เช่นเดียวกับเงื่อนไขที่ 2 คือ a <= 7 แทนค่า 5 ที่ตัวแปร a ในเงื่อนไขจะได้ 5 <= 7 ซึ่งผลลัพธ์ที่ได้จากการตรวจสอบเงื่อนไขที่ 2 ก็เป็นจริง (True) เช่นกัน
เมื่อนำผลลัพธ์ของทั้งสองเงื่อนไขมาใช้ร่วมกับ and ภายใต้คำสั่ง if ส่งผลให้การตรวจสอบเงื่อนไขทั้งหมดเป็นไปตามที่กำหนด หรือมีสถานการณ์ตรวจสอบเป็นจริง (True) ในที่นี้คำสั่งถัดไปหลังการตรวจสอบเงื่อนไขก็คือ คำสั่ง print บรรทัดที่ 3 นั่นเอง
เทคนิคการเขียน and operator ร่วมกับคำสั่ง if ใน Python บางรูปแบบจะมีลักษณะดังต่อไปนี้ รูปแบบคำสั่ง if ร่วมกับ and ปกติ
if a >= 2 and a <= 7
รูปแบบคำสั่ง if ร่วมกับ and operator วิธีลัด
if 2 >= a <= 7 :
บรรทัดที่ 1 a, b = 5, 10
บรรทัดที่ 2 if a == 5 or b == 2:
บรรทัดที่ 3 print('ค่าในตัวแปร a คือ 5 หรือค่าในตัวแปร b มีค่าเป็น 2 เท่านั้น')
บรรทัดที่ 4 print('ทำคำสั่งอื่นต่อไป')
โอเปอเรเตอร์ or จะถูกนำมาใช้ร่วมกับการตรวจสอบเงื่อนไขภายใต้คำสั่ง if ก็ต่อเมื่อต้องการให้ผลลัพธ์ของเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง (True) ซึ่งเท่านี้ก็ส่งผลให้กลุ่มคำสั่งย่อยที่จะทำงาน เมื่อผลลัพธ์มีค่าเป็นจริง (True) เกิดการทำงาน ยกตัวอย่างตามบรรทัดที่ 2 ค่าในตัวแปร a คือ 5 และค่าของตัวแปร b ที่มีค่า 10 เมื่อนำค่าในตัวแปร a มาตรวจสอบเงื่อนไข จะมีสถานะเป็นจริง (True) ตามเงื่อนไขกำหนดไว้ในขณะที่การตรวจสอบเงื่อนไขที่ 2 ผลลัพธ์ที่ได้จากการตรวจสอบจะมีสถานะเป็นเท็จ (False) เนื่องจากค่าในตัวแปร b ไม่ตรงตามเงื่อนไขที่กำหนดไว้ เมื่อนำผลลัพธ์ของทั้ง 2 เงื่อนไขมาใช้กับโอเปอเรเตอร์ or ในบรรทัดที่ 2 นี้จะทำให้การตรวจสอบของคำสั่ง if นี้มีสถานะเป็นจริงหรือ True (เนื่องจากผลลัพธ์การตรวจสอบเงื่อนไขแรกสุดมีสถานะเป็นจริง) ซึ่งจะทำคำสั่งต่อไปในบรรทัดที่ 3 ที่อยู่ในพื้นที่กลุ่มคำสั่งย่อยของคำสั่ง if
บรรทัดที่ 1 a, b = 5, 10
บรรทัดที่ 2 if a >= 2 and a <= 7 or b == 10:
บรรทัดที่ 3 print('ค่าของตัวแปร a อยู่ในช่วง 2 ถึง 7')
บรรทัดที่ 4 print('หรือค่าในตัวแปร b มีค่าเท่ากับ 10')
บรรทัดที่ 5 print('ทำคำสั่งอื่นต่อไป')
การใช้คำสั่ง if สำหรับการตรวจสอบเงื่อนไขที่จำนวนของเงื่อนไขอาจจะมีมากกว่า 1 เงื่อนไข จึงมีความจำเป็นที่จะต้องผูกเงื่อนไขเข้ากับการใช้ and หรือ or Operator ทั้งนี้ต้องคำนึงถึงคุณสมบัติการทำงานของ operator ที่นำมาใช้สำหรับการผูกเงื่อนไขบางกรณีจำนวนเงื่อนไขมีมากกว่า 2 เงื่อนไขจำนวนของ operator ที่จะนำมาผูกเงื่อนไขก็จะมีมากขึ้นอีกทั้งยังสามารถใช้ Operator ทั้งสองชนิดผสมผสานในการตรวจสอบภายใต้คำสั่ง is เดี่ยวตามตัวอย่างการใช้คำสั่งบรรทัดที่ 2 จะเห็นได้ว่ามีจำนวนเงื่อนไขถึง 3 เงื่อนไขภายใต้การตรวจสอบของคำสั่ง If โดยที่โจทก์ถูกกำหนดให้เงื่อนไขที่ 1(a >= 2) และเงื่อนไขที่ 2 (a <= 7) จำเป็นต้องผ่านตามกำหนดหรือมีผลสถานะการตรวจสอบเงื่อนไขเป็นจริง (True) ทั้งคู่ความเหมาะสมต่อการใช้ Operator ก็ต้องเลือก and operator มาผูกเงื่อนไขที่ 1 และ 2 เข้าด้วยกันจึงจะถูกต้องตามความต้องการของโจทย์ในหัวข้อนี้สำหรับเงื่อนไขที่ 3 (b == 10 )ถ้าผลลัพธ์การตรวจสอบเงื่อนไขเป็นจริง(True) คำสั่ง if ก็จะสั่งให้ปุ่มคำสั่งย่อยในพื้นที่ที่สถานการณ์ตรวจสอบเป็นจริง(True) หรือตรงตามที่เงื่อนไขกำหนดให้ทำงานได้ทันที
เป็นที่น่าสังเกตสำหรับการทำงานของเงื่อนไขที่ 3 (b == 10 ) ที่มีความเป็นอิสระในการตรวจสอบของคำสั่ง if โดยไม่ต้องไปยุ่งกับเงื่อนไขอื่นๆ ในคำสั่ง if นี้ Combining Operator ควรจะใช้กับการทำงานของเงื่อนไขที่มีความเป็นอิสระแบบนี้ก็คือ or operator
พิมพ์คำสั่งต่อไปนี้สำหรับทดลองการใช้ Combining Operator ร่วมกับคำสั่ง if โดยเขียนคำสั่งลงในโมดูลของ python ( ที่จอภาพของ Python Shell เลือกเมนู file และเลือกเมนูย่อยที่ชื่อ New เพื่อกำหนดเปิดโมดูล python)
การทดลองในตัวอย่างนี้เป็นการใช้โอเปอเรเตอร์ and สำหรับตรวจสอบค่าในตัวแปร username และ password เพื่อเข้าสู่การใช้งานในระบบตามลำดับ โดยที่การล็อกอินเข้าสู่ระบบจะสำเร็จก็ต่อเมื่อชื่อผู้ใช้งานเป็น admin และรหัสผ่านเป็นคำว่า 1234
ลองใช้โอเปอเรเตอร์ or สำหรับตรวจค่าผลไม้ที่ต้องการป้อนเก็บไว้ในตัวแปร a (เป็นตัวแปร Sequence แบบ List เป็นจำนวน 4 ชนิด จากนั้นก็ทำการทดสอบความจำโดยการเลือกพิมพ์ชื่อผลไม้ที่เคยป้อนเก็บไว้ 1 ชนิดจากทั้งหมด 4 ชนิด
การทดลองสมมติให้ใช้อีเมล์ของผู้ใช้ login เข้าสู่ระบบโดยตรวจสอบรูปแบบของการเขียนอีเมล์จากค่าในตัวแปรเอ ด้วยการสังเกตเครื่องหมาย @ และ . ที่เป็นองค์ประกอบของชื่ออีเมล์ด้วยเงื่อนไขที่ 1 ('@' in a ) และเงื่อนไขที่ 2 ('.' in a ) เทคนิคการเขียนคำสั่งด้วยการใช้ in ซึ่งทำหน้าที่ค้นหาตัวอักษรเครื่องหมายหรือค่าที่ต้องการค้นหา ฯลฯ ผลลัพธ์จากการค้นหาด้วยคำสั่ง in ถ้าไม่เจอจะให้ค่าเท็จ (False) และให้ค่าที่เป็นจริง (True) เมื่อเจอสิ่งที่ต้องการค้นหาจากค่าในตัวแปรโจทย์ของการตรวจสอบรูปแบบของ e mail คือเงื่อนไขที่ 1 ('@' in a) และเงื่อนไขที่ 2 ('.' in a) จำเป็นต้องผูกกันด้วย operator an เพราะต้องการผลลัพธ์ที่มีสถานะจริง (True) ทั้งคู่เสมอในขณะเดียวกันโจทก์ก็ยังตั้งเงื่อนไขพิเศษสำหรับการ login เข้าสู่ระบบในเงื่อนไขที่ 3 (a == 'admin') ที่มีความเป็นอิสระจากเงื่อนไขอื่นในคำสั่ง if นี้นั่นคือ Operator ที่เหมาะสมสำหรับเงื่อนไขที่ 3 ก็คือ or
|