You are currently viewing Conditional Statements

Conditional Statements

Conditional Statements หรือภาษาไทยใช้คำว่า รูปแบบคำสั่งกำหนดเงื่อนไข อธิบายง่าย ๆ หน่อยก็จะเป็น การเขียนคำสั่งเพื่อให้ประมวลผลจากค่าตัวแปรที่ใส่เข้าไปว่า ถ้าใส่แบบนี้จะเป็นแบบนี้ ถ้าไม่ตรงเงื่อนไขที่กำหนดจะให้ไปทางไหน ซึ่งคำสั่งที่ใช้ในการกำหนดทางเลือกก็คือ if หรือ if – else หรือ if – elsif – else

Conditional Statements

เวลาเขียน Conditional Statements เราคิดง่าย ๆ ว่า “ถ้า <แบบนี้> จะให้ทำอะไร” คิดตรรกะง่าย ๆ ตรงไปตรงมา โดยทั่วไปจะมีรูปแบบการเขียนคำสั่งนี้จะเป็นอย่างนี้

if

คำสั่ง “ถ้า” เขียนในรูปแบบนี้

if <เงื่อนไข>:
   <คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข>

<เงื่อนไข> คือตัวกำหนดว่าจะใช้อะไรเป็นตัวตัดสินใจ ซึ่งจะต้องเป็น  Boolean หรือ ตรรกะ (ถูกหรือผิด ใช่หรือไม่ใช่)

<คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข> คือ statement หรือคำสั่งที่จะประมวลผลเมื่อตรงตามเงื่อนไข ซึ่งจะต้องมีการ “เยื้อง” (หรือ “ย่อหน้า”) หรือ indent หรือการจัดบล็อกให้กับคำสั่ง

ในการเขียนโค้ด python การสร้างชุดคำสั่งหนึ่ง ขอให้มองเป็นบล็อก โดยมีการเยื้อง (indent) เป็นตัวช่วยแสดงบล็อก จะช่วยให้เรามองลูปหรือคำสั่งตามเงื่อนไขได้ง่ายขึ้น ถ้าหากเป็นไปตามเงื่อนไข -คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข- จะเขียนให้อยู่ในรูปบล็อก โดยใช้การเยื้องเป็นตัวช่วย

อย่างเช่น เริ่มต้นกันง่าย ๆ คือ กำหนดเงื่อนไขว่า ถ้าคะแนนเกิน 60 จะผ่าน

  • เงื่อนไข คือ “คะแนนต้องเกิน 60”
  • ถ้าตรงตามเงื่อนไข จะ “ผ่าน”

ถ้าเขียนเป็น flowchart น่าจะทำให้มองภาพชัดเจนกว่า

ซึ่งเราถอดออกเป็นโคดของ python ได้ดังนี้

grade = input("ใส่คะแนน : ")
if int(grade)> 60:
  print('ผ่าน')

บรรทัดแรก grade = input(“ใส่คะแนน : “) คือการใช้ฟังก์ชัน input เพื่อรับข้อมูล (อ่านบทที่แล้วนะจ๊ะ)

บรรทัดที่ สอง if int(grade)> 60: การตั้งเงื่อนไขว่า คะแนนที่ได้ มากกว่า 60 หรือไม่

บรรทัดที่สาม  print(‘ผ่าน’) ถ้าเป็นจริงตามเงื่อนไข (คะแนนมากกว่า 60) ให้พิมพ์ ผ่าน

โปรดสังเกต คำสั่ง print(‘ผ่าน’) จะมีการเยื้อง หรือ ย่อหน้า (indent) เพื่อแสดงให้เห็นว่า คำสั่งนี้ เป็นบล็อกย่อยของบรรทัดด้านบน (คำสั่ง if)

Tip: คำสั่งบรรทัดที่ 2 และ 3 (ชุดคำสั่ง if) เราสามารถรวบเป็นบรรทัดเดียวได้ ไม่มีปัญหา แต่ในกรณีที่โค้ดมีความซับซ้อน เขียนคนละบรรทัด จะแสดงช่วยให้ไล่คำสั่งตามเงื่อนไขได้ง่ายกว่าในแบบที่เรียกว่า off-side rule

