ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอนที่ 3 (Who Goes There)
แปลตอนสามสำหรับ ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตามไปอ่านตอนก่อนหน้าได้ที่นี่
แปลมาจาก Non-Programmer's Tutorial for Python
การรับค่าและตัวแปร
ถึงตอนนี้ ผมรู้สึกว่าน่าจะถึงเวลาสำหรับโปรแกรมที่มีความซับซ้อนขึ้นบ้างแล้วนะ ดังตัวอย่างนี้
เมื่อผม รันโปรแกรมนี้ หน้าจอของผม ควรจะแสดงผลว่า
Halt!
Who Goes there? Josh
You may pass, Josh
สังเกตได้ว่าเมื่อคุณรันโปรแกรม หน้าจอของคุณ ต่างไปจากเดิมเนื่องจาก คำสั่ง raw_input() เมื่อคุณรันโปรแกรมคุณน่าจะสามารถสังเกตเห็นได้ (คุณรันโปรแกรมเองดูแล้วใช่ป่าวเนี่ย) คุณก็แค่ทดลองพิมพ์ชื่อของคุณแล้วกด enter แล้วโปรแกรมจะพิมพ์ข้อความพร้อมกับชื่อของคุณออกมา ตัวอย่างนี้เป็นตัวอย่างของการรับข้อมูลเข้าไปเก็บในตัวแปรจากหน้าจอ โปรแกรมจะรอจนกระทั่งผู้ใช้กรอกข้อมูลเสร้๗จึงจะทำงานที่เหลือต่อไป
อย่างไรก็ตาม ค่าที่เก็บได้จากผู้ใช้ จะเสียเปล่า ถ้าไม่มีที่ซึ่งเก็บข้อมูลนั้นไว้ และนี่เองเป็นสิ่งที่ตัวเปรถูกนำมาใช้ ในตัวอย่างก่อนนั้น user_input เป็นตัวแปร ตัวแปรมันก็เหมือนกล่องนั่นแหละที่ใช้ใส่ชิ้นส่วนของข้อมูลที่ได้รับ และโปรแกรมต่อไปนี้คือตัวอย่างของตัวแปร
a = 123.4 b23 = 'Spam' first_name = "Bill" b = 432 c = a + b print "a + b is",c print "first_name is",first_name print "Sorted Parts, After Midnight or",b23
และนี่คือผลลัพธ์
a + b is 555.4
first_name is Bill
Sorted Parts, After Midnight or Spam
ตัวแปรทำหน้าที่เก็บข้อมูล จาในตัวอย่างนี้มี a, b23, first_name, b, c เป็นตัวแปร ซึ่งตัวแปรอย่างง่ายสุดก็คือ ตัวสายอักษร (Strings) และ ตัวเลข (Numbers)
สายอักษร จะเป็นชุดของตัวอักขระ ทั้งตัวอักษรตัวเลขและตัวอักขระอี่น ๆ ในตัวอย่างนี้ b23 และ first_name เป็นตัวแปรที่เก็บสายอักษระ Spam และ Bill ส่วน "a + b is " และ "first_name"นั้น เป็นสายอักขระในโปรแกรม ซึ่งจะเป็นชุดของตัวอักขระที่อยู่ระหว่างเครื่องหมาย " หรือ '
ส่วนตัวแปรอีกชนิดคือ ตัวเลข (Numbers) จำไว้ว่า ตัวแปรจะถูกใช้สำหรับเก็บค่า โดยตัวเลขจะต้องไม่มีเครื่องหมายคำพูด ", ' แต่ถ้าคุณต้องการจะเป็นในรูปสายอักขระคุณต้องใช้เครื่องหมายคำพูดด้วยเสมอ
value1 == Pim
value2 == "Pim"ตัวอย่างข้างต้นนี้ มองดูคล้ายกันนะ แต่ต่างกัน ตรง Pim ตัวแรกเป็นตัวแปร ไพธอนจะทำการเปรียบเทียบค่าใน value1 * กับ *Pim ส่วน "Pim" ในตัวที่สอง เป็นสายอักขระซึ่งไพธแนจะเปรียบเทียบว่าค่าใน value2 เก็บสายอักขระ "Pim" ไว้หรือไม่
การกำหนดค่า
จำได้ป่าว เราเรียกกล่องสำหรับใส่ค่า ในโปรแกรมว่า ตัวแปร และข้อมูลทั้งหลายจะสามารถถูกเก็บลงไปในตัวแกรมนี้ เช่น คอมพิวเตอร์พบกับคำว่า first_name = "Bill" ก็จะทำการใส่ข้อมูล "Bill" ลงไปในตัวแปร (กล่อง) ที่มีชื่อว่า first_name ส่วนต่อมาเมื่อคอมพิวเตอร์พบกับคำสั่ง c = a + b จะทำการอ่าน และเก็บค่าผลบวกระหว่าง a + b ซึ่งก็คือ 123.4 + 432 และเก็บค่า 555.4 ในตัวแปร c ซึ่งทางขวามือของเครื่องหมายเท่ากับ ในคำสั่งนั้น (a + b) จะถูก ทำการคำนวน และส่งผลลัพธ์ออกมาเก็บในตัวแปรทางซ้ายของเครื่องหมายเท่ากับ (c) ซึ่งส่วนการเก็บค่านี้เราจะเรียกว่า การกำหนดค่า (assignment) และคุณไม่ควรสับสนระหว่างเครื่องหมากยการกำหนดค่า (=) และเครื่องหมายเปรียบเทียบความเท่ากัน ว่าเท่ากันหรือป่าว (==) ซึ่งจะทำการแนะนำกันในตอนต่อไป
และต่อไปนี้คือตัวอย่างของการใช้ตัวแปร
a = 1 print a a = a + 1 print a a = a * 2 print a
และนี่คือผลลัพธ์
1
2
4
สังเกตได้ว่า ถ้ามีตัวแปรตัวเดียวกัน ทั้งสองข้างของเครื่องหมายเท่ากับ คอมพิวเตอร์จะทำการอ่านค่าเดิม จากทางขวามาคำนวน และเก็บค่าที่คำนวนเสร็จแล้ว กลับในตัวแปรเดิม
ต่อไปนี้เป็นอีกหนึ่งโปรแกรม ก่อนที่ผมจะจบตอนนี้
number = input("Type in a number: ") text = raw_input("Type in a string: ") print "number =", number print "number is a", type(number) print "number * 2 =", number * 2 print "text =", text print "text is a", type(text) print "text * 2 =", text * 2
และนี่คือผลลัพธ์
Type in a Number: 12.34
Type in a String: Hello
number = 12.34
number is a <type 'float'>
number * 2 = 24.68
text = Hello
text is a <type 'str'>
text * 2 = HelloHello
จงจำไว้ว่า การรับข้อมูลตัวเลขเข้ามาเราจะใช้คำสั่ง input() ส่วนการรับข้อมูลสายอักขระเข้ามา เราจะใช้คำสั่ง raw_input() ซึ่งคำสั่ง raw_input() จะส่งค่า สายอักขระออกมา ในขณะที่คำสั่ง input() จะส่งค่าออกมาเป็นตัวเลข ถ้าคุณต้องการให้ผู้ใช้ส่งข้อมูลเป็นตัวเลขให้ใช้คำสั่ง input() แต่ถ้าไม่จงใช้คำสั่ง raw_input()
ในส่วนที่สองของตัวอย่างที่ผ่านมานี้ เราได้ใช้คำสั่ง type() เพื่อถามว่า ตัวแปรนี้ เป็นตัวแปรอะไร ซึ่งตัวแปรประเภทจำนวนนั้น อาจจะเป็ฯได้ทั้ง จำนวนเต็ม ทศนิยม (int,float) ส่วนตัวแปรสายอักขระ จะมีชนิดเป็น str จำนวน สามารถนำไปดำเนินการกับฟังก์ชั่น ในทางคณิตศาสตร์ได้ แต่ สายอัขระไม่ได้ แต่ในไพธอน ถ้ามีการคูณจำนวนเต็มเข้ากับสายอัขระ จะเป็นการเพิ่มสายอักขระนั้นอีกกี่ครั้งแทน เช่น text * 2 = HelloHello
การดำเนินการกับสายอักขระนั้นต่างกับการดำเนินการกับตัวเลขดังตัวอย่างที่จะแสดงดังต่อไปนี้
>>> "This" + " " + "is" + " joined."
'This is joined.'
>>> "Ha, " * 5
'Ha, Ha, Ha, Ha, Ha, '
>>> "Ha, " * 5 + "ha!"
'Ha, Ha, Ha, Ha, Ha, ha!'
>>>
และนี่คือ ตารางแสดง ตัวดำเนินการกับสายอักขระบางตัว
| ตัวดำเนินการ | สัญลักษณ์ | ตัวอย่าง |
|---|---|---|
| ทำซ้ำ | * | "i" * 5 == "iiiii" |
| ต่อสายอักขระ | + | "Hello" + "World!"=="Hello, World!" |
ตัวอย่าง
Rate_times.py
# This program calculates rate and distance problems print "Input a rate and a distance" rate = input("Rate: ") distance = input("Distance: ") print "Time: ", (distance / rate)
และนี่คือตัวอย่างการรัน
Input a rate and a distance
Rate: 5
Distance: 10
Time: 2Input a rate and a distance
Rate: 3.52
Distance: 45.6
Time: 12.9545454545
Area.py
# This program calculates the perimeter and area of a rectangle print "Calculate information about a rectangle" length = input("Length: ") width = input("Width: ") print "Area", length * width print "Perimeter", 2 * length + 2 * width
และนี่คือตัวอย่างการรัน
Fahrenheit temperature: 32
0.0Fahrenheit temperature: -40
-40.0Fahrenheit temperature: 212
100.0Fahrenheit temperature: 98.6
37.0
แบบฝึกหัด
จงเขียนโปรแกรม ที่ใช้ตัวแปรรับค่าสายอักขระสองตัว และตัวแปรที่ใช้รับค่าตัวเลข สองตัวจาผู้ใช้ มาทำการเชื่อมสายอักขระ (นำสายอักขระมาต่อกัน) และแสดงผลบนหน้าจอ แล้วทำการคุณจำนวนสองจำนวน ในบรรทัดใหม่

[...] ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอน 3 Who Go... [...]