ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอนที่ 4 (Count to 10)
แปลตอนสี่สำหรับ ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ แปลสนุก ๆ ไว้อ่านเอง ตามไปอ่านตอนก่อนหน้าได้ที่นี่
- ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอน 1 Intro
- ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอน 2 Hello, World
- ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอน 3 Who Goes There?
แปลมาจาก Non-Programmer's Tutorial for Python
การทำซ้ำแบบ While
เอาละนี่เป็นคำสั่งควบคุมโครงสร้างตัวแรกนะ ก่อนหน้านี้คำสั่งต่าง ๆ จะทำงานจากบรรทัดแรก และทำงานจากบนลงล่างสู่บรรทัดถัดไป เมื่อทำการันคำสั่งควบคุมจะเปลี่ยนลำดับการทำงานของคำสั่ง ซึ่งจะทำงานหรือ ตัดสินใจ และนี่ตัวอย่างของการใช้ คำสั่งควบคุม
a = 0 while a < 10: a = a + 1 print a
และนี่คือ ผลลัพธ์ที่น่าตื่นตาตื่นใจ
1
2
3
4
5
6
7
8
9
10
ถ้าคุณกำลังคิดว่า คอมพิวเตอร์ของคุณควรทำอะไรได้มากกว่าเครื่องคิดเลขกิกก๊อก
ดังนั้นสิ่งที่โปรแกรมนี้ทำได้คืออะไรล่ะ ก่อนอื่นเลย ไปดูที่บรรทัดแรก a = 0 คือการใส่ค่า 0 ลงในตัวแปร a ต่อมาดูคำสั่ง while a<10: เมื่อคอมพิวเตอร์ เจอคำสั่งนี้ จำทำการตรวจสอบ ว่า a ยังมีค่าน้อยกว่า 10 หรือป่าว ในครั้งแรกที่คอมพิวเตอร์เจอคำสั่งนี้ค่าของ a เป็น 0 ซึ่ง น้อยกว่า 10 ในทำนองเดียวกัน ไม่ว่า ค่า a จะเป็นอะไรที่น้อยกว่า 10 คอมพิวเตอร์ก็ยังทำตามคำสั่งที่เยื้องเข้าไป (tabbed in) ทั้งหมด และในที่สุดค่า a จะมีค่า เท่ากับสิบ จากการบวกเพิ่ม ในแต่ละรอบ และเมื่อ a == 10 จะพบว่า a<10 ไม่จริงอีกต่อไป คอมพิวเตอร์จะไม่ทำตามคำสั่งที่เยื้องเข้าไป อีกต่อไป
ระวังต้อง พิมพ์เครื่องหมาย ":" เมื่อสิ้นสุดคำสั่ง while
และนี่คืออีกตัวอย่างที่ใช้คำสั่ง "while"
a = 1 s = 0 print 'Enter Numbers to add to the sum.' print 'Enter 0 to quit.' while a != 0: print 'Current Sum:', s a = input('Number? ') s = s + a print 'Total Sum =', s
Enter Numbers to add to the sum.
Enter 0 to quit.
Current Sum: 0
Number? 200 Current Sum: 200
Number? -15.25
Current Sum: 184.75
Number? -151.85
Current Sum: 32.9
Number? 10.00
Current Sum: 42.9
Number? 0
Total Sum = 42.9
สังเกตว่า คำสั่ง print 'Total Sum =', s จะถูกทำงานแค่ครั้งเดียวตอนจบเท่านั้น คำสั่ง while จะมีผลกับ บันทัดที่เยื้องเข้าไป ด้วย ช่องว่าง (whitespace) เครื่องหมาย != มีความหมายว่า ไม่เท่ากับ ดังนั้น คำสั่ง while a!= 0: จึงหมายความว่า ทำไปเรื่อย ๆ ตราบใดที่ a ยังไม่เป็นศูนย์
การวนซ้ำแบบไม่มีวันหยุด
ตอนนี้เรามีคำสั่งควบคุม while มันจะเป็นไปได้หรือป่าวถ้าจะเขียนโปรแกรมให้ทำงานตลอดไป
มันง่ายมากที่จะทำเช่นนั้น ลองดูตัวอย่างต่อไปนี้
while 1 == 1: print "Help, I'm stuck in a loop."
เครื่องหมาย "==" หมายถึงการเปรียบเทียบว่าระหว่างสองข้างของเครื่องหมายว่าเท่ากันไหม คล้ายกับ เครื่องหมายน้อยกว่า "<" (โดยคุณจะได้ทราบเกี่ยวกับการเปรียบเทีบบทั้งหมดได้ในตอนต่อไป)
โปรแกรมนี้จะแสดงผลลัพธ์ Help, I'm stuck in a loop. ไปเรื่อย ๆ จนกว่าจะคอมพิวเตอร์จะเกิดปัญหา หรือคุณสั่งหยุด เนื่องจาก 1 เท่ากับ 1 ตลอดเวลา ทางที่จะหยุดได้ คือ กดแป้นพิมพ์ Ctrl + c ซึ่งมันจะเป็นการฆ่าโปรแกรม (บางครั้งคุณต้องกด enter หลังจากกด Ctrl + c)
ตัวอย่าง
Fibonacci.py
# This program calculates the Fibonacci sequence a = 0 b = 1 count = 0 max_count = 20 while count < max_count: count = count + 1 # we need to keep track of a since we change it old_a = a old_b = b a = old_b b = old_a + old_b # Notice that the , at the end of a print statement keeps it # from switching to a new line print old_a,
ผลลัพธ์
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
คำแนะนำ ผลลัพธ์ที่เกิดขึ้นอยู่ในบรรทัดเดียวกันเนื่องจาก ใช้ comma (,) ในตอนจบของคำสั่ง print
Password.py
# Waits until a password has been entered. Use Control-C to break out without # the password #Note that this must not be the password so that the # while loop runs at least once. password = "foobar" # note that != means not equal while password != "unicorn": password = raw_input("Password: ") print "Welcome in"
และนี่คือตัวอย่างการทำงาน
Password: auo
Password: y22
Password: password
Password: open sesame
Password: unicorn
Welcome in
แบบฝึกหัด
ลองเขียนโปรแกรมที่ถาม ชื่อผู้ใช้ และ รหัสผ่าน แล้วเมื่อพิมพ์คำว่า "lock" โปรแกรมจะขอให้พิมพ์ ชื่อผู้ใช้ และ รหัสผ่าน เพื่อ unlock
