Ngôn ngữ lập trình Python

0
549
Ngôn ngữ lập trình Python

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu.

Ngôn ngữ lập trình Python đang ngày càng trở nên phổ biến. Python hiện nằm trong top 5 ngôn ngữ lập trình phổ biến nhất trên thế giới. Bài viết này nhằm mục đích giới thiệu và giúp các bạn làm quen với ngôn ngữ lập trình này.

Website chính thức của Python: https://www.python.org/

Website hướng dẫn học Python: https://www.w3schools.com/python/

Đặc điểm của Python

Python là ngôn ngữ lập trình dạng thông dịch (Interpreter Language) tức là người lập trình không cần phải biên dịch toàn bộ chương trình trước khi thực thi, mã lệnh sẽ được xử lý tại thời gian chạy bởi trình thông dịch.

Biên dịch nghĩa là, khi chúng ta đã viết xong tất cả các mã lệnh của chương trình, trình biên dịch sẽ biên dịch toàn bộ mã lệnh đó thành mã máy (là ngôn ngữ mà máy tính có thể hiểu được ở dạng bit 0101) một lần duy nhất và chạy những mã lệnh đó.

Ví dụ: Để tính tổng của số a cộng số b (a+b=?), sau đó in kết quả ra màn hình dạng là “Kết quả là …”, chúng ta viết đoạn lệnh như sau:

soA = raw_input(“Nhập số a”)
soB = raw_input(“Nhập số b”)
tong = int(soA) + int(soB)
print “Kết quả là” + tong

Với trình biên dịch, khi chạy chương trình, tất cả các mã lệnh được biên dịch một lần thành mã máy và thực thi, chúng ta nhập số a = 2, nhập số b = 3, chương trình sẽ in ra màn hình “Kết quả là 5”.

Thông dịch không giống như biên dịch, khi chúng ta viết chương trình đến đâu, trình thông dịch sẽ thông dịch mã lệnh sang mã máy đến đó, không cần phải viết xong chương trình mới dịch sang mã máy. Với trình viết mã lệnh của Python, khi chúng ta viết xong một câu lệnh và nhấn phím Enter, ngay lập tức, lệnh đó được chuyển thành mã máy và thực thi ngay.

 Ví dụ: Cũng với đoạn chương trình tính tổng ở trên, với trình thông dịch, khi nhập một câu lệnh trong chương trình, trình thông dịch sẽ dịch sang mã máy và thực thi ngay mã lệnh, cứ như vậy từng câu lệnh một cho đến khi kết thúc chương trình. Khi gõ lệnh tong = soA + soB, trình thông dịch gán ngay tổng của soA soB cho tong, khi gõ lệnh print “Kết quả là” + tong, trình thông dịch sẽ in ngay ra màn hình “Kết quả là 5”.

Python là ngôn ngữ lập trình tương tác: Chính vì Python là ngôn ngữ lập trình dạng thông dich, cho nên người lập trình có thể tương tác trực tiếp với trình thông dịch thông qua cửa sổ lập trình Python để viết chương trình.

Python là ngôn ngữ lập trình hướng đối tượng: Python hỗ trợ kỹ thuật hướng đối tượng, người lập trình có thể đóng gói mã lệnh trong một đối tượng để sử dụng.

Có hai kiểu lập trình phổ biến, là lập trình tuần tự lập trình hướng đối tượng. Khi bạn đã làm quen với một ngôn ngữ lập trình và việc lập trình, bạn sẽ hiểu và có cái nhìn trực quan hơn về hai kiểu lập trình này. Ở đây, chúng ta chỉ trình bày tổng quan ý niệm lập trình tuần tự và lập trình hướng đối tượng.

  • Lập trình tuần tự: Là kiểu lập trình theo thứ tự, từ trên xuống dưới cho đến khi giải quyết xong bài toán, kết thúc chương trình. Dạng lập trình này không định hướng trước các công việc được thực hiện trong chương trình, mã lệnh không được sử dụng lại.
  • Lập trình hướng đối tượng: Là kiểu lập trình mà các công việc thực hiện trong một chương trình được định hướng trước, các phần tử có chung các thuộc tính và hành động được gom thành một đối tượng. Khi muốn sử dụng đến một hành động nào đó, chỉ cần truy xuất đến đối tượng đó. Dạng lập trình này có tổ chức bài bản, mã lệnh có thể dùng lại nhiều lần trong chương trình mà không cần phải viết lại.

