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.

Python Basics

Kiến thức ngôn ngữ lập trình Python

Python Basics

Python overview

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. (Theo wikipedia.org)

python-op.png

1. Các phiên bản Python

Sự phát triển Python đến nay có thể chia làm các giai đoạn:

Hiện tại Python có 2 nhánh chính là 2.x và 3.x. Ở nhánh 2.x đã dừng phát triển và đang đứng ở phiên bản 2.7. Nhánh Python 3.x thì vẫn đang được tiếp tục phát triển.

2. Đặc điểm của ngôn ngữ Python

- Ngôn ngữ lập trình phổ biến:

Thành công của nó không đơn thuần là một mối quan tâm ngày càng tăng trong lập trình như một toàn thể trong những năm gần đây. Năm ngoái, Stack Overflow đã phân tích dữ liệu về sự phát triển của các ngôn ngữ lập trình, dựa trên dữ liệu lưu lượng truy cập từ các quốc gia có thu nhập cao. Từ dữ liệu này, họ tuyên bố rằng "Python có một cơ sở vững chắc để trở thành ngôn ngữ lập trình chính phát triển nhanh nhất".

- Các công ty lớn sử dụng Python:

Uber, PayPal, Google, Facebook, Instagram, Netflix, Dropbox và Reddit đều sử dụng Python trong quá trình phát triển và thử nghiệm của họ. Hơn nữa, Python cũng được sử dụng rộng rãi trong lập trình robot và các hệ thống nhúng. Ngay cả các hệ thống kế thừa được viết bằng C và C ++ cũng dễ dàng giao tiếp với Python.

Trong các lĩnh vực yêu cầu phân tích dữ liệu - lĩnh vực rất phát triển hiện nay, Python và các thư viện của nó đều phù hợp. Goldman Sachs là một trong nhiều tổ chức tài chính lớn sử dụng Python để thể hiện số lượng lớn dữ liệu của họ.

- Học máy với Python:

Học máy (Machine Learning) rất quan trọng trong thế giới hiện đại. Nó sắp xếp trải nghiệm internet của bạn, làm mọi thứ từ kiểm duyệt các mạng xã hội đến lái xe ô tô.

Điều này liên quan thế nào với Python? Trong khi có các thư viện được thiết kế để làm việc với các ngôn ngữ phổ biến khác, Python là ngôn ngữ thực tế dành cho học máy. TensorFlow của Google hoạt động chủ yếu với Python. Hầu hết các khóa học về học máy đều sử dụng ngôn ngữ lập trình này. Việc phân tích dữ liệu và phân tích cú pháp cần thiết cho việc học máy đều thực hiện tốt với Python và các thư viện của nó.

- Python được hỗ trợ tốt:

Do ngày càng phổ biến, Python được hỗ trợ trực tuyến tốt ở hầu hết cấp độ. Các trang web như Stack Overflow thường xuyên đưa ra trợ giúp với các nguyên tắc cơ bản ở cấp độ mới làm quen với Python. Các lập trình viên làm việc trên các vấn đề phức tạp và cụ thể cũng có thể tìm thấy sự hỗ trợ hiệu quả hơn cho ngôn ngữ lập trình này, so với các ngôn ngữ khác.

- Python là ngôn ngữ của giáo dục:

Việc sử dụng máy tính trong giáo dục đã thay đổi hoàn toàn trong những năm gần đây. Ngày nay, công nghệ tham gia nhiều vào lĩnh vực giáo dục, trong đó việc dạy lập trình phổ biến hơn trên toàn thế giới.

Python là một ngôn ngữ lập trình dễ đọc, được thiết kế với các mô tả đơn giản và cú pháp thông thường. Trải nghiệm người dùng cũng được ưu tiên. Vì vậy, đây là ngôn ngữ rất phù hợp để dạy cho trẻ em. Đơn giản nhất, trẻ em có thể học Python từ một phiên bản trò chơi Minecraft có tên gọi Minecraft Pi.

Python cũng phù hợp để giáo dục mở rộng. Một số trường đại học dạy ngôn ngữ lập trình này không chỉ trong ngành khoa học máy tính mà còn cho sinh viên toán. Ngoài ra, Matplotlib (một thư viện Python phổ biến) được sử dụng cho các đối tượng ở tất cả các cấp để thể hiện dữ liệu phức tạp.

Python cũng là một trong những ngôn ngữ phát triển nhanh nhất trên Codecademy, vì rất dễ để học từ xa.

- Python là ngôn ngữ miễn phí:

Bản chất mọi ngôn ngữ lập trình đều miễn phí. Sự khác biệt ở đây là Python là mã nguồn mở, nó hoàn toàn tương thích với các phần mềm mã nguồn mở như Open Source và GPL.

Trạng thái không ràng buộc của chuỗi Python làm cho nó trở thành một công cụ hoàn hảo cho tất cả mọi người sử dụng.

Python Basics

Python Installation - IDE

Hướng dẫn cài đặt Python và công cụ lập trình IDE

1. Cài đặt

