ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอนที่ 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: 2

Input 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.0

Fahrenheit temperature: -40
-40.0

Fahrenheit temperature: 212
100.0

Fahrenheit temperature: 98.6
37.0

แบบฝึกหัด

จงเขียนโปรแกรม ที่ใช้ตัวแปรรับค่าสายอักขระสองตัว และตัวแปรที่ใช้รับค่าตัวเลข สองตัวจาผู้ใช้ มาทำการเชื่อมสายอักขระ (นำสายอักขระมาต่อกัน) และแสดงผลบนหน้าจอ แล้วทำการคุณจำนวนสองจำนวน ในบรรทัดใหม่

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

One Response to “ไพธอนฉบับไม่ใช่โปรแกรมเมอร์ ตอนที่ 3 (Who Goes There)”

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

Leave a Reply

You must be logged in to post a comment.