Cài đặt môi trường lập trình Python

Trên hệ điều hành Raspbian, Python được được tích hợp sẵn, do đó, người lập trình Python không cần cài đặt Python. Với các phiên bản Linux khác, nếu chưa cài đặt Python, có thể tải Python từ website và cài đặt.

Các bản phân phối Python có sẵn trên nhiều nền tảng hệ điều hành khác nhau, chỉ cần tải
gói Python phù hợp với nền tảng đó và cài đặt là có thể lập trình Python.

Để cài đặt Python trên Linux, thực hiện như sau:

– Tải gói Python từ địa chỉ https://www.python.org/downloads/ .
– Giải nén gói vừa tải về và di chuyển vào thư mục đó.
– Thực thi lệnh run ./configure script.

– Thực thi lệnh make.
– Thực thi lệnh make install.
– Sau khi cài đặt Python, thiết lập biến môi trường PATH cho python với lệnh export PATH=”$PATH:/usr/local/bin/python”.

Để cài đặt Python trên Windows, thực hiện như sau:

– Tải gói Python từ địa chỉ https://www.python.org/downloads/ .
– Chạy tập tin python-XYZ.msi vừa tải về để cài đặt Python. Với XYZ là
phiên bản Python tải về.
– Sau khi cài đặt Python, thiết lập biến môi trường PATH cho python với lệnh
path %path%;C:\PythonXYZ . Với XYZ là một số nguyên.

Cú pháp căn bản

Có 2 cách để chạy một chương trình Python.

Cách 1: Từ giao diện dòng lệnh, gõ lệnh python, sau đó có thể viết mã lệnh và mã lệnh sẽ được thực thi ngay sau khi nhấn phím Enter.

Chạy chương trình python cách 1

Ví dụ: Để in câu “Hello World” ra màn hình, nhập mã lệnh và nhấn Enter.

Ví dụ chạy chương trình python

Cách 2: Viết mã lệnh trong một tập tin văn bản, sau đó lưu lại tập tin với định dạng .py, ví dụ, lưu với tên test.py. Từ giao diện dòng lệnh, di chuyển đến vị trí thư mục lưu tập tin test.py, sau đó gõ lệnh python test.py để chạy tập tin và thực thi mã lệnh.

Chạy chương trình python cách 2

Một số từ dành riêng (từ khóa) trong Python

and else global pass
assert elif import print
break except in return
class exce is try
continue finally lambda while
def for root raise
del from or not

Dòng và thụt đầu dòng: trong Python không sử dụng dấu ngoặc đơn ({}) để bao bọc một khối lệnh, thay vào đó là xuống hàng và thụt đầu dòng. Số lượng khoảng trắng dùng cho thụt đầu dòng là tùy biến, nhưng các phát biểu trong cùng một khối mã lệnh phải được thụt đầu dòng với cùng một lượng khoảng trắng như nhau.

Ví dụ 1 thụt đầu dòng

Đoạn mã lệnh dưới đây sẽ phát sinh lỗi vì số lượng khoảng trắng dùng cho thụt đầu dòng cho các dòng lệnh trong khối lệnh else không đồng bộ.

Ví dụ 2 thụt đầu dòng

Dấu nháy trong Python: Để khai báo một chuỗi trong Python, có thể dùng dấu nháy đơn (‘ ’) hoặc dấu nháy kép (“ ”).

Ví dụ: chuoi = “A string” ⇔ chuoi = ‘A string’

Tuy nhiên, sử dụng dấu nháy kép có thể giúp chuỗi chứa được dấu nháy đơn. Ví dụ: chuoi = “He’s 20 years old”.

