เนื้อหาในบทนี้กล่าวถึงการใช้งานแบบโต้ตอบกับไพทอน เน้นเรื่องการคำนวณเบื้องต้นซึ่งผู้ใช้มือใหม่สามารถลองปฏิบัติได้โดยยังไม่ต้องเรียนรู้มโนทัศน์ของวัตถุหรือโครงสร้างข้อมูลที่ไพทอนมีอยู่
การสั่งให้โปรแกรมไพทอนทำงานจาก command window หรือ terminal ปกติให้พิมพ์ข้อความว่า python แล้วกดแป้น Enter กรณีที่คอมพิวเตอร์ได้ติดตั้งไพทอนโปรแกรมทั้งเวอร์ชัน 2 และ 3 เราต้องเลือกพิมพ์ข้อความ python2 หรือ python3 อย่างใดอย่างหนึ่งให้ตรงเวอร์ชันที่ต้องการใช้งาน
สมมุติว่าเราได้สั่งให้โปรแกรมไพทอนแบบมาตรฐาน (standard Python interpreter) ทำงานแล้ว ภายในหน้าต่างของโปรแกรมจะมี prompt เป็นเครื่องหมาย >>> เราสามารถพิมพ์คำสั่งลงไปหลังเครื่องหมายนั้นแล้วกดแป้น Enter ให้ไพทอนประมวลผลไปตามลำดับทีละคำสั่ง
ตามธรรมเนียมปฏิบัติในการเรียนเขียนโปรแกรม เราเริ่มการเขียนไพทอนสคริปต์เป็นข้อความ print("Hello world!") ไว้หลังเครื่องหมาย prompt ซึ่งปกติเป็นเครื่องหมาย greater than สามตัว
>>> print("Hello world!")
แล้วกดปุ่ม Enter
ผลที่ได้รับคือข้อความ
Hello world!
(ข้อความภาษาไทยก็ใช้ใด้)
>>> print("Hello world!")
ถ้าเราบันทึกโปรแกรมนี้ไว้ในไฟล์ชื่อ hello.py เราสามารถ run โปรแกรมนั้นได้โดย พิมพ์ข้อความ python hello.py แล้วกด Enter ในหน้าต่าง Command prompt (Windows) หรือ Terminal (Linux, Unix, Mac)
command_prompt> python hello.py
Hello world!
ในระบบ UNIX, Linux, Mac เรามักจะเขียนรหัส directive
#!/usr/bin/env python
ไว้ที่บรรทัดแรกของไฟล์โปรแกรมไพทอนเพื่อบอกให้ระบบปฏิบัติการรู้ว่าต้องการใช้โปรแกรมชื่อ python ทำการ execute ไฟล์นั้น
\#!/usr/bin/env python
print("Hello world!")รหัสอักขระมาตรฐานที่ใช้ในไฟล์ปกติคือ ASCII ถ้าเราใช้อักขระไทย ต้องประกาศให้ python interpreter รู้ด้วยข้อความ
# -- coding: UTF-8 --
ดังตัวอย่างข้างล่าง
\#!/usr/bin/env python
\# -*- coding: UTF-8 -*-
print("Hello ประเทศไทย!")และเมื่อจัดให้ไฟล์มีคุณสมบัติ executable แล้วเราจะสามารถ run โปรแกรมนั้นได้โดยป้อนคำสั่งที่เป็นเพียงชื่อไฟล์
$ hello.py
Hello world app in java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Hello world app in C
#include<stdio.h>
int main(int argc, char** argv) {
printf("Hello World");
}
ในบทเรียนชุดนี้ซึ่งเขียนขึ้นในรูปแบบของ iPython notebook มี IPython interpreter ทำหน้าที่ประมวลผล เครื่องหมาย In [n]: เป็นส่วนของคำสั่งหรือ input ที่ป้อนให้ไพทอนประมวลผล และ Out [n]: เป็นข้อความตอบกลับของคำสั่งก่อนหน้า ตัวเลขในวงเล็บ(n) ทำหน้าที่เป็นดัชนีอ้างอิงและบอกลำดับการประมวลผลที่ผ่านไปแล้ว
หมายเหตุ ต่อไปนี้จะขอละเว้นไม่แสดงเครื่องหมาย >>> ของไพทอน prompt
โมดูลคือส่วนต่อเติมให้กับสภาวะปกติเพื่อช่วยให้ไพทอนมีความสามารถมากขึ้น ไพทอนมีโมดูลที่มุ่งหมายให้ใช้งานทางด้านต่างๆ มากมาย ทั่งส่วนที่ติดมาพร้อมกับโปรแกรมไพทอน และส่วนที่ผู้ใช้ต้องติดตั้งเพิ่มเติมเอง เป็นหน้าที่ของผู้ใช้ที่จะต้องเรียนรู้ว่าควรเรียกโมดูลอะไรเข้ามาใช้งานเมื่อใด คำสั่งเพื่อนำโมดูลเข้าใช้งานคือ import
ในการคำนวณเราใช้ object เหล่านี้
| Numeric types | Examples |
| int | int('23') |
| float | float(12.34) |
| complex | complex(2, 3) |
ลองคำนวณปัญหาคณิตศาสตร์ง่ายๆ ดังนี้
3.1 + 4*5 # This is a comment
ลองคำนวณค่า 3 หารด้วย 2 ดังนี้
3 / 2 # Integer division (in Python3, return value = 1.5)
หลายคนคงแปลกใจ เพราะผลลัพธ์ควรเป็นเลขทศนิยม 1.5 (กรณีนี้ไพทอนเวอร์ชัน3จะคำนวณได้ 1.5) แต่ไพทอนเวอร์ชัน2คำนวณได้ผลเป็นเลขจำนวนเต็ม (integer) เพราะยึดหลักการว่าเลข 3 และ 2 ที่ใช้ล้วนเป็นเลขจำนวนเต็ม ถ้าเราทดลองใหม่โดยใช้ตัวเลขทศนิยมจะได้คำตอบที่ต้องการ ดังนี้
3.0 / 2 # Floating point division
การบวก ลบ คูณ หาร เราใช้เครื่องหมาย + - * / ตามลำดับ สำหรับการยกกำลังเราใช้เครื่องหมายดอกจันคู่ ดังตัวอย่างต่อไปนี้
หมายเหตุ ไพทอนใช้เครื่องหมาย ^ ในเรื่องอื่นที่ไม่ใช่การยกกำลัง2 ** 3 # Exponentiation
การหารแบบพิเศษโดยใช้เครื่องหมาย // เป็นการหารแล้วปัดเศษทศนิยมทิ้ง แสดงผลเป็นเลขทศนิยมศูนย์ หรือเลขจำนวนเต็ม
11.99 // 2 # Forced integer division
การคำนวณกรณฑ์ หรือราก (root) เช่น รากที่สอง รากที่สาม ฯลฯ ให้ใช้วิธีการยกกำลัง และต้องระวังเรื่องตัวเลขที่อาจถูกปัดเศษทิ้งทำให้ผลการคำนวณผิดพลาด ต่อไปเมื่อเรารู้วิธีนำเข้าโมดูล math เราจะมีวิธีคำนวณที่ดีกว่านี้
125 ** (1/3.0) # Exponentiation with fraction number
การนำผลลัพธ์ของการคำนวณครั้งหลังสุดมาใช้งานในขั้นตอนต่อไป ให้ใช้เครื่องหมาย underscore
_ + 12 # Underscore represents the last returned value
การหารเพื่อเอาเศษเหลือเป็นผลลัพธ์
8 % 3 # 8 modulo 3
ถ้าต้องการค่า absolute ให้ใช้ฟังก์ชัน abs() คำนวณ
abs(-12)
ใช้ j แทนเลขจินตภาพ (imaginary number, กรณฑ์ที่สองของค่า -1)
(1 + 3j) + (3 - 5j) # Addition, parentheses are optional
_.real, _.imag # Show real and imaginary parts of previous result
(1 + 2j) / (3 - 4j) # Division, parentheses are mandatory
ถ้ามีรูปสามเหลี่ยมมุมฉากที่ด้านประกอบมุมฉากยาว 3 และ 4 สามารถหาความยาวด้านตรงข้ามมุมฉากได้ดังนี้
abs(3 + 4j) # Absolute value of a complex number
complex(4, 5) # Create complex number with 'complex' function
_.conjugate() # Conjugate of the resulting complex number
การคำนวณ + - * / ของ complex number สามารถทำได้โดยไม่ต้องอาศัยฟังก์ชันใดๆ จากโมดูลที่ต้องนำเข้า
การประมวลผลเกี่ยวกับ set เป็นความสามารถที่ไพทอนทำได้ดีโดยไม่ต้องมีการนำเข้าโมดูลใดๆ และมีคำสั่งที่ใช้งานง่าย ดังจะเห็นได้จากตัวอย่างต่อไปนี้
การสร้างเซ็ตทำโดยใช้ฟังก์ชัน set(list) และใส่ข้อมูลสมาชิกเซ็ตอยู่ภายในวงเล็บใหญ่ (เรียกว่า list) โดยใช้เครื่องหมายจุลภาคคั่นระหว่างสมาชิกแต่ละตัว
set1 = set([1, 2, 3, 4, "text"]) # Create a set object 'set1'
การสร้างเซ็ตทำโดยใช้วงเล็บปีกกา
set2 = {2, 4, 7, 18} # Create 'set2' by using {items}
len(set2) # Number of items in 'set2'
set1 $\cup$ set2
set1.union(set2) # Union of the two sets
Difference between set1 and set1.
set1 - set2 # Difference of set1 by set2
set1 $\cap$ set2
set1.intersection(set2) # Intersection of the two sets
เซ็ตที่เราสร้างขึ้น (เช่น set1, set2 ในตัวอย่างข้างบน) สามารถปฏิบัติการได้ด้วย method ต่อไปนี้:- add, clear, copy, difference, difference_update, discard, intersection, intersection_update, isdisjoint, issubset, issuperset, pop, remove, symmetric_difference, symmetric_difference_update, union, update
คำสั่งประเภท Boolean คือคำสั่งที่ประมวลผลแล้วได้ค่าเป็น True หรือ False มีที่ใช้ทั่วไป มีบทบาทสำคัญในการเขียนโปรแกรมเรื่องการทดสอบและตัดสินใจ เช่น if-else; while
| Boolean objects |
| True |
| False |
| These are considered False |
| False |
| zero of any numeric type, for example, 0, 0.0, 0j |
| any empty sequence, for example, '', (), [] |
| any empty mapping, for example, {} |
| More: see https://docs.python.org/3/library/stdtypes.html#truth-value-testing |
| Others than these: considered True |
| Operator | Meaning |
| < | strictly less than |
| <= | less than or equal |
| > | strictly greater than |
| >= | greater than or equal |
| == | equal |
| != | not equal |
| not | negation |
| is | object identity |
| is not | negated object identity |
3 > 4 # Greater than
True or False # Or operator
True and True # And operator
not True # Not operator
0.0 or 1.0 # Sometimes return value is not True / False
not 1 # 1 is interpreted as True, and 0 false
5 is (2+2+1)
(2 + 3) == (1 + 4) # Equal operator
12 != 11.9 # Inequality
a1 = [5, 4, 3, 2, 1] # A list is created and bound to symbol 'a1'
c1 = [5, 4, 3, 2, 1] # A different list is created
b1 = a1 # Bind the same list to symbols 'b1' and 'a1'
a1 is b1
a1 is c1
a1 == c1
ในสภาวะปกติที่ไม่มีการนำเข้าโมดูลอื่นใด เราสามารถใช้ได้แต่พวก native functions เท่านั้น ไม่มีฟังก์ชันตรีโกณมิติหรือคณิตศาสตร์อย่างอื่นให้ใช้ การคำนวณจึงมีขีดจำกัดมาก
โจทย์ จงเขียนสคริปต์เพื่อคำนวณค่าของพจน์คณิตศาสตร์ต่อไปนี้ด้วยรหัสภาษาไพทอน
$3x^2$ + $\frac{5}{y}$;
ให้ใช้ค่า x = 7, y = 2
คำตอบ
3.0 * 7**2 + 5.0 / 2
โจทย์ ถ้าเริ่มต้นโดยใช้ตัวแปรเก็บค่า
x = 7
y = 2
จงเขียนสคริปต์คำนวณ $3x^2$ + $\frac{5}{y}$
วิธีทำ
ถ้าปัญหานี้ต้องแก้กันบ่อยๆ ควรทำเป็นฟังก์ชันไว้ใช้ดังนี้
def funxy (x, y):
return 3.0 * x**2 + 5.0 / y
วิธีใช้ funxy(x, y) เมื่อ x=3 และ y=-2:
funxy(3, -2)
บทเรียนต่อไป skk_python_modulemath.ipynb