Python hỗ trợ hầu hết các nền tảng và rất dễ tìm thấy sẵn trên một số hệ điều hành như Mac OS, Linux, Windows.

Để biết là hệ thống của bạn đã cài Python chưa, có thể vào màn hình command line và gõ:

$ python --version

Nếu đã cài đặt python thì sẽ hiển thị thông tin phiên bản python. Nếu báo lỗi thì đồng nghĩa với bạn chưa cài đặt Python.

Có thể tham khảo cách cài đặt Python tại: https://www.python.org/downloads/

2. Công cụ phát triển - IDE

Chỉ cần dùng một text editor là bạn có thể viết được code python hoặc có thể dùng các công cụ cao cấp hơn (IDE) như Aptana, PyCharm… Các IDE thường hỗ trợ thêm quá trình phân tích cú pháp dòng lệnh trong quá trình lập trình, phát triển cũng như hỗ trợ run, debug chương trình.

python-ide.png

Danh sách các IDE được yêu thích nhất:

1. PyCharm
2. Spyder
3. PyDev
4. IDLE
5. Wing
6. Eric Python
7. Sublime Text
8. Rodeo
9. Jupyter Notebook
10. Visual Studio

Python Basics

Python Hello world

Hướng dẫn viết chương trình đầu tiên Hello world bằng Python.

Tạo một file có tên là helloworld.py và có nội dung như sau:

print ('Hello world')

print là lệnh cơ bản nhất để xuất một biến ra (thường là màn hình)

Sau đó, vào màn hình command line, di chuyển đến thư mục chứa file này và gõ:

$ python helloworld.py

Nếu thấy xuất hiện dòng chữ Hello world tức là bạn đã hoàn thành việc viết ứng dụng python đầu tiên.

 

Python Basics

Python naming conventions - Quy ước đặt tên trong Python

Các quy ước đặt tên khi lập trình chương trình Python.

py.png

1. General
2. Packages
3. Modules
4. Classes
5. Global (module-level) Variables
6. Instance Variables
7. Methods
8. Method Arguments
9. Functions
10. Constants
Python Basics

Python Basic Syntax - Cú pháp cơ bản trong Python

Các cú pháp cơ bản của Python

- Kiểm tra phiên bản của Python:

$ python
Python 2.4.3 (#1, Nov 11 2010, 13:34:43)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

- Nhập đoạn code sau đây và nhấn Enter:

>>> print "Hello, Python!"

Output:

Hello, Python!

- Lập trình trình Python script mode:

test.py

#!/usr/bin/python

print "Hello, Python!"
$ chmod +x test.py     # This is to make file executable
$./test.py

Output:

Hello, Python!

- Từ khóa trong Python:

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield
Python Basics

Python Variable types - Kiểu biến trong Python

Các kiểu biến dữ liệu trong Python

Trong lập trình, biến (variable) là tên của một vùng trong bộ nhớ RAM, được sử dụng để lưu trữ thông tin. Bạn có thể gán thông tin cho một biến, và có thể lấy thông tin đó ra để sử dụng. Khi một biến được khai báo, một vùng trong bộ nhớ sẽ dành cho các biến.

Dựa trên kiểu dữ liệu của một biến, trình thông dịch phân bổ bộ nhớ và quyết định những gì có thể được lưu trữ trong bộ nhớ dành riêng. Do đó, bằng cách gán các loại dữ liệu khác nhau cho biến, bạn có thể lưu trữ số nguyên, số thập phân hoặc ký tự trong các biến này.

- Khai báo biến bằng một câu lệnh gán:

counter = 100          # An integer assignment
miles   = 1000.0       # A floating point
name    = "John"       # A string

print counter
print miles
print name

Output:

100
1000.0
John

- Khai báo nhiều loại giá trị (số, chuỗi) cho một biến:

a = 1
a = 'Hello World'
a = [1, 2, 3]
a = [1.2, 'Hello', 'W', 2]

- Khai báo 1 giá trị cho nhiều biến:

a = b = c = 1

- Khai báo kết hợp:

a,b,c = 1,2,"john"

Khi đó, tương đương với:

a = 1
b = 2
c = "john"
Python Basics

Python Data type - Kiểu dữ liệu trong Python

Các kiểu dữ liệu trong Python

Python bao gồm các kiểu dữ liệu cơ bản sau:

1. Python Number

Number được sử dụng để lưu trữ các giá trị số. Một đối tượng Number được tạo khi khai báo và gán giá trị cho chúng.

var1 = 1
var2 = 10

Bạn có thể delete tham chiếu tới 1 đối tượng Number bằng cách sử dụng cú pháp del:

del var1[,var2[,var3[....,varN]]]]

Các kiểu Number trong Python bao gồm:

int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j
2. Python String

String trong Python được định nghĩa như một tập ký tự được thể hiện trong cặp dấu nháy (nháy đơn hoặc đôi):

str = 'Hello World!'