Ghi chú trong Python: Sử dụng dấu thắng (#) đặt ở đầu dòng sẽ ghi chú dòng đó.

Ví dụ: #Follow statement will print a string
print “Hello, my name is Hoang”

Nếu trên một dòng, có nhiều câu lệnh trên đó, mỗi câu lệnh phải phân cách nhau bằng một dấu chấm phẩy (;).

Ví dụ: print “hello “; print “world”.

Biến trong Python.

Biến là một vùng nhớ để lưu trữ các giá trị thay đổi. Điều này có nghĩa là, khi tạo ra một biến, nó sẽ chiếm một khoảng không gian trong bộ nhớ.

Gán giá trị cho biến: Biến trong Python không cần phải được khai báo trước.
Khai báo xảy ra khi ta gán giá trị cho biến. Sử dụng dấu bằng (
=) để gán giá trị cho một biến.

Ví dụ: name = “hoang”; age = 23; height = 1.7

Python cho phép gán cùng lúc một giá trị cho nhiều biến.

Ví dụ: myAge = yourAge = herAge = 24

Các loại dữ liệu chuẩn: Python có 5 loại dữ liệu chuẩn là Numbers, String, List, Tuple Dictionary.

Dữ liệu Numbers gồm 4 loại khác nhau là số nguyên ngắn (int), số nguyên dài (long), số thực (float) và số phức hợp (complex).

int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j


Dữ liệu kiểu String là một tập hợp các ký tự nằm giữa hai dấu nháy đơn (hoặc nháy kép). Có thể dùng toán tử [] hoặc [:] để lấy tập con của chuỗi, dùng toán tử + để nối chuỗi và dấu * để lặp lại chuỗi nhiều lần.

Ví dụ: str = “Hello World”
print str ⇒
 Hello World
print str[0] ⇒ 
 H
print str[2:5]   llo
print str[2:]  
 llo World
print str * 2  
 Hello WorldHello World
print str + ” Test”  
 Hello World Test

Dữ liệu kiểu List là một tập hợp các phần tử được phân cách nhau bởi dấu phẩy (,) và được bao bọc bởi một cặp dấu ngoặc vuông []. Các phần tử trong mảng không bắt buộc phải có cùng kiểu dữ liệu. Có thể truy xuất thành phần trong mảng với các toán tử tương tự như các toán tử áp dụng trên kiểu dữ liệu String.

Ví dụ: array = [1, 2.5, “hoang”]
print array
 [1, 2.5, “hoang”]
print array[0:2]  
 [1, 2.5]

Dữ liệu kiểu Tuple là một dạng dữ liệu khác của List. Tuy nhiên, dữ liệu kiểu List được bao bọc với hai dấu ngoặc vuông [], các phần tử trong List và kích thước của List có thể thay đổi, còn với dữ liệu kiểu Tuple, được bao bọc bởi hai dấu ngoặc đơn {} và không thể được cập nhật.

Ví dụ: tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )
list = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ]
tuple[2] = 1000
#Cú pháp không hợp lệ với Tuple
list[2] = 1000 #Cú pháp hợp lệ với List

Dữ liệu kiểu Dictionary là kiểu dữ liệu giống như mảng dạng key:value trong PHP. Key có thể là bất kiểu dữ liệu gì trong Python, nhưng thường là số và chuỗi. Dữ liệu Dictionary được bao đóng bởi hai dấu ngoặc nhọn {}, giá trị của phần tử có thể được gán hoặc truy xuất qua toán tử [].

Ví dụ: dict = {}; dict[‘one’] = “This is one”; dict[2] = “This is two”
tinydict = {‘name’: ‘john’, ‘code’:6734, ‘dept’: ‘sales’}
print dict[‘one’]
 This is one
print dict[2]  
 This is two
print tinydict
 {‘dept’: ‘sales’, ‘code’: 6734, ‘name’: ‘john’}
print tinydict.keys()
 [‘dept’, ‘code’, ‘name’]
print tinydict.values()
 [‘sales’, 6734, ‘john’]

Toán tử cơ bản trong Python.

Python có các dạng toán tử: Toán tử toán học, toán tử so sánh, toán tử gán, toán tử logic, toán tử bitwise, toán tử thành viêntoán tử định danh.

Toán tử toán học. Giả sử biến a có giá trị 10, biến b mang giá trị 20, thì:

Toán tử Giải thích Ví dụ
+ Cộng giá trị của hai bên toán tử a + b 30
Giá trị bên trái trừ cho bên phải a – b  -10
* Nhân giá trị của hai bên toán tử a * b  200
/ Giá trị bên trái chia cho bên phải b / a  2
% Chia lấy số dư b % a  0
** Giá trị bên trái lũy thừa mũ giá trị bên
phải của toán tử.
a ** b  10^20
// Chia lấy phần nguyên 9 // 2  4

Toán tử so sánh. Giả sử biến a có giá trị 10, biến b mang giá trị 20, thì:

