ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอนที่ 4 (Count to 10)

แปลตอนสี่สำหรับ ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ แปลสนุก ๆ ไว้อ่านเอง ตามไปอ่านตอนก่อนหน้าได้ที่นี่

แปลมาจาก 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

เรื่องที่เกี่ยวข้อง

Leave a Reply

You must be logged in to post a comment.