print str          # Prints complete string
print str[0]       # Prints first character of the string
print str[2:5]     # Prints characters starting from 3rd to 5th
print str[2:]      # Prints string starting from 3rd character
print str * 2      # Prints string two times
print str + "TEST" # Prints concatenated string

Output:

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
3. Python List

List là một kiểu dữ liệu dãy (sequence) các phần tử (element), nó cho phép loại bỏ, hoặc thêm các phần tử vào danh sách, đồng thời cho phép cắt lát (slice) các phần tử.

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list          # Prints complete list
print list[0]       # Prints first element of the list
print list[1:3]     # Prints elements starting from 2nd till 3rd 
print list[2:]      # Prints elements starting from 3rd element
print tinylist * 2  # Prints list two times
print list + tinylist # Prints concatenated lists

Output:

['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
4. Python Tuple

Tuple là một kiểu dữ liệu chuỗi khác tương tự như List. Tuple bao gồm một số giá trị được phân tách bằng dấu phẩy. Tuy nhiên, không giống như List, các phần tử trong Tuple được đặt trong dấu ngoặc đơn.

Tuple có thể được coi là danh sách chỉ đọc (read-only), các phần tử trong Tuple là cố định và không thể thay đổi.

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print tuple           # Prints complete list
print tuple[0]        # Prints first element of the list
print tuple[1:3]      # Prints elements starting from 2nd till 3rd 
print tuple[2:]       # Prints elements starting from 3rd element
print tinytuple * 2   # Prints list two times
print tuple + tinytuple # Prints concatenated lists

Output:

('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

- Đoạn lệnh sau là không hợp lệ vì thực hiện update giá trị phần tử của Tuple:

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list
5. Python Dictionary

Dictionary của Python là loại bảng băm (hash table). Chúng hoạt động như các mảng (array) hoặc băm (hash) được tìm thấy trong Perl và bao gồm các cặp key-value. Dictionary key có thể là hầu hết mọi loại Python, nhưng thường là Number hoặc String. Mặt khác, các giá trị có thể là bất kỳ đối tượng Python tùy ý.

Từ điển được bao quanh bởi dấu ngoặc nhọn {} và các giá trị có thể được chỉ định và truy cập bằng dấu ngoặc vuông ([]).

ict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print dict['one']       # Prints value for 'one' key
print dict[2]           # Prints value for 2 key
print tinydict          # Prints complete dictionary
print tinydict.keys()   # Prints all the keys
print tinydict.values() # Prints all the values

Output:

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
6. Chuyển đổi kiểu dữ liệu

Có một số hàm dựng sẵn để thực hiện chuyển đổi từ loại dữ liệu này sang loại dữ liệu khác. Các hàm này trả về một đối tượng mới biểu thị giá trị được chuyển đổi.

# Function Mô tả
1

int(x [,base])

Chuyển đổi x sang kiểu Integer

2

long(x [,base] )

Chuyển đổi x sang kiểu Long

3

float(x)

Chuyển đổi x sang kiểu Float

4

complex(real [,imag])

Tạo một số phức

5

str(x)

Chuyển đổi x sang kiểu String

6

repr(x)

Chuyển đổi x sang kiểu expression string

7

eval(str)

Đánh giá một chuỗi và trả về một đối tượng

8

tuple(s)

Chuyển đổi sang kiểu Tuple

9

list(s)

Chuyển đổi sang kiểu List

10

set(s)

Chuyển đổi sang kiểu Set

11

dict(d)

Tạo một Dictionary, d phải là một sequence (key, value) tuple

12

frozenset(s)

Chuyển đổi sang kiểu Frozen Set

13

chr(x)

Chuyển đổi một Integer thành Character

14

unichr(x)

Chuyển đổi Integer thành Unicode Character

15

ord(x)

Chuyển đổi Character thành kiểu Integer

16

hex(x)

Chuyển đổi Integer thành Hex String

17

oct(x)

Chuyển đổi Integer thành Octal String

Python Basics

Python Arithmetic Operator - Toán tử số học trong Python

Python hỗ trợ một số toán tử toán học thông dụng như:

Các ví dụ sau được thực hiện với: a = 10 và b = 20

Operator Description Example
+ Addition Phép cộng a + b = 30
- Subtraction Phép trừ a – b = -10
* Multiplication Phép nhân a * b = 200
/ Division Phép chia b / a = 2
% Modulus Phép chia lấy dư b % a = 0
** Exponent Hàm mũ a**b =1020
// Phép chia làm tròn xuống (Floor Division) 9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0

- Ví dụ:

a = 21
b = 10
c = 0

c = a + b
print "Line 1 - Value of c is ", c

c = a - b
print "Line 2 - Value of c is ", c 

c = a * b
print "Line 3 - Value of c is ", c 

c = a / b
print "Line 4 - Value of c is ", c 

c = a % b
print "Line 5 - Value of c is ", c

a = 2
b = 3
c = a**b 
print "Line 6 - Value of c is ", c

a = 10
b = 5
c = a//b 
print "Line 7 - Value of c is ", c

Output:

Line 1 - Value of c is 31
Line 2 - Value of c is 11
Line 3 - Value of c is 210
Line 4 - Value of c is 2
Line 5 - Value of c is 1
Line 6 - Value of c is 8
Line 7 - Value of c is 2
Python Basics

Python Logical Operator - Toán tử logic trong Python

Các toán tử Logical trong Python.

- Giá trị đúng và sai tương ứng là: True False

- Ví dụ:

a = True
b = False
print(('a and b is',a and b))
print(('a or b is',a or b))
print(('not a is',not a))

Output:

('a and b is', False)
('a or b is', True)
('not a is', False)
Python Basics

Python Membership Operator - Toán tử thành viên trong Python

Toán tử thực hiện kiểm tra phần tử trong một tập hợp (sequence).

'good' in 'this is a greate example' # False
'good' not in 'this is a greate example' # True

Tập hợp (sequence) có thể là: String, List, Tuple

- Ví dụ:

a = 10
b = 20
list = [1, 2, 3, 4, 5 ];

if ( a in list ):
   print "Line 1 - a is available in the given list"
else:
   print "Line 1 - a is not available in the given list"

if ( b not in list ):
   print "Line 2 - b is not available in the given list"
else:
   print "Line 2 - b is available in the given list"

a = 2
if ( a in list ):
   print "Line 3 - a is available in the given list"
else:
   print "Line 3 - a is not available in the given list"

Output:

Line 1 - a is not available in the given list
Line 2 - b is not available in the given list
Line 3 - a is available in the given list
Python Basics

Python Comparison Operator - Toán tử so sánh trong Python

Một số phép so sánh thông thường trong Python để so sánh 2 giá trị như:

Hỗ trợ dạng so sánh kép như:

x = 2
1 < x < 3 # True
10 < x < 20 # False
3 > x <= 2 # True
2 == x < 4 # True

Ví dụ:

a = 21
b = 10
c = 0

if ( a == b ):
   print "Line 1 - a is equal to b"
else:
   print "Line 1 - a is not equal to b"

if ( a != b ):
   print "Line 2 - a is not equal to b"
else:
   print "Line 2 - a is equal to b"

if ( a <> b ):
   print "Line 3 - a is not equal to b"
else:
   print "Line 3 - a is equal to b"

if ( a < b ):
   print "Line 4 - a is less than b" 
else:
   print "Line 4 - a is not less than b"

if ( a > b ):
   print "Line 5 - a is greater than b"
else:
   print "Line 5 - a is not greater than b"

a = 5;
b = 20;
if ( a <= b ):
   print "Line 6 - a is either less than or equal to  b"
else:
   print "Line 6 - a is neither less than nor equal to  b"

if ( b >= a ):
   print "Line 7 - b is either greater than  or equal to b"
else:
   print "Line 7 - b is neither greater than  nor equal to b"

Output:

Line 1 - a is not equal to b
Line 2 - a is not equal to b
Line 3 - a is not equal to b
Line 4 - a is not less than b
Line 5 - a is greater than b
Line 6 - a is either less than or equal to b
Line 7 - b is either greater than or equal to b
Python Basics

Python Assignment Operator - Toán tử gán trong Python

Các toán tử khai báo và gán giá trị biến trong Python

Operator Description Example
= Gán giá trị c = a + b gán giá trị a + b cho c
+= Add AND Cộng giá trị c += a tương đương c = c + a
-= Subtract AND Trừ giá trị c -= a tương đương c = c - a
*= Multiply AND Nhận giá trị c *= a tương đương c = c * a
/= Divide AND Chia giá trị c /= a tương đương c = c / ac /= a tương đương c = c / a
%= Modulus AND Phép chia lấy dư c %= a tương đương c = c % a
**= Exponent AND Hàm mũ c **= a tương đương c = c ** a
//= Floor Division Phép chia lấy phần nguyên c //= a tương đương c = c // a

- Ví dụ: Thực hiện với a = 10 và b = 20

#!/usr/bin/python

a = 21
b = 10
c = 0

c = a + b
print "Line 1 - Value of c is ", c

c += a
print "Line 2 - Value of c is ", c 

c *= a
print "Line 3 - Value of c is ", c 

c /= a 
print "Line 4 - Value of c is ", c 

c  = 2
c %= a
print "Line 5 - Value of c is ", c

c **= a
print "Line 6 - Value of c is ", c

c //= a
print "Line 7 - Value of c is ", c

Output:

Line 1 - Value of c is 31
Line 2 - Value of c is 52
Line 3 - Value of c is 1092
Line 4 - Value of c is 52
Line 5 - Value of c is 2
Line 6 - Value of c is 2097152
Line 7 - Value of c is 99864
Python Basics

Python Bitwise Operator - Toán tử với Bit trong Python

Các toán tử thực hiện trên bit trong Python

Operator Description Example
& Binary AND AND (a & b) (means 0000 1100)
| Binary OR OR (a | b) = 61 (means 0011 1101)
^ Binary XOR XOR (a ^ b) = 49 (means 0011 0001)
~ Binary Ones Complement It is unary and has the effect of 'flipping' bits. (~a ) = -61 (means 1100 0011 in 2's complement form due to a signed binary number.
<< Binary Left Shift Dịch bit sang trái a << 2 = 240 (means 1111 0000)
>> Binary Right Shift Dịch bit sang phải a >> 2 = 15 (means 0000 1111)

- Ví dụ:

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0

c = a & b;        # 12 = 0000 1100
print "Line 1 - Value of c is ", c

c = a | b;        # 61 = 0011 1101 
print "Line 2 - Value of c is ", c

c = a ^ b;        # 49 = 0011 0001
print "Line 3 - Value of c is ", c

c = ~a;           # -61 = 1100 0011
print "Line 4 - Value of c is ", c

c = a << 2;       # 240 = 1111 0000
print "Line 5 - Value of c is ", c

c = a >> 2;       # 15 = 0000 1111
print "Line 6 - Value of c is ", c
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
Python Basics

Python Identity Operator - Toán tử định danh trong Python

Toán tử định danh (Identity) được thực hiện bằng cách so sánh vị trí bộ nhớ của hai đối tượng. Có hai toán tử Identity bao gồm:

Operator Description Example
is Đánh giá là true nếu các biến ở hai bên của toán tử trỏ đến cùng một đối tượng và ngược lại là false.  
is not Đánh giá là false nếu các biến ở hai bên của toán tử trỏ đến cùng một đối tượng và ngược lại là true.  

- Ví dụ:

a = 20
b = 20

if ( a is b ):
   print "Line 1 - a and b have same identity"
else:
   print "Line 1 - a and b do not have same identity"

if ( id(a) == id(b) ):
   print "Line 2 - a and b have same identity"
else:
   print "Line 2 - a and b do not have same identity"

b = 30
if ( a is b ):
   print "Line 3 - a and b have same identity"
else:
   print "Line 3 - a and b do not have same identity"

if ( a is not b ):
   print "Line 4 - a and b do not have same identity"
else:
   print "Line 4 - a and b have same identity"

Output:

Line 1 - a and b have same identity
Line 2 - a and b have same identity
Line 3 - a and b do not have same identity
Line 4 - a and b do not have same identity
Python Basics

Python Decision Making - IF, else, switch, for, while trong Python

Python hỗ trợ một số cấu trúc điều khiển thông dụng (if, for, while). Hầu hết các cấu trúc điều khiển đều dựa vào thụt đầu dòng (indention) để tạo thành một block xử lý, thay vì sử dụng {} như các ngôn ngữ khác (Java, PHP, Javascript)

1. If elif else

if_else_if_statement_diagram.png

- Cú pháp:

if condition1:
	indentedStatementBlockForTrueCondition1
elif condition2:
	indentedStatementBlockForFirstTrueCondition2
elif condition3:
	indentedStatementBlockForFirstTrueCondition3
elif condition4:
	indentedStatementBlockForFirstTrueCondition4
else:
	indentedStatementBlockForEachConditionFalse

- Ví dụ:

var = 100
if var == 200:
   print "1 - Got a true expression value"
   print var
elif var == 150:
   print "2 - Got a true expression value"
   print var
elif var == 100:
   print "3 - Got a true expression value"
   print var
else:
   print "4 - Got a false expression value"
   print var

print "Good bye!"

Output:

3 - Got a true expression value
100
Good bye!
2. Switch case

Python không có cấu trúc switch case

3. For in

for_loop_flow_chart_diagram.png

- Cú pháp:

for iterating_var in sequence:
	statements(s)

- Ví dụ:

for letter in 'Python': # First Example
	print 'Current Letter :', letter

fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # Second Example
	print 'Current fruit :', fruit

print "Good bye!"

Output:

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
4. While

while_loop_flow_chart_diagram.png

- Cú pháp:

while expression: 
	statement(s)

- Ví dụ:

count = 0
while (count < 9):
	print 'The count is:', count
	count = count + 1

    print "Good bye!"

Output:

The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!
Python Basics

Python Function - Hàm trong Python

Python function (hàm) là một khối lệnh đặc biệt giúp mã chương trình dễ đọc hơn, được đặt tên và có thể gọi để sử dụng ở các nơi khác nhau trong chương trình.

1. Cú pháp
def functionname(param, param2,..):
	statements(s)

Hàm nếu không trả dữ liệu thì mặc định sẽ trả về giá trị None

Ví dụ: Khai báo hàm tính và trả về giá trị tổng của 2 tham số đầu vào:

def sum(a, b):
	return (a+b)

Cách gọi hàm:

sum(1, 2)
(trả về giá trị là 3)
2. Hàm có đối số mặc định

Hàm có hỗ trợ giá trị mặc định cho tham số khi không truyền vào.

Ví dụ hàm sau:

def plus(c, d = 10):
return (c+d)

Nếu gọi hàm trên như sau:

plus(2)
(kết quả trả về là 12)

Một khác biệt trong cách gọi hàm của Python so với PHP, Java... là chúng ta có thể thay đổi thứ tự tham số truyền vào bằng cách đặt tên tham số khi gọi hàm.

Ví dụ: Ta có thể gọi hàm sum(a,b) ở ví dụ trên bằng cách truyền tham số b trước a như sau:

sum(b = 1, a = 10)
Python Basics

Python String - Kiểu chuỗi trong Python

1. Python String là gì

String (chuỗi) là một trong số những kiểu dữ liệu được sử dụng nhiều nhất trong Python. Một chuỗi có thể khai báo bằng dấu nháy đôi " hoặc đơn '.

Ví dụ:

str1 = "Hello"
str2 = 'world'

2. Truy cập ký tự trong String

Có thể truy xuất từng ký tự trong một String theo hình thức index,

Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

3. Khai báo String trên nhiều dòng sử dụng 3 dấu nháy

Có thể sử dụng 3 dấu nháy (đôi hoặc đơn) để khai báo chuỗi trên nhiều dòng.

Ví dụ:

paragraph = """This is line 1
This is line 2
This is line 3"""

4. Các toán tử trên String

4.1. Nối chuỗi

Có thể tạo một chuỗi dài từ việc nối các chuỗi lại theo cú pháp:

str = str1 + " " + str2
4.2. Trích xuất chuỗi con

Có thể tạo các chuỗi con thông qua toán tử lấy khoản [start:end] (range). Mặc định start là từ vị trí đầu chuỗi
( 0 ) và end là đến vị trí cuối chuỗi.

Ví dụ:

str = 'Hello world'
print str[0:4]
(Hiển thị "Hell")
print str[:4]
(Hiển thị "Hell")
print str[-3:]
(Hiển thị "rld")
print str[6:-3]
(Hiển thị "wo")
4.3. Lấy độ dài của chuỗi

Sử dụng hàm len(...) để trả về độ dài của chuỗi.

Ví dụ:

count = len("Hello world")
(count có giá trị 11)
4.4. Tìm & thay thế nội dung

Có thể tìm và thay thế trong chuỗi bằng cách gọi phươngthức replace(search, replace[, max]) của một chuỗi.

Ví dụ:

str = 'Hello world'
newstr = str.replace('Hello', 'Bye')
print newstr
(Sẽ hiển thị chuỗi "Bye world" trên màn hình)
4.5. Tìm vị trí chuỗi con

Có thể tìm vị trí của một chuỗi con trong chuỗi lớn bằng cách gọi phương thức find(str, beg=0, end=len(string)). Bắt đầu là vị trí 0, nếu không tìm ra thì trả về -1.

Ví dụ:

str = 'Hello world'
print str.find('world')
(hiển thị 6)
print str.find('Bye');
(hiển thị -1)

Hàm find() sẽ tìm theo thứ tự từ trái qua phải của chuỗi,tức là từ lần xuất hiện đầu tiên. Có thể dùng hàm rfind() để tìm theo vị trí từ cuối chuỗi về phía trước.

4.6. Tách chuỗi

Có thể tách chuỗi dựa theo một chuỗi delimeter bằng cách gọi phương thức split(str="", num=string.count(str)) .

Ví dụ:

str = 'Hello world'
print str.split(' ')
(Trả về một mảng có 2 phần tử là 2 chuỗi "Hello" và "world")

Có thể sử dụng hàm splitlines() để tách chuỗi theo từng hàng và loại bỏ ký tự NEWLINE.

4.7. Trim ký tự khoảng trắng

Có thể loại bỏ các ký tự (mặc định là ký tự khoảng trắng) trước và sau một chuỗi, bằng cách gọi các phương thức sau:

4.8. Một số hàm xử lý chuỗi
Python Basics

Python List - Kiểu List trong Python

List trong Python là cấu trúc mảng và các phần tử có index có thứ tự. Không như PHP, key của một mảng có thể vừa
là số, vừa là chuỗi (associated array).

Trong Python, muốn tạo một mảng có key là chuỗi thì sẽ sử dụng cấu trúc Dictionary (phần tiếp). Trong phần
này, chúng ta sẽ nói đến List. Một List được khai báo như mảng trong .JSON. Sử dụng [...] để khai báo một mảng.

Ví dụ:

numbers = [1, , , , ]

names = ['Marry', 'Peter']

Có thể truy xuất từng phần tử của mảng bằng index, phần tử đầu tiên có thứ tự là 0

Ví dụ:

Print numbers[0]
(Hiển thị 1)

Print numbers[-3]
(Hiển thị 3)

Print names[1]
(Hiển thị 'Peter')

Để biết được số lượng phần tử của 1 List, có thể sử dụng hàm len(array) để lấy số lượng phần tử của mảng tham
số truyền vào.

1. Kiểm tra sự tồn tại của một phần tử

a. Kiểm tra theo index

Trong nhiều trường hợp bạn muốn truy xuất một phần tử bất kỳ (dựa vào index) của mảng thì nếu truy xuất đến một
phần tử không tồn tại thì ứng dụng sẽ báo lỗi. Do đó, trước khi truy xuất một phần tử, bạn cần kiểm tra xem phần tử này đã tồn tại hay chưa. Hiện tại python không hỗ trợ hàm nào để kiểm tra sự tồn tại của một phần tử trong mảng.

Có 2 cách thường thấy để kiểm tra đó là "Look before you leap" (LBYL) và "Easier to ask forgiveness than
permission" (EAFP).

Ví dụ về "Look before you leap (LBYL)":

1£ index < len(array):
	array[index]

else:
	# handle this

Ví dụ về "Easier to ask forgiveness than permission" (EAFP):

try:
	array[Lindex]

except IndexError:
	# handle this

b. Kiểm tra theo giá trị

Để kiểm tra một giá trị có tồn tại / không tồn tại trong mảng hay không thì có thể sử dụng toán tử in / not in.

Ví dụ:

mylist = ['a', 'b', 'c']

Print 'a' in mylist
(Hiển thị True)

Print 'P' not 1n mylist
(Hiển thị False)
2. Trích xuất mảng con

Tương tự như chuỗi, tó thể tạo các mảng con thông qua toán tử lấy khoản [start:end] (range). Mặc định start là
từ vị trí đầu chuỗi 0end là đến vị trí cuối chuỗi.

Ví dụ:

numbers = ['a', 'b', 'c', 'd']

Print numbers[:2]
(Hiển thị ['a', 'b'])

Print numbers[-2:]
(Hiển thị ['c', 'd'])
3. Xóa phần tử của mảng

Có thể xóa một phần tử thông qua toán tử del. Thứ tự của các phần tử sẽ dịch chuyển tùy vào vị trí của phần tử bị
xóa.

Ví dụ:

numbers = [1,2,3,4,5]
del numbers[0]

Print numbers

(Hiển thị [2, 3, 4, 5)

Bạn có thể xóa một khoản dựa vào toán tử lấy khoảng [start:end]

Ví dụ:

numbers = |1,2,3,4,5,6,7]
del numbers[2:4]

Print numbers

(Hiển thị [1, 2, 5, 6, 7])
4. Nối 2 mảng

Bạn có thể sử dụng toán tử + để nối giá trị của 2 mảng và tạo ra một mảng lớn có số lượng phần tử là tổng số lượng
phân tử của 2 mảng con.

Ví dụ:

a = [1,2]
b = [1,3]

Print a + b
(Hiển thị [1, 2, 1, 3])
5. Thêm phần tử vào mảng

Nếu bạn muốn thêm phần tử vào một mảng đã tồn tại, hãy dùng phương thức list.append (newvalue) để thêm phần
tử có giá trị newvalue vào cuối mảng list.

Ví dụ:

numbers = [1,2,3]
numbers.append(4)

Print numbers

(Hiển thị [1, 2, 3, 4])
6. Lấy phần tử cuối mảng

Nếu muốn lấy phần tử cuối cùng của mảng ra khỏi mảng, có thể sử dụng phương thức list.pop(), sẽ trả về giá trị
của phần tử cuối cùng và mảng bây giờ sẽ không còn phần tử này.

Ví dụ:

numbers = [1,2,3]

mynumber = numbers.pop()

Print mynumber

(Hiển thị 3)

Print numbers
(Hiển thị [1, 2])
7. Tìm một giá trị trong mảng

Nếu bạn muốn tìm vị trí (index) của một giá trị trong một mảng, có thể dùng phương thức list.index(obj). Nếu
tìm thấy sẽ trả về index của phần tử đầu tiên tìm thấy. Nếu không tìm thấy sẽ có Exception.

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc'];
Print "Index for xyz : ", aLlist.index('xyz')
Print "Index for zara : ", alist.index('zara')

Khi chạy sẽ hiển thị kết quả:

Index for xyz : 1

Index for zara : 2
8. Đảo ngược giá trị của mảng

Để đảo ngược thứ tự các giá trị của một mảng, sử dụng phương thức list.reverse(). Phương thức này không trả
về kết quả mà thay đổi trực tiếp mảng list.

Ví dụ:

numbers = |1, 2, 3, 4]
numbers.reverse()

Print numbers

(Hiển thị [4, 3, 2, 1])
9. Sắp xếp giá trị các phần tử

Để sắp xếp thứ tự của giá trị trong mảng, sử dụng phương thức list.sort([func]) để sắp xếp. Nếu tham số đầu
vào là hàm func không truyên vào thì mặc định là sắp xếp theo giá trị tăng dần. Phương thức này không trả về kết
quả mà thay đổi trực tiếp mảng list

Ví dụ:

aList = [123, 'xyz', 'zara', 'abc', 'xyz']
aList.sort()

Print "List : ", aList

(Hiển thị List : 123 ; 'abc', 'xyz', 'xyz', 'zara'])

Cách triển khai hàm compare func() cũng giống như hàm usort trong PHP. Hàm trả về các giá trị o, -1 và 1.

 

Python Basics

Python Tuple - Tuple trong Python

Python Tuple cũng là một cấu trúc mảng, tương tự như cấu trúc List. Một số điểm khác nhau cơ bản là khai báo Tuple sử
dụng cặp dấu ngoặc (...) và một tuple đã được khai báo rồi thì không thay đổi được giá trị (immutable) và không hỗ
trợ các phương thức như append(), pop() ....

Ví dụ:

mytuple = ('x', 'y', 'z')
print mytuple
(Hiển thị ('x', 'y', z'))

Tuple vẫn hỗ trợ các cách để truy xuất phần tử giống List như là truy xuất theo index, range, tìm kiếm...

1. So sánh List và Tuple

List và Tuple đều là một dẫy (sequence) các phần tử. Chúng có các khác biệt sau:

- Khi viết một List bạn sử dụng cặp dấu ngặc vuông [ ], trong khi viết một Tuple bạn sử dụng dấu ngặc tròn ()

# Đây là một Tuple
aTuple = ("apple", "apricot", "banana")
# Đây là một List (Danh sách)
aList = ["apple", "apricot", "banana"

- List là kiểu dữ liệu có thể biến đổi (mutable), bạn có thể sử dụng phương thức như append() để thêm phần tử vào List, hoặc sử dụng phương thức remove() để xóa các phần tử ra khỏi List mà không làm tạo ra thêm một thực thể 'List' khác trên bộ nhớ.

list1 = [1990, 1991, 1992]

print ("list1: ", list1)

# Địa chỉ của list1 trên bộ nhớ.
list1Address = hex ( id(list1) )

print ("Address of list1: ", list1Address )

print ("\n")
print ("Append element 2001 to list1")

# Nối (append) một phần tử vào list1.
list1.append(2001)

print ("list1 (After append): ", list1)

# Địa chỉ của list1 trên bộ nhớ.
list1Address = hex ( id(list1) )

print ("Address of list1 (After append): ", list1Address )

- Tuple là một đối tượng bất biến (immutable), nó không có các phương thức append(), remove(),.. như list. Một số phương thức, hoặc toán tử mà bạn nghĩ rằng nó dùng để cập nhập Tuple, nhưng không phải vậy, nó dựa trên Tuple ban đầu để tạo ra một Tuple mới.

tuple1 = (1990, 1991, 1992)

# Địa chỉ của tuple1 trên bộ nhớ.
tuple1Address = hex ( id(tuple1) )

print ("Address of tuple1: ", tuple1Address )

# Nối một tuple vào tuple1.
tuple1 = tuple1 + (2001, 2002)

# Địa chỉ của tuple1 trên bộ nhớ.
tuple1Address = hex ( id(tuple1) )

print ("Address of tuple1 (After concat): ", tuple1Address )
2. Truy cập các phần tử của Tuples

- Sử dụng vòng lặp for để truy cập vào các phần tử của Tuple:

fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")

for fruit in fruits :
	print ("Fruit: ", fruit)

- Truy cập thông qua chỉ số (index):

Bạn cũng có thể truy cập vào các phần tử của Tuple thông qua chỉ số. Các phần tử của Tuple được đánh chỉ chỉ từ trái sang phải, bắt đầu từ 0.

fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")

print ( fruits )

# Số phần tử.
print ("Element count: ", len(fruits) )


for i in range (0, len(fruits) ) :
	print ("Element at ", i, "= ", fruits[i] )

# Một Tuple con chứa các phần tử từ index 1 đến 4 (1, 2, 3)
subTuple = fruits[1: 4]

# ('apricot', 'banana', 'coconut')
print ("Sub Tuple [1:4] ", subTuple )

Bạn cũng có thể truy cập vào các phần tử của Tuple theo chỉ số âm (Negative index), các phần tử được đánh chỉ số từ phải sang trái với các giá trị -1, -2, ...

fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")

print ( fruits )

print ("Element count: ", len(fruits) )

print ("fruits[-1]: ", fruits[-1])
print ("fruits[-2]: ", fruits[-2])

subTuple1 = fruits[-4: ]

print ("\n")
print ("Sub Tuple fruits[-4: ] ")
print (subTuple1)

subTuple2 = fruits[-4:-2]

print ("\n")
print ("Sub Tuple fruits[-4:-2] ")
print (subTuple2)
3. Cập nhập Tuples

Chú ý rằng Tuple là bất biến (immutable), vì vậy nó chỉ có các phương thức hoặc toán tử để truy cập, hoặc tạo ra một Tuple mới từ các Tuple ban đầu.

tuple1 = (1990, 1991, 1992)

print ("tuple1: ", tuple1)

print ("Concat (2001, 2002) to tuple1")

tuple2 = tuple1 + (2001, 2002)

print ("tuple2: ", tuple2)

# Một Tuple con, chứa các phần tử từ chỉ số 1 đến 4 (1,2,3)
tuple3 = tuple2[1:4]

print ("tuple2[1:4]: ", tuple3)

# Một Tuple con, chứa các phần tử từ chỉ số 1 đến cuối.
tuple4 = tuple2[1: ]

print ("tuple2[1: ]: ", tuple4)