เมื่อเรา run คำสั่งชุดนี้ ถ้า คะแนนที่เราใส่ มากกว่า 60 จะได้ผลลัพธ์เป็น ผ่าน แต่ถ้า คะแนนที่เราใส่ไป ไม่เกิน 60 จะไม่มีอะไรเกิดขึ้น เพราะเราไม่ได้กำหนดว่า ถ้าไม่เป็นไปตามเงื่อนไขที่เรากำหนดจะให้ทำอะไรต่อ ซึ่ง สมมติว่า DataRevol จะใส่อีกคำสั่งหนึ่งปิดท้ายเพื่อให้รู้ว่า run คำสั่งเสร็จแล้ว เช่น

grade = input("ใส่คะแนน : ")
if int(grade)> 60:
  print('ผ่าน')
print ('DataRevol.com')

โปรดสังเกต print (‘DataRevol.com’) จะกลับมาอยู่ในบล็อกเดียวกับคำสั่ง if ไม่เยื้องหรือย่อหน้า เป็นคำสั่งที่มีศักดิ์เท่ากับคำสั่ง if หมายถึง ไม่ว่า เงื่อนไขใน if จะเป็นจริง หรือไม่เป็นจริง เมื่อดำเนินการตามเงื่อนไขเสร็จสิ้น จะดำเนินการตามคำสั่งนี้ต่อ คือแสดงผลลัพธ์ DataRevol.com เสมอ

ถ้าเราจัด print (‘DataRevol.com’) ไว้ในระดับเดียวกับ print(‘ผ่าน’) จะกลายเป็นว่า คำสั่งนี้ จะต้องอยู่ภายใต้เงื่อนไข if ถ้าไม่ตรงตามเงื่อนไขจะไม่มีการแสดงผล

นี่คือเหตุผลง่า ทำไมการวางเป็นบล็อก การใช้ย่อหน้า หรือว่าเยื้องจึงสำคัญ โปรดดูอีกตัวอย่างหนึ่ง

อีกตัวอย่างหนึ่ง

grade = input("ใส่คะแนน : ")
if int(grade)> 60:
  print('ผ่าน')
  print ('คุณได้ ', grade, ' คะแนน')
print ('DataRevol.com')

คำสั่งชุดนี้ ถ้า input ที่ใส่ ตรงตามเงื่อนไข คือ มากกว่า 60 คะแนน เช่นใส่คะแนน 82 ผลลัพธ์จะได้เป็น

ใส่คะแนน : 82
ผ่าน
คุณได้ 82 คะแนน
DataRevol.com

แต่ถ้า คะแนนที่ใส่ ไม่มากกว่า 60 คะแนน การทำงานจะข้ามคำสั่งทั้งหมดที่เขียนเยื้องเอาไว้ เช่นใส่ 40 จะได้ผลลัพธ์เป็น

DataRevol.com

ทั้งนี้เพราะ ชุดคำสั่ง

print('ผ่าน')
print ('คุณได้ ', grade, ' คะแนน')

อยู่ในบล็อก หรือ indent หรือ เยื้อง หรือย่อหน้า  เดียวกัน ซึ่งจะดำเนินการเมื่อเข้าเงื่อนไขเท่านั้น ส่วนบรรทัดสุดท้าย

print ('DataRevol.com')

ถ้าท่านมองเป็นบล็อก โดยใช้ เยื้อง หรือ indent เป็นบล็อก น่าจะช่วยให้มอง loop หรือขั้นตอนการทำงานได้ง่ายขึ้น ยกตัวอย่างเช่น ถ้าเราจะแสดงข้อความ เมื่อใส่คะแนนเข้าไป โดย ถ้าได้ไม่เกิน 60 คะแนน จะให้ใส่เพียงแค่ “DataRevol.com” แต่ถ้าได้เกิน 60 คะแนนให้แสดงผลลัพธ์ ผ่าน คุณได้ xx คะแนน

และถ้าคะแนนนั้นเกิน 80 คะแนน ให้เพิ่มข้อความ เก่งจัง

ก็จะได้คำสั่งแบบนี้

grade = input("ใส่คะแนน : ")
if int(grade)> 60:
  print('ผ่าน')
  print ('คุณได้ ', grade, ' คะแนน')
  if int(grade)> 80:
    print('เก่งจัง')
print ('DataRevol.com')

ดูที่บล็อกแรก จะเป็น