Toán tử Giải thích Ví dụ
== So sánh bằng nhau hay không a == b  false
!= So sánh khác nhau hay không a != b  true
<> So sánh khác, tương tự như toán tử != a <> b true
> So sánh a có lớn hơn b hay không a > b  false
< So sánh a có nhỏ hơn b hay không a < b  true
>= So sánh a lớn hơn hoặc bằng b không a >= b  false
<= So sánh a nhỏ hơn hoặc bằng b không a <= b  true

Toán tử gán. Giả sử biến a có giá trị 10, biến b mang giá trị 20, thì:

Toán tử Giải thích Ví dụ
= Gán giá trị của vế phải cho vế trái c = a + b
+= Giá trị vế trái bằng giá trị vế trái cộng
với giá trị vế phải
c += a ⇔ c = c + a
-= Giá trị vế trái bằng giá trị vế trái trừ đi
giá trị vế phải
c -= a ⇔ c = c – a
*= Giá trị vế trái bằng giá trị vế trái nhân
với giá trị vế phải
c *= a ⇔ c = c * a
/= Giá trị vế trái bằng giá trị vế trái chia
cho giá trị vế phải
c += a ⇔ c = c + a
%= Giá trị vế trái bằng giá trị vế trái chia
cho giá trị vế phải rồi lấy số dư
c %= a ⇔ c = c % a
 **=

Giá trị vế trái bằng giá trị vế trái lũy thừa với số mũ bằng giá trị vế phải

c **= a ⇒ c = c ** a

 //=

Giá trị vế trái bằng giá trị vế trái chia cho giá trị vế phải và lấy phần nguyên


c //= a ⇒ c = c // a

Toán tử bitwise. Giả sử a = 60 (nhị phân là 00111100), b = 13 (nhị phân là 00001101), thì:
a = 0011 1100
b = 0000 1101
—————–
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

Toán tử Giải thích Ví dụ
& Với toán tử AND, hai bit bằng 1 cộng nhau bằng 1, những bít khác cộng nhau = 0 a & b ⇒ 0000 1100 = 12
| Với toán tử OR, bit 1 + bit 1 hoặc bit 0 + bit 0 bằng 1, bit 0 + bit 0 bằng 0 a | b ⇒ 0011 1101 = 61
^ Với toán tử XOR, hai bit giồn nhau cộng lại bằng 0, hai bit khác nhau cộng lại bằng 1 a ^ b ⇒ 0011 0001 = 49
~ Với toán tử NOT, tất cả các bít sẽ được đảo ngược từ 0 sang 1 hoặc từ 1 sang 0 ~a ⇒ 1100 0011 = -61
<< Với toán tử dịch bit về bên trái, dãy nhị phân sẽ dịch về bên trái n bit << a ⇒ 1111 0000 = 240
>> Với toán tử dịch bit về bên phải, dãy nhị phân sẽ dịch về bên phải n bit >>a ⇒ 0000 1111 = 15

Toán tử logic. Giả sử biến a có giá trị 10, biến b mang giá trị 20, thì:

Toán tử Giải thích Ví dụ
and Nếu a và b đều đúng thì điều kiện đúng, ngược lại là sai. a and b ⇒ true
or Nếu a hoặc b đúng thì điều kiện đúng. Cả a và b đều sai thì điệu kiện sai a or b ⇒ true
 not

Đảo ngược trạng thái logic. Nếu a
đúng sẽ bị đảo thành sai, a sai sẽ bị đảo thành trạng thái đúng.


not (a and b) false


Toán tử thành viên. Ngoài các toán tử nêu trên, Python còn có thêm toán tử thành viên, phục vụ cho việc kiểm tra một thành viên có thuộc một String, List hay Tuple hay không. Có 2 toán tử thành viên như sau. Giả sử có một mảng z = {1, 3, 5, 8, 10}, x = 3, y = 4, thì:

Toán tử Giải thích Ví dụ
in Trả về true nếu tìm thấy phần tử cho trước trong danh sách, ngược lại trả về false x in z ⇒ true
not in Trả về true nếu không tìm thấy phần tử cho trước trong danh sách, ngược lại trả về true y in z ⇒ false

Toán tử định danh. Ngoài ra, Python còn có toán tử định danh dùng để so sánh vùng nhớ của hai đối tượng. Có hai loại toán tử định danh sau:

Toán tử Giải thích Ví dụ
is Trả về 1 nếu hai đối tượng cùng trỏ đến một vùng nhớ. x is z trả về 1 nếu
id(y) bằng id(y)
is not Trả về 1 nếu hai đối tượng không cùng trỏ đến một vùng nhớ. x is not y trả về 1
id(x) không bằng id(y)

Cấu trúc rẽ nhánh

Cấu trúc rẽ nhánh dùng để kiểm tra một hoặc một khối điều kiện cho trước, nếu điều kiện đúng, thực thi lệnh cho điều kiện đúng, ngược lại, thực thi lệnh cho điều kiện sai. Trong Python, bất cứ giá trị gì khác 0 hoặc khác null true, giá trị bằng 0 hoặc bằng null false.

Phát biểu Giải thích Ví dụ
if Nếu điều kiện đúng thì thực thi khối lệnh thuộc biểu thức if, ngược lại, bỏ quả khối lệnh của if. x = 2; y = 3;
if x == y:
print “x = y”
if..else Nếu điều kiện đúng, thực thi khối lệnh của if, nếu sai, thực thi khối lệnh của else.

x = 2; y = 3;
if x == y:
print “x = y” else:
print “x khác y

if..elif
dk
..else

Nếu điều kiện đúng, thực thi khối lệnh của if, nếu sai, tiếp tục kiểm tra điều kiện của các else tiếp theo, nếu đúng thì thực thi khối lệnh trong else, sai thì bỏ qua.

x = 2; y = 3;
if x == y:
print “x = y”
elif x > y:
print “x lớn hơn y”
else:
print “x nhỏ hơn y”


Vòng lặp

Python có các dạng vòng lặp là while, for vòng lặp lồng nhau.

Vòng lặp while: lặp lại việc thực thi khối lệnh bên trong while cho đến khi biểu thức điều kiện của while không còn đúng nữa.

Ví dụ: a = 0
while a < 10:
print a;
a++;
print “Bạn vừa in ra dãy số tự nhiên”

Vòng lặp for: Lặp lại việc thực thi khối lệnh bên trong for theo một số lần nhất định.

Ví dụ: a = 1
for kytu in “Hello”:
print “ký tự thứ ” + a + “ là ” kytu
print “Bạn vừa in ra các ký tự trong từ Hello”

Vòng lặp lồng nhau: Python cho phép một vòng lặp có thể nằm trong một vòng lặp khác hoặc có thể chứa vòng lặp khác.

Ví dụ: i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1

if (j > i/j) : print i + ” is prime”
i = i + 1
print “Bạn vừa in một dãy số nguyên tố nhỏ hơn 100!”

Hàm trong Python

Hàm là một khối lênh xây dựng sẵn, có thể sử dụng lại nhiều lần để thực hiện một công việc, một chức năng nào đó trong chương trình. Python xây dựng sẵn rất nhiều hàm trong nó, chẳng hạn như hàm print dùng để in một chuỗi ký tự ra màn hình. Tuy nhiên, người lập trình có thể tự tạo ra các hàm cho riêng mình bằng cách sử dụng từ khóa def.

Cú pháp: def tên_hàm ( tham số ):
khối_lệnh_ở đây
return giá_trị_trả_về.

Ví dụ: def congHaiSo(soA, soB):
ketQua = soA + soB
return ketQua

Khai báo hàm chỉ là tạo ra một khối lệnh dựng sẵn và chưa được sử dụng. Để sử dụng được chức năng của hàm, ta phải gọi đến hàm đó.

Ví dụ: print “Chương trình toán học mini”
a = 4; b = 5
print “Số a = 4 \n Số b = 5”
tong =
congHaiSo( a, b )
print “Tổng hai sô a + b = ” + tong

Kết luận

Trong bài viết này chúng ta đã làm quen với Python, một loại ngôn ngữ lập trình phổ biến nhất trên thế giới. Chúng được sử dụng rộng rãi bởi vì mang tính tiện lợi cao, có nhiều tính năng thú vị như việc sử dụng không mất phí, có thể mở rộng, không quá khắt khe, cộng đồng rộng lớn, cú pháp đơn giản. 

Video hướng dẫn học Python:

BÌNH LUẬN

Please enter your comment!
Please enter your name here