if
และ else
if
เป็นดังนี้
if เงื่อนไข:
คำสั่งที่จะให้ทำเมื่อเงื่อนไขเป็นจริง
else เงื่อนไข:
คำสั่งที่จะให้ทำเมื่อเงื่อนไขเป็นเท็จ
x = int(input('1+1 เท่ากับเท่าไหร่? : '))
if x==2:
print('ถูกต้องนะคร้าบ')
else:
print('ไม่น่าเชื่อว่าจะมีคนตอบผิด')
ผลที่ได้ก็คือเริ่มมาโปรแกรมจะถามคำถามว่า "1+1 เท่ากับเท่าไหร่?" แล้วก็ให้พิมพ์คำตอบลงไป
ถ้าพิมพ์ 2 ลงไป ก็คือตอบถูก จะมีข้อความ "ถูกต้องนะคร้าบ" ขึ้นมา
แต่ถ้าพิมพ์ตัวเลขค่าอื่นลงไป จะมีข้อความ "ไม่น่าเชื่อว่าจะมีคนตอบผิด" ขึ้นมา
จากตัวอย่าง สรุปโครงสร้างโดยรวมก็คือ
บรรทัดแรกพิมพ์คำว่า if
แล้วก็ตามด้วยเงื่อนไขจากนั้นก็ต้องพิมพ์โคลอน :
จากนั้นขึ้นบรรทัดใหม่แล้วก็เขียนคำสั่งที่ต้องการให้ทำเมื่อเงื่อนไขเป็นจริงไว้ โดยที่บรรทัดถัดมานั้นจะต้องมีการเคาะเว้นวรรค
ในส่วนคำสั่งที่จะทำเมื่อเงื่อนไขเป็นจริงนั้นจะมีกี่บรรทัดก็ได้ โดยสิ่งที่เป็นตัวบ่งบอกว่าคำสั่งส่วนไหนเป็นส่วนที่จะให้ทำเมื่อเงื่อนไขเป็นจริงก็คือ การร่น (indent)
ซึ่งหมายถึงการเคาะเครื่องหมายเว้นวรรค (spacebar) ให้ตัวหนังสืออยู่ห่างออกมาทางขวาเมื่อเทียบกับคำว่า if
และ else
การใช้การร่นเพื่อกำหนดขอบเขตของโครงสร้างแบบนี้เป็นเอกลักษณ์อย่างหนึ่งของภาษาไพธอน ในภาษาอื่นส่วนใหญ่เช่นภาษาซีจะใช้วงเล็บปีกกาคร่อม { }
แต่ถึงอย่างนั้นก็ตาม เมื่อมีการใช้ if
else
คนก็มักจะนิยมทำการร่นเพื่อให้ดูแล้วเข้าใจง่าย แม้ว่าจริงๆจะไม่จำเป็นก็ตาม
ในภาษาไพธอนการร่นกลายเป็นสิ่งบังคับตายตัว ข้อดีก็คือเราไม่จำเป็นต้องใส่วงเล็บปีกกาหรือใช้สัญลักษณ์ใดๆเพื่อบ่งบอกขอบเขต
การร่นนั้นจะร่นโดยการเคาะกี่ครั้งก็ได้ แต่โดยทั่วไปแล้วมักจะร่นไป ๔ ช่อง อีดิเตอร์ส่วนใหญ่ที่รอบรับการเขียนภาษาไพธอนเวลาที่เราพิมพ์โคลอน :
แล้วกด enter เพื่อขึ้นบรรทัดใหม่จะมีการร่นให้ ๔ ช่องโดยอัตโนมัติ
เมื่อจบคำสั่งที่ให้ทำเมื่อเงื่อนไขเป็นจริงแล้ว ขั้นตอนถัดมาก็คือใส่ส่วนของคำสั่งที่จะให้ทำเมื่อเงื่อนไขเป็นเท็จ ซึ่งเขียนได้โดยใช้ else
else
นั้นจะต้องยกเลิกการร่นให้อยู่ในตำแหน่งเดียวกับ if
จากนั้นก็ตามด้วยโคลอน :
แล้วก็ขึ้นบรรทัดใหม่พร้อมกับร่นแล้วก็เขียนคำสั่งที่ต้องการให้ทำเมื่อเงื่อนไขเป็นเท็จไว้ตรงนั้น
เมื่อจบโครงสร้างในส่วนนี้แล้วหากมีคำสั่งที่จะให้ทำต่อโดยไม่เกี่ยวกับว่าเงื่อนไขจะเป็นอย่างไร ก็แค่เขียนคำสั่งถัดไปโดยให้ไม่มีการร่นบรรทัด
ลองดูอีกตัวอย่างหนึ่ง เช่น โปรแกรมหาค่าสัมบูรณ์ของค่าที่ป้อนเข้าไป
x = float(input())
if(x<0):
print("ค่าติดลบ") x = -x
else:
print("ค่าไม่ติดลบ")
print('ค่าสัมบูณ์คือ', x)
if
และ else
คือไม่มีการร่น นั่นคือคำสั่ง print
ที่พิมพ์ค่า x ออกมาif
อาจใส่วงเล็บครอบก็ได้ ให้ผลไม่ต่างกันกับไม่ใส่ ดังตัวอย่างที่เห็นนี้ และจะเห็นว่าในกรณีมีวงเล็บจะไม่จำเป็นต้องเว้นวรรคหลัง if
if
แต่การใส่วงเล็บนั้นจำเป็นในหลายภาษา เช่นภาษาซี, ฟอร์แทรน, จาวาสคริปต์, php, ฯลฯif
เสมอ หากใครจะนำโค้ดไปเขียนตามโดยตัดวงเล็บออกไปก็ทำงานได้ไม่ต่างกันif
ได้เลยโดยไม่ต้องขึ้นบรรทัดใหม่ก็ได้ เช่นตัวอย่างแรกอาจเขียนใหม่เป็น
x = int(input('1+1 เท่ากับเท่าไหร่? : '))
if(x==2): print('ถูกต้องนะคร้าบ')
else: print('ไม่น่าเชื่อว่าจะมีคนตอบผิด')
else
แต่ใส่แค่ if
เฉยๆก็ได้ เช่น
x = int(input('โปรดระบุอายุผู้เข้าชม'))
if(x<18): print('คำเตือน: ผู้ชมอายุต่ำกว่า 18 ปีไม่แนะนำให้เข้าชม กรุณาใช้วิจารณญาณ')
โปรดระบุอายุผู้เข้าชม: 17
คำเตือน: ผู้ชมอายุต่ำกว่า 18 ปีไม่แนะนำให้เข้าชม กรุณาใช้วิจารณญาณ
18
ขึ้นไปจะไม่มีอะไรขึ้นมาif
นั้นอยู่ในรูปของตัวแปรหรือข้อมูลสองตัวเปรียบเทียบกันแล้วพิจารณาว่าสิ่ง ที่เขียนนั้นเป็นจริงหรือเท็จ การเขียนในลักษณะนี้เรียกว่าเป็น นิพจน์ทางตรรกศาสตร์True
หากเป็นเท็จจะให้ค่า False
==
สองตัวแบบนี้ แทนที่จะเขียนอันเดียวเป็น =
=
กับสองอัน ==
นั้นถือว่ามีความหมายต่างกัน ใช้ในคนละสถานการณ์=
ตัวเดียวจะเป็นการป้อนค่าให้กับตัวแปร ซึ่งในกรณีนี้จะไม่สามารถสลับสิ่งที่อยู่ทางซ้ายและขวาของ =
ได้==
จะหมายถึงการเปรียบเทียบว่าซ้ายกับขวาว่าเท่ากันหรือเปล่า ถ้าเท่ากันก็คืนค่า True
ถ้าไม่เท่ากันก็คืนค่า False
สิ่งที่อยู่สองข้างของ ==
นั้นสามารถสลับกันได้x < y |
หมายถึง | x น้อยกว่า y |
x <= y |
x น้อยกว่าหรือเท่ากับ y | |
x > y |
x มากกว่า y | |
x >= y |
x มากกว่าหรือเท่ากับ y | |
x == y |
x เท่ากับ y | |
x != y |
x ไม่เท่ากับ y |
3 > 3.1 # ได้ False
7.0 == 7 # ได้ True
3 > (3+0j) # ได้ TypeError: '>' not supported between instances of 'int' and 'complex'
3 == (3+0j) # ได้ True
3.1 > '3' # ได้ TypeError: '>' not supported between instances of 'float' and 'str'
3 == '3' # ได้ False
and
กับ or
and
กับ or
จะเป็นไปตามตารางนี้A | B | A and B | A or B |
---|---|---|---|
จริง | จริง | จริง | จริง |
จริง | เท็จ | เท็จ | จริง |
เท็จ | จริง | เท็จ | จริง |
เท็จ | เท็จ | เท็จ | เท็จ |
x = 10
x > 0 and x < 5 # ได้ False
x > 0 or x < 5 # ได้ True
x > 0 and x < 15 # ได้ True
x > 15 or x < 5 # ได้ False
not
เช่น
x > 0 and not x < 5 # ได้ True
not x > 0 or x < 5 # ได้ False
not (x > 0 and x < 5) # ได้ True
not x > 0 and x < 5 # ได้ False
if
else
ไม่เพียงพอ ต้องใช้ if
elif
else
khanaen = float(input('จงป้อนคะแนนของคุณ: '))
if(khanaen<50): print('คุณได้ F เสียใจด้วย พบกันใหม่ปีหน้า')
elif(khanaen<60): print('คุณได้ D')
elif(khanaen<70): print('คุณได้ C')
elif(khanaen<80): print('คุณได้ B')
elif(khanaen<=100): print('คุณได้ A ยินดีด้วย ทำได้ดีมาก')
else: print('คะแนนไม่ควรเกิน 100')
จงป้อนคะแนนของคุณ: 49
คุณได้ F เสียใจด้วย พบกันใหม่ปีหน้า
ครั้งที่ ๒
จงป้อนคะแนนของคุณ: 81
คุณได้ A ยินดีด้วย ทำได้ดีมาก
ครั้งที่ ๓
จงป้อนคะแนนของคุณ: 555
คะแนนไม่ควรเกิน 100
if
มี if
ซ้อนอยู่อีกอัน ซึ่งกรณีนี้คำสั่งที่อยู่ภายใต้เงื่อนไขของ if
ตัวในก็จะต้องมีการร่นไปอีกif(เงื่อนไข):
คำสั่ง
if(เงื่อนไข):
คำสั่ง
else:
คำสั่ง
คำสั่ง
else:
คำสั่ง
if(เงื่อนไข):
คำสั่ง
else:
คำสั่ง
คำสั่ง
lv_rao = int(input('คุณเลเวล: '))
if(lv_rao<1 or lv_rao>100):
print('เลเวลผู้เล่นต้องอยู่ระหว่าง 1 ถึง 100')
else:
lv_sattru = int(input('ศัตรูเลเวล: '))
if(lv_sattru<1 or lv_sattru>500):
print('เลเวลศัตรูต้องอยู่ระหว่าง 1 ถึง 500')
else:
if(lv_rao+50<=lv_sattru):
print('ศัตรูเมพเกินไป')
elif(lv_rao-50>=lv_sattru):
print('ศัตรูกากเกินไป')
else:
print('คุณมีโอกาสชนะ', 50+lv_rao-lv_sattru,'%')
คุณเลเวล: 101
เลเวลผู้เล่นต้องอยู่ระหว่าง 1 ถึง 100
คุณเลเวล: 50
ศัตรูเลเวล: 600
เลเวลศัตรูต้องอยู่ระหว่าง 1 ถึง 500
คุณเลเวล: 80
ศัตรูเลเวล: 200
ศัตรูเมพเกินไป
คุณเลเวล: 90
ศัตรูเลเวล: 110
คุณมีโอกาสชนะ 30 %
True
หรือ False
if
จะใส่ได้แต่ค่า True
หรือ False
ลงไปเท่านั้น แต่สามารถใส่ข้อมูลชนิดอื่นลงไปได้ทุกชนิด แล้วข้อมูลจะถูกแปลงเป็นชนิดบูลไปก่อนนำไปพิจารณาเป็นเงื่อนไข0
จะได้ False
นอกนั้นจะได้ True
ถ้าเป็นสายอักขระ ค่าว่างเปล่าจะได้ False
นอกนั้นจะได้ True
bool(1) # ได้ True
bool(0.1) # ได้ True
bool(0) # ได้ False
bool(0.0) # ได้ False
bool('0') # ได้ True
bool('') # ได้ False
if
if(10): print('จริง')
else: print('เท็จ')
จริง
if
elif
else
==
>
<
>=
<=
and
or
not
เป็นต้น ซึ่งให้ผลลัพธ์เป็นข้อมูลชนิดบูล True
หรือ False
if
elif
else
สามารถซ้อนกันกี่ชั้นก็ได้ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