if int(grade)> 60:
กับ
print('DataRevol.com')

อยู่แนวเดียวกัน หมายความว่า ไม่ว่า คะแนนที่ใส่ไปนี้จะเท่าใดก็ตาม True หรือ False ก็จะแสดงข้อความ DataRevol.com ทุกครั้ง

บล็อกที่ 2 จะอยู่ภายใต้เงื่อนไขจากบล็อกแรก ถ้าคะแนนที่ใส่มากกว่า 60 คะแนน ให้ดำเนินการตามคำสั่ง

print('ผ่าน') 
print('คุณได้ xx คะแนน')
if int(grade)>80:

นั่นคือ จะพิมพ์คำว่า ผ่าน และ คุณได้ xx คะแนน โดยมีเงื่อนไขตรวจสอบว่า คะแนนนั้น มากกว่า 80 คะแนนหรือเปล่า

บล็อกที่ 3 จะเป็นบล็อกภายใต้เงื่อนไข if int(grade)>80: จากบล็อก 2 ถ้าเข้าเงื่อนไข จะดำเนินการ

print('เก่งจัง')

คือการตรวจสอบว่า ถ้าคะแนนนั้น เกิน 80 คะแนน ให้เพิ่มคำว่า เก่งจัง แต่ถ้าไม่เข้าเงื่อนไข จะออกจากเงื่อนไขกลับไปสู่ขั้นตอนต่อไปเลย

if-else

จากข้างต้น ถ้า ตรงตามเงื่อนไข ทำอะไร แต่ไม่มีบอกว่า ถ้าไม่ตรงเงื่อนไข จะให้ทำอะไรหรือเปล่า เข้าไปอีกว่า ไม่ตรง จะให้ทำอะไร เราก็จะใช้ if-else รูปแบบคำสั่งคือ

if <เงื่อนไข>:
     <คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข>
else:
     <คำสั่งที่ดำเนินการเมื่อไม่เข้าเงื่อนไข>

ซึ่งเราต้องวางให้ if และ else ให้อยู่ในระดับเดียวกัน อย่างเช่น ถ้าเราจะให้ตรวจสอบว่า คะแนนมากกว่า 60 หรือไม่ ถ้าเกิน 60 ผ่าน ไม่เกิน 60 ไม่ผ่าน จะได้เป็นแบบนี้

grade = input("ใส่คะแนน : ")
if int(grade)> 60:
  print('ผ่าน')
else:
  print('ไม่ผ่าน')

If-elif-else

ในขณะที่ด้านบน จะใส่เงื่อนไขเดียวไปเรื่อย ๆ ถ้า เงื่อนไข มีมากกว่า 1 เราใช้ if – elif จะคล้าย if- else แต่ในขณะที่ else คือการบอกว่า ถ้าไม่เข้าเงื่อนไขใน if จะให้ทำอะไร elif จะเป็นการกำหนดเงื่อนไขใหม่ไปเรื่อย ๆ If else ladder

if <เงื่อนไข>:
     <คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข>
elif <เงื่อนไข 2>:
     <คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข 2>
elif <เงื่อนไข 3>:
     <คำสั่งที่ดำเนินการเมื่อเข้าตามเงื่อนไข 3>
else:
    <คำสั่งที่ดำเนินการเมื่อไม่เข้าเงื่อนไข>

ตัวอย่างเช่น เราจะตั้งเงื่อนไขว่า ถ้าได้คะแนนมากกว่า 80 คะแนน ให้เกรด A ถ้า ได้มากกว่า 71 – 80 คะแนน ให้เกรด B 61 – 70 ให้เกรด C และ ถ้าไม่เกิน 60 คะแนน จะได้ D

คำสั่งจะออกมาแบบนี้

grade = input("ใส่คะแนน : ")
if int(grade) > 80:
  print("A")
elif int(grade) > 70:
  print("B")
elif int(grade) > 60:
  print("C")
else:
  print("D")
Conditional Statements

นี่คือการเขียนคำสั่ง ให้ทำตามเงื่อนไข หรือ Conditional Statements

Python

Learn Python – เรียนรู้ไพธอนไปด้วยกัน

Divider

บันทึกส่วนตัว เกี่ยวกับการเรียนรู้ภาษาไพธอน