Câu lệnh print(12+8) sẽ in ra kết quả là gì

Vòng lặp là gì?

Vòng lặp cho phép bạn lặp lại việc thực thi một khối mã nguồn cho tới khi một điều kiện nhất định được thỏa mãn. Vòng lặp được sử dụng khá phổ biến trong lập trình. Không giống các ngôn ngữ lập trình khác với các vòng lặp khác nhau như for, while, do…while…, Python chỉ hỗ trợ vòng lặp for và vòng lặp while.

Vòng lặp for là gì?

Vòng lặp for được sử dụng để duyệt qua các phần tử trong một tập hợp. Nó thường được sử dụng khi bạn có một khối mã nguồn cần được thực thi “n” lần.

Vòng lặp While là gì?

Vòng lặp While được sử dụng để lặp lại một khối mã nguồn. Thay vì chỉ chạy khối mã nguồn một lần, nó sẽ thực thi khối mã nguồn đó nhiều lần cho tới khi thỏa mãn một điều kiện cho trước.

Trong bài này, chúng ta sẽ tìm hiểu:

  • Cách sử dụng "vòng lặp while"

  • Cách sử dụng "vòng lặp for"

  • Cách sử dụng vòng lặp for cho các tập hợp không phải số

  • Câu lệnh break trong vòng lặp for

  • Câu lệnh continue trong vòng lặp for

  • Hàm enumerate trong vòng lặp for

  • Ví dụ thực tế

  • Cách sử dụng vòng lặp for để thực hiện một câu lệnh nhiều lần

Cách sử dụng "vòng lặp while"

Cách vòng lặp while thực hiện giống hệt với cách làm việc của câu lệnh if, nhưng thay vì chỉ chạy khối mã nguồn một lần, vòng lặp while sẽ quay lại và lặp lại việc thực hiện khối mã nguồn từ đầu.

Cú pháp

while biểu_thức: câu_lệnh

Ví dụ:

# # Example file for working with loops # def main(): x=0 #define a while loop while(x <4): print(x) x = x+1 if __name__ == "__main__": main()
  • Dòng lệnh 4: Biến x được gán giá trị 0

  • Dòng lệnh 7: Vòng lặp kiểm tra điều kiện x<4. Giá trị hiện tại của x là 0. Điều kiện là đúng. Chương trình thực hiện đoạn mã trong vòng lặp while.

  • Dòng lệnh số 8: Giá trị của x được in ra

  • Dòng lệnh 9: x được tăng thêm 1. Chương trình quay trở lại dòng 7. Bây giờ giá trị của x là 1 nhỏ hơn 4. Điều kiện là đúng và một lần nữa vòng lặp while được thực thi. Điều này tiếp tục cho đến khi x tăng lên tới giá trị 4 và điều kiện while trở thành sai.

Cách sử dụng “vòng lặp for”

Trong Python, “vòng lặp for” được gọi là biến lặp (iterator).

Cũng giống như vòng lặp while, "vòng lặp for" cũng được sử dụng để lặp lại chương trình.

Nhưng không giống như vòng lặp while phụ thuộc vào điều kiện đúng hay sai. "Vòng lặp For" phụ thuộc vào các phần tử mà nó phải duyệt qua.

Ví dụ:

# # Example file for working with loops # def main(): x=0 #Define a for loop for x in range(2,7): print(x) if __name__ == "__main__": main()

Vòng lặp for lặp với các số được khai báo trong một khoảng.

Ví dụ,

Vòng lặp for lặp với x trong khoảng (2,7)

Khi đoạn mã này được thực thi, nó sẽ in số nằm giữa 2 và 7 (2,3,4,5,6). Đoạn mã trên sẽ không duyệt tới số 7.

Vòng lặp for cũng có thể được sử dụng cho một tập các kiểu dữ liệu khác, chứ không chỉ có số. Chúng ta sẽ tìm hiểu trong mục tiếp theo.

Cách sử dụng vòng lặp for cho chuỗi

Trong bước này, chúng ta sẽ thấy "vòng lặp for" cũng có thể được sử dụng cho những kiểu dữ liệu khác ngoài số.

Ví dụ :

def main(): #use a for loop over a collection Months = ["Jan","Feb","Mar","April","May","June"] for m in Months: print(m) if __name__ == "__main__": main()
  • Dòng lệnh 3: Chúng ta lưu trữ các tháng ("Jan, Feb , Mar,April,May,June") trong biến Months.

  • Dòng lệnh 4: Vòng lặp for sẽ duyệt từng giá trị trong biến Months. Giá trị hiện tại của Months được lưu trong biến m.

  • Dòng lệnh 5: In ra tháng.

Cách sử dụng câu lệnh break trong vòng lặp for

Break là hàm duy nhất trong vòng lặp for cho phép bạn ngắt hoặc chấm dứt việc thực hiện vòng lặp for.

Ví dụ:

def main(): # use the break and continue statements for x in range (10,20): if (x == 15): break print(x) if __name__ == "__main__": main()

Trong ví dụ này, chúng ta đã khai báo các số từ 10-20, nhưng chúng ta muốn vòng lặp for của chúng ta chấm dứt ở số 15 và không tiếp tục thực thi nữa. Vì vậy, chúng ta khai báo hàm break bằng cách định nghĩa (x == 15): break, sau đó, ngay khi chạy tới giá trị 15, chương trình sẽ được ngắt.

  • Dòng lệnh 10 khai báo biến x trong khoảng (10, 20)

  • Dòng lệnh 11 khai báo điều kiện break tại x == 15,

  • Dòng lệnh 12 Kiểm tra và lặp lại các bước cho đến khi đạt đến giá trị 15

  • Dòng lệnh 13 In ra kết quả

Cách sử dụng “câu lệnh continue” trong vòng lặp for

Lệnh continue sẽ khiến việc lặp không thực thi ở vị trí lặp hiện tại, NHƯNG sẽ tiếp tục thực hiện các vòng lặp sau đó.

Ví dụ

def main(): for x in range (10,20): if (x % 5 == 0) : continue print(x) if __name__ == "__main__": main()

Câu lệnh continue có thể được sử dụng trong vòng lặp for khi bạn muốn lấy ra một giá trị cụ thể từ danh sách.

Trong ví dụ này, chúng ta đã khai báo giá trị trong khoảng 10-20, nhưng trong các số này, chúng ta chỉ muốn những số KHÔNG chia hết cho 5 hoặc nói cách khác là những số chia cho 5 có số dư khác 0.

Vì vậy, trong khoảng giá trị cho trước (10, 11, 12,…19, 20) chỉ có 3 số (10,15,20) bị loại bỏ do chúng chia hết cho 5, các số còn lại thì không.

Vì vậy, với giá trị x bằng 10, 15 hoặc 20, vòng lặp for sẽ không tiếp tục chạy lệnh in ra x mà bỏ qua giá trị x tại các giá trị đó.

  • Dòng lệnh 10 Khai báo biến x trong khoảng (10, 20)

  • Dòng lệnh 12 Kiểm tra nếu số dư của phép chia x cho 5. Nếu bằng 0 thì tiếp tục sang vòng lặp tiếp theo (chứ không chạy lệnh print(x)).

  • Dòng lệnh 13 In ra kết quả

Cách sử dụng hàm "enumerate" cho "vòng lặp For"

Hàm enumerate trong “vòng lặp for” thực hiện hai điều:

  • Nó trả về giá trị chỉ số cho các phần tử

  • Và phần tử trong tập đang được xét.

Ví dụ:

Hàm enumerate được sử dụng để đánh số hoặc gán chỉ số cho các phần tử trong danh sách.

Giả sử, chúng ta muốn thực hiện đánh số cho các tháng (tháng 1, tháng 2, tháng 3, tháng 6), chúng ta có thể khai báo biến i để gán giá trị chỉ số, và biến m để gán giá trị tháng trong danh sách.

def main(): #use a for loop over a collection Months = ["Jan","Feb","Mar","April","May","June"] for i, m in enumerate (Months): print(i,m) if __name__ == "__main__": main()

Khi chương trình được thực thi, đầu ra của hàm enumerate trả về tên tháng với chỉ số của tháng trong danh sách như (0-Jan), (1- Feb), (2 – Mar), v.v.

  • Dòng lệnh 3 khai báo danh sách tháng [Jan, Feb…June].

  • Dòng lệnh 4 Khai báo biến i và m cho vòng lặp for.

  • Dòng lệnh 5 sẽ in ra kết quả và quay lại thực hiện mã nguồn trong vòng lặp For đối với các giá trị tháng còn lại.

Ví dụ thực tế

Cùng xem ví dụ khác về cách vòng lặp for lặp lại việc thực hiện các câu lệnh:

  Vòng lặp Python

Mã nguồn

  Mã nguồn cho vòng lặp while

def main(): x = 0 while (x < 4): print(x) x = x + 1 if __name__ == "__main__": main()

  Ví dụ đơn giản với vòng lặp For

def main(): x=0 for x in range (2,7): print(x) if __name__== "__main__": main()

  Sử dụng vòng lặp for với chuỗi

def main(): Months = ["Jan", "Feb", "Mar", "April", "May", "June"] for m in (Months): print(m) if __name__ == "__main__": main()

  Sử dụng câu lệnh break trong vòng lặp for

def main(): for x in range(10, 20): if (x == 15): break print(x) if __name__ == "__main__": main()

  Sử dụng câu lệnh continue trong vòng lặp for

def main(): for x in range(10, 20): if (x % 5 == 0): continue print(x) if __name__ == "__main__": main()

  Mã nguồn sử dụng “enumerate” với “ vòng lặp for”

def main(): Months = ["Jan", "Feb", "Mar", "April", "May", "June"] for i, m in enumerate(Months): print(i, m) if __name__ == "__main__": main()

Cách sử dụng vòng lặp for để lặp lại cùng một câu lệnh

Bạn có thể sử dụng vòng lặp để lặp đi lặp lại cùng một câu lệnh. Trong ví dụ sau, chúng ta sẽ in ra từ "guru99" ba lần.

Ví dụ: Để lặp lại cùng một câu lệnh nhiều lần, chúng ta khai báo các số trong biến i (i in 123). Và khi bạn chạy đoạn mã nguồn dưới đây, nó sẽ in ra (guru99) bằng với sô các số được khai báo trong biến (i in 123).

for i in '123': print("vimentor {}".format(i))

Giống như các ngôn ngữ lập trình khác, Python cũng cho phép nhiều dạng vòng lặp nhưng thay vì sử dụng một loạt các vòng lặp khác nhau, nó bị giới hạn với chỉ hai vòng lặp "vòng lặp while" và "vòng lặp for".

  • Vòng lặp while được thực thi dựa trên việc câu lệnh điều kiện đưa ra là đúng hay sai.

  • Vòng lặp for được gọi là biến lặp, nó sẽ duyệt các phần tử dựa trên tập điều kiện cho trước.

  • Vòng lặp for trong Python cũng có thể sử dụng với nhiều kiểu dữ liệu khác nhau(cần đưa ra tập các phần tử chúng ta muốn duyệt).

  • Break được sử dụng trong vòng lặp for để dừng hay thoát khỏi chương trình tại bất cứ điểm nào.

  • Câu lệnh continue sẽ tiếp tục quá trình lặp và in ra kết quả dựa trên tập điều kiện cho trước.

  • Hàm enumerate trong “vòng lặp for” trả về phần tử của tập mà chúng ta đang làm việc cùng với giá trị chỉ số.

Ví dụ sử dụng Python 2

Mã nguồn sử dụng ở trên đều dùng Python3, nếu bạn muốn dùng Python2, hãy xem đoạn mã dưới đây:

# How to use "While Loop" #Example file for working with loops # def main(): x=0 #define a while loop while(x <4): print x x = x+1 if __name__ == "__main__": main() #How to use "For Loop" #Example file for working with loops # def main(): x=0 #define a while loop # while(x <4): # print x # x = x+1 #Define a for loop for x in range(2,7): print x if __name__ == "__main__": main() #How to use For Loop for String def main(): #use a for loop over a collection Months = ["Jan","Feb","Mar","April","May","June"] for m in Months: print m if __name__ == "__main__": main() #How to use break statements in For Loop def main(): #use a for loop over a collection #Months = ["Jan","Feb","Mar","April","May","June"] #for m in Months: #print m # use the break and continue statements for x in range (10,20): if (x == 15): break #if (x % 2 == 0) : continue print x if __name__ == "__main__": main() #How to use "continue statement" in For Loop def main(): #use a for loop over a collection #Months = ["Jan","Feb","Mar","April","May","June"] #for m in Months: #print m # use the break and continue statements for x in range (10,20): #if (x == 15): break if (x % 5 == 0) : continue print x if __name__ == "__main__": main() #How to use "enumerate" function for "For Loop" def main(): #use a for loop over a collection Months = ["Jan","Feb","Mar","April","May","June"] for i, m in enumerate (Months): print i,m # use the break and continue statements #for x in range (10,20): #if (x == 15): break #if (x % 5 == 0) : continue #print x if __name__ == "__main__": main()

Page 2

Thế nào là một lớp?

Một lớp là một nhóm logic của dữ liệu và phương thức. Nó cho phép tự do tạo các cấu trúc dữ liệu chứa nội dung tùy ý và qua đó khiến việc truy cập dễ dàng hơn.

Ví dụ: Khi nhân viên ngân hàng muốn tìm hiểu chi tiết khách hàng trực tuyến sẽ chuyển đến lớp khách hàng, trong đó tất cả các thuộc tính của khách hàng như chi tiết giao dịch, chi tiết rút tiền và tiền gửi, nợ tồn đọng, v.v. sẽ được liệt kê ra.

Trong bài này, chúng ta sẽ tìm hiểu:

  • Cách định nghĩa lớp trong Python

  • Cách hoạt động của kế thừa

  • Hàm khởi tạo trong Python

Cách định nghĩa lớp Python

Để định nghĩa lớp, bạn cần chú ý những điểm sau:

Bước 1) Trong Python, các lớp được xác định bởi từ khóa "Class"

class myClass():

Bước 2) Bên trong các lớp, bạn có thể định nghĩa hàm hoặc phương thức thuộc lớp đó

def method1 (self): print "Guru99" def method2 (self,someString): print "Software Testing:" + someString
  • Ở đây chúng ta đã định nghĩa method1 sẽ in ra "Guru99."

  • Một phương thức khác mà chúng ta đã xác định là method2 sẽ in ra "Software Testing" + someString. Trong đó someString là biến được cung cấp ở lời gọi hàm.

Bước 3) Mọi thứ trong một lớp đều được thụt lề, giống như mã trong hàm, vòng lặp, câu lệnh if, v.v. Những lệnh không được thụt lề đều không nằm trong lớp

LƯU Ý: Về việc sử dụng "self" trong Python

  • Đối số self dùng để chỉ tới chính bản thân đối tượng. Đó là lý do từ “self – bản thân” được sử dụng. Vì vậy trong phương thức này, self sẽ trỏ tới thực thể của đối tượng mà ta đang thao tác trên đó.

  • Self là tên được quy ước bởi Pythons để chỉ ra tham số đầu tiên của các phương thức trong lớp. Nó là một phần cú pháp trong Python được sử dụng để truy cập vào thành viên của đối tượng.

Bước 4) Để tạo một đối tượng của lớp

c = myClass()

Bước 5) Để gọi một phương thức trong một lớp

c.method1 () c.method2 ("Testing is fun")
  • Lưu ý rằng khi chúng ta gọi method1 hoặc method2, chúng ta không phải cung cấp từ khóa self. Điều này được tự động thực hiện khi chạy Python.

  • Khi Python chạy, giá trị “self” sẽ tự động được truyền vào phương thức của lớp dù bạn có chủ động truyền nó vào hay không.

  • Bạn chỉ cần quan tâm tới các đối số khác self.

Bước 6) Đây là đoạn mã hoàn chỉnh

# Example file for working with classes class myClass(): def method1(self): print("Guru99") def method2(self,someString): print("Software Testing:" + someString) def main(): # exercise the class methods c = myClass () c.method1() c.method2(" Testing is fun") if __name__== "__main__": main()

Cách thức hoạt động của kế thừa

Kế thừa là một tính năng được sử dụng trong lập trình hướng đối tượng; nó liên quan tới việc khai báo một lớp mới mà không cần thay đổi hoặc thay đổi rất ít so với lớp hiện có. Lớp mới được gọi là lớp kế thừa và lớp mà nó kế thừa được gọi là lớp cơ sở. Python hỗ trợ kế thừa; nó cũng hỗ trợ đa kế thừa. Một lớp kế thừa các thuộc tính và phương thức hành vi từ một lớp khác gọi là lớp con hoặc lớp thừa kế.

Cú pháp kế thừa trong Python

class DerivedClass(BaseClass): body_of_derived_class

Bước 1) Chạy đoạn mã sau

# Example file for working with classes class myClass(): def method1(self): print("Guru99") class childClass(myClass): #def method1(self): #myClass.method1(self); #print ("childClass Method1") def method2(self): print("childClass method2") def main(): # exercise the class methods c2 = childClass() c2.method1() #c2.method2() if __name__== "__main__": main()

Lưu ý rằng trong childClass, method1 không được định nghĩa, nhưng được kế thừa từ lớp cha myClass. Đầu ra vẫn là “Guru99”.

Bước 2) Xóa dấu chú thích # ở dòng 8 & 10 sau đó chạy đoạn mã.

Bây giờ, method1 được định nghĩa trong childClass và kết quả "childClass Method1" được hiển thị chính xác.

Bước 3) Xóa dấu chú thích # ở dòng 9 sau đó chạy đoạn mã.

Bạn có thể gọi phương thức của lớp cha bằng cách sử dụng cú pháp:

ParentClassName.MethodName(self)

Trong trường hợp này, chúng ta gọi: myClass.method1(self) và giá trị Guru99 được in ra như mong muốn.

Bước 4) Xóa dấu chú thích # ở dòng 19 và chạy đoạn mã.

Phương thức 2 của lớp con được gọi và "childClass method2" được in ra như mong muốn.

Hàm khởi tạo trong Python

Hàm khởi tạo là một phương thức thuộc lớp giúp khởi tạo đối tượng với giá trị cho trước.

Nó bắt đầu bằng hai dấu gạch dưới (_). Nó là phương thức __init __()

Trong ví dụ dưới đây, chúng ta gán tên của người dùng bằng cách sử dụng hàm tạo.

class User: name = "" def __init__(self, name): self.name = name def sayHello(self): print("Welcome to Guru99, " + self.name) User1 = User("Alex") User1.sayHello()

Đầu ra sẽ là:

Welcome to Guru99, Alex

Ví dụ sử dụng Python 2

Các đoạn mã nguồn ở trên sử dụng Python3, nếu muốn sử dụng Python2, hãy xem đoạn mã dưới đây:

# How to define Python classes # Example file for working with classes class myClass(): def method1(self): print "Guru99" def method2(self,someString): print "Software Testing:" + someString def main(): # exercise the class methods c = myClass () c.method1() c.method2(" Testing is fun") if __name__== "__main__": main() #How Inheritance works # Example file for working with classes class myClass(): def method1(self): print "Guru99" class childClass(myClass): #def method1(self): #myClass.method1(self); #print "childClass Method1" def method2(self): print "childClass method2" def main(): # exercise the class methods c2 = childClass() c2.method1() #c2.method2() if __name__== "__main__": main()

Tổng kết

"Lớp" là một nhóm logic các phương thức và dữ liệu. Lớp trong Python cung cấp tất cả các tính năng tiêu chuẩn của lập trình hướng đối tượng.

  • Cơ chế kế thừa lớp

  • Một lớp kế thừa có thể ghi đè bất kỳ phương thức nào thuộc lớp cơ sở

  • Một phương thức có thể gọi phương thức của lớp cơ sở có cùng tên

  • Lớp trong Python được định nghĩa bởi chính từ khóa “class”

  • Bên trong các lớp, bạn có thể định nghĩa các hàm hoặc phương thức và chúng là một phần thuộc lớp đó.

  • Các câu lệnh trong lớp cần được thụt lề, giống như mã nguồn trong hàm, vòng lặp, câu lệnh if, v.v.

  • Đối số self dùng để chỉ tới chính bản thân đối tượng. Self là tên được quy ước bởi Pythons để chỉ ra tham số đầu tiên của của các phương thức trong lớp.

  • Khi chạy Python, giá trị “self” sẽ được truyền vào tự động khi bạn gọi một phương thức từ đối tượng, dù cho bạn có chủ động cung cấp nó hay không.

  • Trong Python, một lớp có thể kế thừa các thuộc tính và phương thức hành vi từ một lớp khác và nó được gọi là lớp con hoặc lớp thừa kế.

Page 3

JSON là gì?

JSON là một định dạng chuẩn để trao đổi dữ liệu, được lấy cảm hứng từ JavaScript. Về cơ bản, JSON ở dạng chuỗi hoặc văn bản. JSON là viết tắt của Java Script Object Notation.

Cú pháp của JSON: JSON được viết dưới dạng cặp khóa và giá trị.

{     "Key1": "Value1",     "Key2": "Value2", }

JSON rất giống với kiểu dữ liệu từ điển trong Python. Python hỗ trợ JSON và nó có một thư viện sẵn có dưới dạng JSON.

Thư viện JSON trong Python

Các mô-đun bên ngoài 'marshal''pickle' của Python duy trì một phiên bản của thư viện JSON. Để thực hiện các thao tác liên quan đến JSON như mã hóa và giải mã trong Python, trước tiên bạn cần nạp thư viện JSON trong tệp .py của bạn,

import json

Các phương thức sau đây có sẵn trong mô-đun JSON

  Phương thức

Miêu tả

  dumps()

Mã hóa thành các đối tượng JSON

  dump()

Mã hóa chuỗi được ghi trong tệp

  loads()

Giải mã chuỗi JSON

  load()

Giải mã trong khi đọc tệp JSON


Trong bài này, bạn sẽ tìm hiểu về:

  • JSON là gì?

  • Thư viện JSON trong Python

  • Python sang JSON (Mã hóa)

  • JSON sang Python (Giải mã)

    • Giải mã tệp JSON hoặc phân tích tệp JSON trong Python

    • Mã hóa tối giản trong Python

    • Định dạng mã JSON (giúp in ra đẹp hơn)

  • Mã hóa đối tượng phức trong Python

  • Giải mã đối tượng JSON phức tạp trong Python

  • Tổng quan về lớp tuần tự hóa (serialization) JSON

  • Tổng quan về lớp giải mã (deserialization) JSON

    • Giải mã dữ liệu JSON từ URL: Ví dụ thực tế.

  • Các ngoại lệ liên quan đến thư viện JSON trong Python

  • Số vô hạn và số NaN trong Python

  • Khóa lặp lại trong Chuỗi JSON

  • CLI (Giao diện dòng lệnh) với JSON trong Python

  • Ưu điểm của JSON trong Python

  • Hạn chế trong việc triển khai JSON trong Python

  • Mã cheat

Python sang JSON (Mã hóa)

Theo mặc định, thư viện Python thực hiện dịch các đối tượng Python thành các đối tượng JSON

  Python

JSON

  Từ điển (dict)

Đối tượng

  Danh sách (list)

Mảng

  unicode

Chuỗi

  Số-int,long

số - số nguyên

  float

số - số thực

  True

True

  False

False

  None

NULL

Chuyển đổi dữ liệu Python thành JSON được gọi là thao tác mã hóa. Mã hóa được thực hiện với sự trợ giúp của phương thức từ thư viện JSON - dumps()

Phương thức dumps() chuyển đổi đối tượng từ điển của python thành định dạng dữ liệu dạng chuỗi JSON.

Giờ cùng xem ví dụ mã hóa đầu tiên:

import json x = { "name": "Ken", "age": 45, "married": True, "children": ("Alice","Bob"), "pets": ['Dog'], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ] } # sorting result in asscending order by keys: sorted_string = json.dumps(x, indent=4, sort_keys=True) print(sorted_string)

Đầu ra:

{"person": {"name": "Kenn", "sex": "male", "age": 28}})

Hãy tạo một tệp JSON từ từ điển trên bằng cách sử dụng hàm dump()

# here we create new data_file.json file with write mode using file i/o operation with open('json_file.json', "w") as file_write: # write json data into file json.dump(person_data, file_write)

Đầu ra:

Không có gì để hiển thị…Bạn có thể kiểm tra tệp json_file.json được tạo ra trên hệ thống của mình.

JSON sang Python (Giải mã)

Đọc chuỗi JSON được thực hiện với sự trợ giúp của phương thức dựng sẵn loads() & load() của thư viện JSON trong Python. Bảng dịch dưới đây đưa ra các ví dụ về cách chuyển đổi đối tượng JSON sang đối tượng trong Python, điều này rất hữu ích trong trường hợp bạn muốn giải mã chuỗi JSON sang Python.

  JSON

Python

  Đối tượng

Từ điển (dict)

  Mảng

list (danh sách)

  Chuỗi

Unicode

  số - số nguyên (int)

số - int, long

  số -số thực (real)

float

  True

True

  False

False

  NULL

NULL

Chúng ta hãy xem một ví dụ cơ bản về việc đọc JSON trong Python với sự trợ giúp của hàm json.loads() ,

import json # json library imported # json data string person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}' # Decoding or converting JSON format in dictionary using loads() dict_obj = json.loads(person_data) print(dict_obj) # check type of dict_obj print("Type of dict_obj", type(dict_obj)) # get human object details print("Person......", dict_obj.get('person'))

Đầu ra:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}} Type of dict_obj <class 'dict'> Person...... {'name': 'John', 'sex': 'male'}


Giải mã tệp JSON hoặc phân tách tệp JSON trong Python

LƯU Ý: Giải mã tệp JSON là thao tác liên quan tới nhập/xuất tệp. Tệp JSON phải tồn tại trên hệ thống ở vị trí mà bạn khai báo trong chương trình.

Ví dụ,

import json #File I/O Open function for read data from JSON File with open('X:/json_file.json') as file_object: # store file data in object data = json.load(file_object) print(data)

Ở đây dữ liệu là một đối tượng từ điển của Python.

Đầu ra:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}


Mã hóa tối giản trong Python

Khi bạn cần giảm kích thước tệp JSON của mình, bạn có thể sử dụng mã hóa tối giản trong Python.

Ví dụ

import json # Create a List that contains dictionary lst = ['a', 'b', 'c',{'4': 5, '6': 7}] # separator used for compact representation of JSON. # Use of ',' to identify list items # Use of ':' to identify key and value in dictionary compact_obj = json.dumps(lst, separators=(',', ':')) print(compact_obj)

Đầu ra:

'["a", "b", "c", {"4": 5, "6": 7}]'

Định dạng mã JSON (giúp in ra dễ nhìn hơn)

  • Mục đích là để viết những đoạn mã được định dạng rõ ràng, giúp người đọc dễ hiểu. Cùng với sự trợ giúp của việc in đẹp mắt, bất cứ ai cũng có thể dễ dàng đọc hiểu đoạn mã nguồn.

  • Ví dụ:

import json dic = { 'a': 4, 'b': 5 } ''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. ''' formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) print(formatted_obj)

Đầu ra:

{ "a": 4, "b": 5 }

Để hiểu rõ hơn, thay đổi thụt lề thành 40 và quan sát đầu ra

Sắp xếp mã JSON

Thuộc tính sort_keys trong đối số của hàm dumps () sẽ sắp xếp khóa trong JSON theo thứ tự tăng dần. Đối số sort_keys là một thuộc tính kiểu Boolean. Quá trình sắp xếp được thực hiện nếu giá trị được đặt là True, và ngược lại.

Ví dụ

mport json x = { "name": "Ken", "age": 45, "married": True, "children": ("Alice", "Bob"), "pets": [ 'Dog' ], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ], } # sorting result in asscending order by keys: sorted_string = json.dumps(x, indent=4, sort_keys=True) print(sorted_string)

Đầu ra:

{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob" ], "married": true, "name": "Ken", "pets": [ "Dog" ] }

Bạn có thể thấy các khóa age, cars, children…được sắp xếp theo thứ tự tăng dần.

Mã hóa đối tượng phức trong Python

Một đối tượng phức có hai phần khác nhau đó là

Ví dụ: 3 + 2i

Trước khi thực hiện mã hóa một đối tượng phức, bạn cần kiểm tra xem liệu biến đó có phải là đối tượng phức hay không. Bạn cần tạo một hàm kiểm tra giá trị lưu trong biến bằng cách dùng hàm kiểm tra đối tượng.

Cùng viết một hàm để kiểm tra xem đối tượng có phải là phức hoặc phù hợp để mã hóa hay không.

mport json # create function to check instance is complex or not def complex_encode(object): # check using isinstance method if isinstance(object, complex): return [object.real, object.imag] # raised error using exception handling if object is not complex raise TypeError(repr(object) + " is not JSON serialized") # perform json encoding by passing parameter complex_obj = json.dumps(4 + 5j, default=complex_encode) print(complex_obj)

Đầu ra:

'[4.0, 5.0]'

Giải mã đối tượng JSON phức trong Python

Để giải mã đối tượng phức trong JSON, hãy sử dụng tham số object_hook để kiểm tra chuỗi JSON có chứa đối tượng phức hay không. Ví dụ,

import json # function check JSON string contains complex object def is_complex(objct): if '__complex__' in objct: return complex(objct['real'], objct['img']) return objct # use of json loads method with object_hook for check object complex or not complex_object =json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex) #here we not passed complex object so it's convert into dictionary simple_object =json.loads('{"real": 6, "img": 7}', object_hook = is_complex) print("Complex_object......",complex_object) print("Without_complex_object......",simple_object)

Đầu ra:
 

Complex_object...... (4+5j) Without_complex_object...... {'real': 6, 'img': 7}

Tổng quan về lớp tuần tự hóa (Serialization) JSON

Lớp JSONEncoder được sử dụng để tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện mã hóa. Nó chứa ba phương thức mã hóa khác nhau

  • default(o) - Được triển khai trong lớp con và trả về đối tượng tuần tự cho đối tượng o.

  • encode(o) - Giống như phương thức json.dumps (), nó trả về chuỗi JSON của cấu trúc dữ liệu Python.

  • iterencode(o) – Biểu diễn từng chuỗi một và mã hóa đối tượng o.

Với sự trợ giúp của phương thức encode() thuộc lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào.

# import JSONEncoder class from json from json.encoder import JSONEncoder colour_dict = { "colour": ["red", "yellow", "green" ]} # directly called encode method of JSON JSONEncoder().encode(colour_dict)

Đầu ra:

'{"colour": ["red", "yellow", "green"]}'

Tổng quan về lớp giải mã (deserialization) JSON

Lớp JSONDecoder được sử dụng để giải mã tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện giải mã. Nó chứa ba phương pháp giải mã khác nhau

  • default (o) - Được triển khai trong lớp con và trả về đối tượng giải mã.

  • decode (o) - Giống như phương thức json.loads(), nó trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON.

  • raw_decode (o) – Biểu diễn từng từ điển Python và giải mã đối tượng o.

Với sự trợ giúp của phương thức decode () của lớp JSONDecoder, chúng ta cũng có thể giải mã chuỗi JSON.

import json # import JSONDecoder class from json from json.decoder import JSONDecoder colour_string = '{ "colour": ["red", "yellow"]}' # directly called decode method of JSON JSONDecoder().decode(colour_string)

Đầu ra:

{'colour': ['red', 'yellow']}

Giải mã dữ liệu JSON từ URL: Ví dụ thực tế

Chúng ta sẽ lấy dữ liệu của CityBike NYC (Hệ thống chia sẻ xe đạp) từ URL sau ( //feeds.citibikenyc.com/stations/stations.json ) và chuyển đổi sang định dạng từ điển.

Ví dụ

LƯU Ý: - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, nếu không hãy mở cửa sổ dòng lệnh hoặc CMD và gõ

(Đối với Python 3 trở lên) pip3 install requests

import json import requests # get JSON string data from CityBike NYC using web requests library json_response= requests.get("//feeds.citibikenyc.com/stations/stations.json") # check type of json_response object print(type(json_response.text)) # load data in loads() function of json library bike_dict = json.loads(json_response.text) #check type of news_dict print(type(bike_dict)) # now get stationBeanList key data from dict print(bike_dict['stationBeanList'][0])

Đầu ra:

<class 'str'> <class 'dict'> { 'id': 487, 'stationName': 'E 20 St & FDR Drive', 'availableDocks': 24, 'totalDocks': 34, 'latitude': 40.73314259, 'longitude': -73.97573881, 'statusValue': 'In Service', 'statusKey': 1, 'availableBikes': 9, 'stAddress1': 'E 20 St & FDR Drive', 'stAddress2': '', 'city': '', }

Các ngoại lệ liên quan đến thư viện JSON trong Python

  • Lớp json.JSONDecoderError xử lý ngoại lệ liên quan đến hoạt động giải mã, và nó là một lớp con của ValueError.

  • Ngoại lệ - json.JSONDecoderError (msg, doc)

  • Các tham số của ngoại lệ là,

    • msg - Thông báo lỗi chưa được định dạng

    • doc - Tài liệu JSON được phân tích cú pháp

    • pos - chỉ số bắt đầu của doc khi nó thất bại

    • lineno – số dòng thể hiện tương ứng với pos

    • colon – số cột thể hiện tương ứng với pos

Ví dụ,

import json #File I/O Open function for read data from JSON File data = {} #Define Empty Dictionary Object try: with open('json_file_name.json') as file_object: data = json.load(file_object) except ValueError: print("Bad JSON file format, Change JSON File")

Số vô hạn và số NaN trong Python

Định dạng trao đổi dữ liệu JSON (RFC - Yêu cầu nhận xét) không cho phép giá trị vô hạn hoặc giá trị NaN nhưng thư viện JSON của Python không có hạn chế nào đối với việc này. Nếu JSON nhận được kiểu dữ liệu vô hạn và NanN thì nó sẽ chuyển đổi sang dạng chữ.

Ví dụ,

import json # pass float Infinite value infinite_json = json.dumps(float('inf')) # check infinite json type print(infinite_json) print(type(infinite_json)) json_nan = json.dumps(float('nan')) print(json_nan) # pass json_string as Infinity infinite = json.loads('Infinity') print(infinite) # check type of Infinity print(type(infinite))

Đầu ra:

Infinity <class 'str'> NaN inf <class 'float'>

Khóa lặp lại trong chuỗi JSON

RFC chỉ định tên khóa phải là duy nhất trong một đối tượng JSON, nhưng nó không bắt buộc. Thư viện Python JSON không đưa ra ngoại lệ đối với các đối tượng lặp lại trong JSON. Nó bỏ qua tất cả các cặp khóa-giá trị lặp lại và chỉ xem xét cặp khóa-giá trị cuối cùng trong số chúng.

Ví dụ,

import json repeat_pair = '{"a": 1, "a": 2, "a": 3}' json.loads(repeat_pair)

Đầu ra:

{'a': 3}

CLI (Giao diện dòng lệnh) với JSON trong Python

json.tool cung cấp giao diện dòng lệnh để xác thực cú pháp trong JSON. Hãy xem ví dụ về CLI

$ echo '{"name": "Kings Authur"}' | python3 -m json.tool

Đầu ra:
 

{ "name": " Kings Authur " }

Ưu điểm của JSON trong Python

  • Dễ dàng trao đổi giữa vùng chứa và giá trị (JSON sang Python và Python sang JSON)

  • Đối tượng JSON có thể đọc được

  • Được sử dụng rộng rãi trong xử lý dữ liệu.

  • Không có cùng cấu trúc dữ liệu trong một tệp.

Hạn chế trong việc triển khai JSON trong Python

  • Trong phạm vi giải mã JSON và dự đoán một số

  • Độ dài tối đa của chuỗi JSON và các mảng của JSON và các mức lồng nhau của đối tượng.

Mã Cheat

  json.dumps (person_data)

Tạo đối tượng JSON

  json.dump (person_data, file_write)

Tạo tệp JSON sử dụng nhập/xuất tệp của Python

  compact_obj = json.dumps(data, separators=(',',':'))

Tối giản đối tượng JSON bằng cách xóa ký tự khoảng trắng khỏi đối tượng JSON thông qua dấu phân cách

  formatted_obj = json.dumps (dic, indent = 4, separators = (',', ':'))

Định dạng mã JSON bằng cách sử dụng thụt lề

  sort_opes = json.dumps (x, indent = 4, sort_keys = True)

Sắp xếp khóa đối tượng JSON theo thứ tự bảng chữ cái

  complex_obj = json.dumps(4 + 5j, default=complex_encode)

Mã hóa đối tượng phức Python trong JSON

  JSONEncoder().encode(colour_dict)

Sử dụng lớp JSONEncoder để tuần tự hóa

  json.loads(data_stringi)

Giải mã chuỗi JSON trong từ điển Python bằng hàm json.loads ()

  json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex)

Giải mã đối tượng JSON phức thành Python

  JSONDecoder().decode(colour_string)

Sử dụng giải mã JSON trong Python

Page 4

Câu lệnh điều kiện là gì?

Câu lệnh điều kiện trong Python sẽ thực hiện việc tính toán hoặc hành động tùy thuộc vào giá trị biến ràng buộc Boolean là đúng hay sai. Câu lệnh điều kiện trong Python được thực thi bởi câu lệnh IF.

Trong bài này chúng ta sẽ học cách áp dụng câu lệnh điều kiện trong Python

  • Câu lệnh IF là gì? Sử dụng nó như thế nào?

  • Điều gì xảy ra khi “Điều kiện If” không được thỏa mãn?

  • Cách sử dụng “Điều kiện else”

  • Khi “điều kiện else” không hoạt động

  • Cách sử dụng điều kiện "elif"

  • Thực thi câu lệnh điều kiện với mã nguồn tối giản

  • Câu lệnh IF lồng nhau

  • Câu lệnh Switch

Câu lệnh IF là gì? Sử dụng nó như thế nào trong Python?

Trong Python, câu lệnh IF được sử dụng để đưa ra quyết định. Nó sẽ thực thi các câu lệnh trong thân chỉ khi điều kiện IF đưa ra là đúng.

Khi bạn muốn đảm bảo rằng điều kiện này là đúng trong khi điều kiện khác là sai, bạn có thể sử dụng “câu lệnh if”

Cú pháp:

if biểu_thức Câu_lệnh else Câu_lệnh

Cùng xem ví dụ sau:

# #Example file for working with conditional statement # def main(): x,y =2,8 if(x < y): st= "x is less than y" print(st) if __name__ == "__main__": main()  
  • Dòng lệnh 5: Chúng ta định nghĩa hai biến x, y = 2, 8

  • Dòng lệnh 7: Câu lệnh if kiểm tra điều kiện x <y, trong trường hợp này là đúng.

  • Dòng lệnh 8: Biến st được gán giá trị "x is less than y." (x nhỏ hơn y)

  • Dòng lệnh 9: Dòng lệnh print st in ra giá trị của biến st đó là "x is less than y",

Điều gì xảy ra khi “Điều kiện If” không được thỏa mãn?

Trong bước này, chúng ta sẽ cùng xem điều gì xảy ra khi điều kiện if không được thỏa mãn:

  • Dòng lệnh 5: Chúng ta định nghĩa hai biến x, y = 8, 4

  • Dòng lệnh 7: Câu lệnh if kiểm tra điều kiện x <y là sai trong trường hợp này

  • Dòng lệnh 8: Biến st KHÔNG được gán giá trị "x is less than y." (x nhỏ hơn y)

  • Dòng lệnh 9: Dòng lệnh print st - đang cố in giá trị của một biến chưa được khai báo. Do đó, chương trình trả về lỗi.

Cách sử dụng “Điều kiện else”

"Điều kiện else" thường được sử dụng khi bạn phải đánh giá một câu lệnh dựa trên các điều kiện khác. Nếu một điều kiện không được thỏa mãn, cần phải có một điều kiện khác để đánh giá câu lệnh hoặc tính logic.

Ví dụ :

# #Example file for working with conditional statement # def main(): x,y =8,4 if(x < y): st= "x is less than y" else: st= "x is greater than y" print (st) if __name__ == "__main__": main()
  • Dòng lệnh 5: Chúng ta định nghĩa hai biến x, y = 8, 4

  • Dòng lệnh 7: Câu lệnh if kiểm tra điều kiện x<y là Sai trong trường hợp này

  • Dòng lệnh 9: Luồng điều khiển chương trình chuyển sang điều kiện else

  • Dòng lệnh 10: Biến st được đặt thành "x is greater than y." (x lớn hơn y)

  • Dòng lệnh 11: Dòng lệnh print st sẽ in ra giá trị của biến st là "x is greater than y",

Khi “điều kiện else” không hoạt động

Sẽ có nhiều trường hợp "điều kiện else" của bạn sẽ không mang lại kết quả mong muốn. Nó sẽ in ra kết quả sai vì có lỗi trong logic chương trình. Trong hầu hết các trường hợp, điều này xảy ra khi bạn phải đánh giá nhiều hơn hai câu lệnh hoặc điều kiện trong một chương trình.

Ví dụ sau sẽ giúp bạn hiểu rõ hơn về khái niệm này.

Ở đây cả hai biến đều giống nhau (8,8) và đầu ra chương trình là "x is greater than y" (x lớn hơn y), là SAI. Điều này xảy ra là do điều kiện đầu tiên (điều kiện if) là sai, và khi đó chương trình sẽ in ra câu lệnh ở điều kiện thứ hai (điều kiện else). Trong phần sau, chúng ta sẽ học cách sửa lỗi này.

# # Example file for working with conditional statement # def main(): x,y =8,8 if(x < y): st= "x is less than y" else: st= "x is greater than y" print(st) if __name__ == "__main__": main()

Cách sử dụng điều kiện "elif"

Để sửa lỗi trước đó do "điều kiện else" gây ra, chúng ta có thể sử dụng câu lệnh "elif". Bằng cách sử dụng điều kiện "elif ", bạn đang yêu cầu chương trình in ra điều kiện hoặc khả năng thứ ba khi điều kiện khác sai hoặc không chính xác.

Ví dụ

# # Example file for working with conditional statement # def main(): x,y =8,8 if(x < y): st= "x is less than y" elif (x == y): st= "x is same as y" else: st="x is greater than y" print(st) if __name__ == "__main__": main()
  • Dòng lệnh 5: Chúng ta định nghĩa hai biến x, y = 8, 8

  • Dòng lệnh 7: Câu lệnh if kiểm tra điều kiện x <y là Sai trong trường hợp này

  • Dòng lệnh 10: Luồng điều khiển chương trình chuyển sang điều kiện elif. Nó sẽ kiểm tra xem x == y có đúng không

  • Dòng lệnh 11: Biến st được gán giá trị "x is same as y." (x giống với y)

  • Dòng lệnh 15: Luồng điều khiển chương trình thoát khỏi câu lệnh if (nó sẽ không chuyển sang câu lệnh else). Và in biến st. Đầu ra là "x is same as y" (x giống với y), và đây là kết quả đúng.

Thực thi câu lệnh điều kiện với mã nguồn tối giản

Ở đây, chúng ta sẽ học cách làm thế nào để tối giản câu lệnh điều kiện. Thay vì thực thi mã nguồn cho mỗi điều kiện riêng biệt, chúng ta có thể viết chúng thành một dòng lệnh duy nhất.

Cú pháp

A If B else C

Ví dụ :

def main(): x,y = 10,8 st = "x is less than y" if (x < y) else "x is greater than or equal to y" print(st) if __name__ == "__main__": main()
  • Dòng lệnh 2: Chúng ta định nghĩa hai biến x, y = 10, 8

  • Dòng lệnh 3: Biến st được gán giá trị "x is less than y" nếu x <y hoặc nếu không, nó được gán giá trị "x lớn hơn hoặc bằng y". Trong điều kiện x> y này, st được gán giá trị “x is greater than or equal to y” (x lớn hơn hoặc bằng y).

  • Dòng lệnh 4: In giá trị của st và thu được kết quả chính xác.

  • Thay vì viết nhiều dòng lệnh cho câu lệnh điều kiện, Python cho phép bạn viết mã nguồn theo cách ngắn gọn và súc tích.

Câu lệnh IF lồng nhau

Ví dụ sau minh họa câu lệnh if lồng nhau

total = 100 #country = "US" country = "AU" if country == "US": if total <= 50: print("Shipping Cost is $50") elif total <= 100: print("Shipping Cost is $25") elif total <= 150: print("Shipping Costs $5") else: print("FREE") if country == "AU": if total <= 50: print("Shipping Cost is $100") else: print("FREE")

Xóa bỏ dấu chú thích (dấu #) ở dòng lệnh 2 và thêm dấu chú thích vào dòng lệnh 3 rồi chạy lại chương trình.

Câu lệnh Switch

Câu lệnh switch là gì?

Câu lệnh switch là một câu lệnh rẽ nhánh đa chiều giúp so sánh giá trị của một biến với các giá trị cho trước khác trong các câu lệnh case.

Ngôn ngữ Python không có câu lệnh switch.

Python sử dụng ánh xạ từ điển để thay thế cho câu lệnh switch.

Ví dụ

function(argument){ switch(argument) { case 0: return "This is Case Zero"; case 1: return " This is Case One"; case 2: return " This is Case Two "; default: return "nothing"; }; };

Dưới đây là cách thay thế cho đoạn mã nguồn trên trong Python:

def SwitchExample(argument): switcher = { 0: " This is Case Zero ", 1: " This is Case One ", 2: " This is Case Two ", } return switcher.get(argument, "nothing") if __name__ == "__main__": argument = 1 print (SwitchExample(argument))

Ví dụ sử dụng Python 2

Các đoạn mã nguồn ở trên sử dụng Python 3. Bạn có thể sử dụng đoạn mã sau cho Python 2.

# If Statement #Example file for working with conditional statement # def main(): x,y =2,8 if(x < y): st= "x is less than y" print st if __name__ == "__main__": main() # How to use "else condition" #Example file for working with conditional statement # def main(): x,y =8,4 if(x < y): st= "x is less than y" else: st= "x is greater than y" print st if __name__ == "__main__": main() # When "else condition" does not work #Example file for working with conditional statement # def main(): x,y =8,8 if(x < y): st= "x is less than y" else: st= "x is greater than y" print st if __name__ == "__main__": main() # How to use "elif" condition #Example file for working with conditional statement # def main(): x,y =8,8 if(x < y): st= "x is less than y" elif (x == y): st= "x is same as y" else: st="x is greater than y" print st if __name__ == "__main__": main() # How to execute conditional statement with minimal code def main(): x,y = 10,8 st = "x is less than y" if (x < y) else "x is greater than or equal to y" print st if __name__ == "__main__": main() # Nested IF Statement total = 100 #country = "US" country = "AU" if country == "US": if total <= 50: print "Shipping Cost is $50" elif total <= 100: print "Shipping Cost is $25" elif total <= 150: print "Shipping Costs $5" else: print "FREE" if country == "AU": if total <= 50: print "Shipping Cost is $100" else: print "FREE" #Switch Statement def SwitchExample(argument): switcher = { 0: " This is Case Zero ", 1: " This is Case One ", 2: " This is Case Two ", } return switcher.get(argument, "nothing") if __name__ == "__main__": argument = 1 print SwitchExample(argument)

Tổng kết

Câu lệnh điều kiện trong Python được thực hiện thông qua câu lệnh if và chúng ta đã thấy các cách sử dụng khác nhau cho câu lệnh if và else trong bài học.

  • "Điều kiện if" - Được sử dụng nếu bạn cần in ra kết quả với một trong các điều kiện là đúng hoặc sai.

  • "Điều kiện else" - Được sử dụng nếu bạn cần in ra câu lệnh khi một điều kiện là sai.

  • "Điều kiện elif" - Được sử dụng khi có thể có ba khả năng xảy ra. Ngoài ra bạn cũng có thể sử dụng nhiều điều kiện elif để kiểm tra khả năng thứ tư, thứ năm hoặc thứ sáu.

  • Chúng ta có thể tối giản câu lệnh điều kiện bằng cách khai báo toàn bộ điều kiện trên cùng một dòng lệnh.

  • Câu lệnh If có thể lồng nhau.

Page 5

Trong Python, các lớp date, time và datetime cung cấp các hàm xử lý ngày, thời gian và khoảng thời gian. Date và datetime là đối tượng trong Python, vì vậy khi bạn thao tác với chúng, thực tế là bạn đang thao tác với các đối tượng chứ không phải chuỗi hoặc mốc thời gian. Bất cứ khi nào bạn cần thao tác với ngày hoặc thời gian, bạn cần nạp hàm datetime.

Các lớp datetime trong Python được phân thành 5 nhóm chính.

  • date – Chỉ chứa thao tác với ngày (Tháng, ngày, năm)

  • time – Chỉ thao tác với thời gian (Giờ, phút, giây, micro giây)

  • datetime – Kết hợp giữa ngày và thời gian (Tháng, ngày, năm, giờ, giây, micro giây)

  • timedelta – Một khoảng thời gian được sử dụng để thao tác với ngày

  • tzinfo – Một lớp trừu tượng để thao tác với các múi giờ

Trong bài này, chúng ta sẽ tìm hiểu về:

  • Cách sử dụng lớp Date & DateTime

  • In ngày bằng date.today ()

  • Ngày và giờ hiện tại trong Python: now() today()

  • Định dạng ngày và giờ cho đầu ra với Strftime()

  • Cách sử dụng Đối tượng Timedelta

Cách sử dụng lớp Date & DateTime

Bước 1) Trước khi chạy mã nguồn với datetime, điều quan trọng cần làm là nạp mô-đun date và time như hình dưới đây:

Các câu lệnh nạp (import) trên sẽ cung cấp các hàm được định nghĩa sẵn trong thư viện Python, mà qua đó bạn có thể thao tác với ngày tháng và thời gian mà không cần viết thêm mã nguồn.

Trước khi thực khi mã nguồn với datetime, hãy xem dòng lệnh dưới đây:

rom datetime import date

Câu lệnh này thông báo cho trình thông dịch Python rằng hãy nạp lớp date từ mô-đun datetime. Chúng ta sẽ không cần viết thêm mã nguồn cho chức năng ngày tháng mà chỉ cần nạp chúng trước khi sử dụng.

Bước 2) Tiếp theo chúng ta sẽ tạo một thực thể cho đối tượng này.

Bước 3) Tiếp theo, chúng ta sẽ in ra ngày tháng và chạy đoạn mã.

Đầu ra thu được đúng như mong đợi.

In ngày bằng date.today()

Hàm date.today có một số đặc tính đi kèm. Chúng ta có thể in ngày / tháng / năm riêng lẻ và rất nhiều thứ khác.

Xét ví dụ sau:

Số Weekday của hôm nay

Hàm date.today() cũng cung cấp cho bạn số weekday (ngày thứ mấy trong tuần). Dưới đây là bảng Weekday, nó bắt đầu từ thứ hai là số 0 tới chủ nhật là số 6

Ngày

Số Weekday

Thứ hai

0

Thứ ba

1

Thứ tư

2

Thứ năm

3

Thứ sáu

4

Thứ bảy

5

Chủ nhật

6

Số weekday rất hữu dụng cho các mảng sử dụng chỉ số phụ thuộc vào các ngày trong tuần.

Ngày và giờ hiện tại của Python: now() today()

Bước 1) Giống như đối tượng Date, chúng ta cũng có thể sử dụng “đối tượng Datetime” trong Python. Nó đưa ra ngày cùng với thời gian tính bằng giờ, phút, giây và mili giây.

Khi chúng ta thực thi mã nguồn với datetime, nó sẽ in ra ngày và giờ hiện tại.

Bước 2) Với “đối tượng Datetime”, bạn cũng có thể gọi tới lớp thời gian.

Giả sử chúng ta chỉ muốn in ra thời gian hiện tại mà không có ngày.

t = datetime.time(datetime.now())
  • Chúng ta đã nạp lớp thời gian time trước đó. Chúng ta sẽ gán cho nó giá trị thời gian hiện tại với datetime.now().

  • Chúng ta đang gán giá trị thời gian hiện tại cho biến t.

Và kết thu được chỉ có thời gian. Cùng chạy chương trình.

Bạn có thể thấy chúng ta có được cả ngày và giờ. Ở dòng tiếp theo, chúng ta chỉ lấy ra giá trị thời gian.

Bước 3) Chúng ta sẽ áp dụng chỉ số weekday cho mảng danh sách weekday để tìm ra hôm nay là thứ mấy.

  • Toán tử weekday(wd) được gán một số từ (0-6) tùy thuộc vào ngày hiện tại trong tuần là thứ mấy. Ở đây chúng ta khai báo một mảng cho các ngày trong tuần (Mon, Tue, Wed…Sun).

  • Sử dụng giá trị chỉ số đó để biết ngày hiện tại là thứ mấy. Trong trường hợp này, giá trị thu được là #2, tức là ngày thứ tư, vì vậy kết quả đầu ra là “Which is a Wednesday”.

Đây là đoạn mã hoàn chỉnh để lấy ra ngày và giờ hiện tại sử dụng hàm now trong mô-đun datetime.

from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print (today) # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd=date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print("Today is day number %d" % wd) print("which is a " + days[wd]) if __name__== "__main__": main()

Định dạng ngày và giờ cho đầu ra với strftime()

Giờ chúng ta đã học được cách sử dụng đối tượng datetime và date trong Python. Chúng ta sẽ tiến thêm một bước và tìm hiểu cách sử dụng hàm định dạng để định dạng thời gian và ngày.

Bước 1) Đầu tiên chúng ta sẽ tìm hiểu một cách định dạng năm đơn giản. Cùng xem ví dụ dưới đây:

  • Chúng ta sử dụng "hàm strftime" để định dạng.

  • Hàm này sử dụng các mã điều khiển khác nhau để trả về kết quả.

  • Mỗi mã điều khiển giống với các tham số khác nhau như năm, tháng, thứ trong tuần và ngày [(%y /%Y - Năm), (%a /%A- thứ trong tuần), (%b /%B- tháng), (%d - ngày của tháng)].

  • Trong trường hợp của chúng ta, đó là ("% Y") đại diện cho năm, chương trình sẽ in ra năm cùng với thế kỷ (ví dụ 2018).

Bước 2) Bây giờ nếu bạn thay thế ("% Y") bằng chữ thường, nghĩa là ("% y”) và thực thi đoạn mã, đầu ra sẽ chỉ hiển thị (18) chứ không phải (2018). Thế kỷ của năm sẽ không được hiển thị như trong ảnh bên dưới.

Bước 3) Hàm Strf có thể khai báo riêng ngày, thứ, tháng và năm. Ngoài ra chỉ với thay đổi nhỏ trong mã điều khiển trong hàm strftime bạn có thể định dạng lại kiểu văn bản hiển thị.

Bên trong hàm strftime nếu bạn thay thế (%a) bằng chữ A, nghĩa là (%A), đầu ra sẽ in ra là "Friday" thay vì chỉ viết tắt "Fri".

Bước 4) Với sự trợ giúp của chức năng "Strftime", chúng ta cũng có thể truy xuất thời gian, ngày hoặc cả hai của hệ thống.

  1. %C- cho biết ngày và giờ địa phương

  2. %x- cho biết ngày địa phương

  3. %X- cho biết giờ địa phương

Bạn có thể thấy chương trình in ra kết quả đúng như mong muốn.

Bước 5) "Hàm strftime" cho phép bạn trả về thời gian dưới định dạng 24 giờ hoặc 12 giờ.

Chỉ bằng cách xác định mã điều khiển như %I/H cho giờ, %M cho phút, %S cho giây, ta có thể trả về thời gian dưới các định dạng khác nhau.

Định dạng 12h được khai báo như sau: [print now.strftime("%I:%M:%S %P) ]

Định dạng 24h được khai báo như sau: [print now.strftime("%H:%M")]

Đây là mã hoàn chỉnh để chuyển đổi datetime thành đối tượng dạng chuỗi.

# #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print(now.strftime("%c")) print(now.strftime("%x")) print(now.strftime("%X")) ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM print(now.strftime("%H:%M")) # 24-Hour:Minute if __name__== "__main__": main()

Cách sử dụng Đối tượng Timedelta

Với các đối tượng timedelta, bạn có thể ước tính thời gian cho tương lai và quá khứ. Nói cách khác, đó là một khoảng thời gian để dự đoán bất kỳ ngày, thứ hoặc thời gian nào.

Hãy nhớ rằng hàm này không phải để in ra thời gian hay ngày tháng, mà là để TÍNH TOÁN trong tương lai hoặc quá khứ. Cùng xem ví dụ sau để hiểu rõ hơn.

Bước 1) Để chạy đối tượng Timedelta, bạn cần khai báo câu lệnh nạp trước đó.

  • Viết câu lệnh nạp cho timedelta.

  • Giờ hãy viết đoạn mã để in ra đối tượng từ timedelta như hình ảnh.

  • Chạy đoạn mã nguồn trên. Timedelta biểu diễn một khoảng 365 ngày, 8 giờ và 15 phút giống như những gì được in ra.

Bạn vẫn thấy thắc mắc? Bước tiếp theo sẽ giúp bạn hiểu rõ hơn.

Bước 2) Cùng lấy ra ngày và giờ của ngày hôm nay để kiểm tra xem câu lệnh nạp có chạy đúng hay không. Khi đoạn mã được thực thi, nó sẽ in ra ngày hôm nay, điều đó có nghĩa là câu lệnh nạp đã chạy đúng.

Bước 3) Chúng ta sẽ xem cách tìm ra ngày này 1 năm sau thông qua đối tượng timedelta. Khi chúng ta chạy đoạn mã này, kết quả sẽ trả về như mong muốn.

Bước 4) Một ví dụ khác về cách sử dụng timedelta để tính ngày trong tương lai từ ngày và giờ hiện tại

Bước 5) Cùng xem một ví dụ phức tạp hơn. Chúng ta cùng tìm xem Tết đã trôi qua được bao nhiêu ngày. Đây là cách làm.

  • Sử dụng today = date.today () chúng ta sẽ có được ngày hôm nay.

  • Chúng ta biết rằng Tết luôn luôn diễn ra vào ngày 1/1, nhưng năm thì có thể khác. Sử dụng nyd = date(today.year,1,1) chúng ta sẽ lưu ngày Tết vào biến nyd.

  • if nyd < today: kiểm tra xem ngày hiện tại có lớn hơn ngày Tết hay không. Nếu có thì thực hiện vòng lặp while.

  • ((today-nyd) .days) trả về số ngày đã qua giữa ngày hiện tại và năm mới.

Chương trình in ra "New Year Day already went by 11 days ago."

Đây là đoạn mã hoàn chỉnh:

# # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print (timedelta(days=365, hours=8, minutes=15)) # print today's date print ("today is: " + str(datetime.now())) # print today's date one year from now print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365))) # create a timedelta that uses more than one argument # print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Ví dụ sử dụng Python 2

from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print today # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd = date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print "Today is day number %d" % wd print "which is a " + days[wd] if __name__== "__main__": main() # #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print now.strftime("%c") print now.strftime("%x") print now.strftime("%X") ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM print now.strftime("%H:%M") # 24-Hour:Minute if __name__== "__main__": main() # # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print timedelta(days=365, hours=8, minutes=15) # print today's date print "today is: " + str(datetime.now()) # print today's date one year from now print "one year from now it will be:" + str(datetime.now() + timedelta(days=365)) # create a timedelta that uses more than one argument # print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print "New Year day is already went by %d days ago" % ((today - nyd).days)

Tổng kết

Để thao tác với ngày và giờ theo cách đơn giản hoặc phức tạp, mô-đun datetime cung cấp các lớp hoặc danh mục khác nhau bao gồm:

  • date – Chỉ chứa thao tác với ngày (Tháng, ngày, năm)

  • time – Chỉ thao tác với thời gian (Giờ, phút, giây, micro giây)

  • datetime – Kết hợp giữa ngày và thời gian (Tháng, ngày, năm, giờ, giây, micro giây)

  • timedelta – Một khoảng thời gian được sử dụng để thao tác với ngày

  • tzinfo – Một lớp trừu tượng để thao tác với các múi giờ

Sử dụng đối tượng datetime

  • Nạp đối tượng datetime trước khi thực thi mã nguồn là bắt buộc

  • Sử dụng hàm date.today để in ra giá trị ngày/tháng/năm riêng biệt cũng như trả về chỉ số của ngày.

  • Sử dụng đối tượng date.time để lấy ra thời gian theo giờ, phút, giây hoặc mili giây

Định dạng thời gian in ra với hàm “strftime”

  • Sử dụng "hàm thời gian strftime" để thay đổi định dạng của năm

  • In riêng ngày, ngày, tháng và năm,

  • Trả về thời gian dưới định dạng 12 giờ hoặc 24 giờ

Đối tượng Timedelta

  • Với các đối tượng timedelta, bạn có thể ước tính thời gian cho cả tương lai và quá khứ

  • Tính số ngày còn lại cho tới một ngày đặc biệt (sinh nhật) kể từ thời điểm hiện tại

  • Tính tổng số ngày đã qua tính từ một ngày đặc biệt (sinh nhật) kể từ thời điểm hiện tại

Page 6

Mô-đun Calendar(lịch) trong Python chứa lớp calendar cho phép thực hiện việc tính toán nhiều tác vụ khác nhau dựa theo ngày, tháng và năm. Trên hết, lớp TextCalendar và HTMLCalendar trong Python cho phép bạn thay đổi và sử dụng chúng tùy theo nhu cầu của mình.

Hãy xem những gì chúng ta có thể làm với mô-đun calendar.

Bước 1) Thực thi mã nguồn.

  • Dòng lệnh số 1: Chúng ta bắt đầu với "import calendar", câu lệnh này sẽ nạp toàn bộ các lớp trong mô-đun.

  • Dòng lệnh số 3: Câu lệnh c = calendar.TextCalendar(calendar.SUNDAY) yêu cầu trình biên dịch tạo lịch ở dạng chữ. Ngày bắt đầu hiển thị tháng là chủ nhật. Python cho phép bạn định dạng lịch bằng cách thay đổi ngày bắt đầu để hiển thị tháng.

  • Dòng lệnh số 4: str = c.formatmonth(2025,1) chúng ta đang tạo lịch cho tháng 1, năm 2025.

  • Dòng lệnh số 5: In giá trị của biến str.

Bây giờ, chúng ta sẽ thay đổi giá trị từ chủ nhật (Sunday) sang thứ năm (Thursday) và kiểm tra đầu ra.

Bước 2) Bạn cũng có thể in Lịch ở định dạng HTML, tính năng này hữu ích với các lập trình viên nếu họ muốn thực hiện bất kỳ thay đổi nào trong cách hiển thị lịch.

Bước 3)  Để duyệt qua các ngày trong tháng chúng ta sử dụng itermonthday (2025,4), nó sẽ lấy ra các ngày trong tháng đó.

  • Khi bạn thực thi mã nguồn để lấy số ngày trong một tháng cụ thể, ở đây là "April - Tháng Tư", bạn sẽ thấy có 30 ngày trong đầu ra nhưng sẽ xuất hiện vài số 0 ở đầu hoặc ở cuối chuỗi.

  • Số 0 xuất hiện trong đầu ra là do đó là ngày thuộc tháng trước.

  • Những số 0 đó xuất hiện ở đầu ra là do trong đoạn mã trên, bạn muốn tháng được bắt đầu in ra từ thứ 5 (Thursday), vì thế khi bạn gọi tới hàm “c.intermonthdays”, nó sẽ bắt đầu đếm từ thứ 5. Nhưng thứ 5 không phải là ngày 1 tháng 4, nó có thể là ngày 28 hoặc 29 tháng 3, vì vậy khi bạn thực thi đoạn mã trên, nó sẽ bắt đầu đếm từ ngày 28 tháng 3 và các ngày sau đó cho tới ngày 1 tháng 4. Những ngày đó sẽ được đếm là 0 và trong đầu ra, bạn sẽ thấy các số 0 đó ở những giá trị đầu. Điều này cũng đúng trong trường hợp các ngày cuối tháng.

  • Vì vậy, trừ những ngày từ 1-30, tất cả những ngày thuộc tháng trước hoặc sau đều được in ra là số 0.

Bước 4) Bạn có thể lấy dữ liệu ngày, tháng, năm,v.v. từ hệ thống hiện tại.

  • Đầu ra ở đây cho thấy rằng chúng ta đã in tên các tháng từ hệ thống hiện tại. Tương tự, bạn cũng có thể thêm tên các ngày trong tuần như dưới đây.

  • Kết qủa đầu ra sẽ phụ thuộc vào hệ thống hiện tại, giả sử nếu hệ thống hiện tại của bạn là một số quốc gia khác thì nó sẽ trả về các giá trị theo cài đặt cục bộ của quốc gia đó. Ở đây chúng ta có các tháng nên sẽ không có gì khác biệt nhưng nếu là tuần hoặc ngày, chắc chắn nó sẽ khác.

Bước 5) Bạn có thể lấy danh sách ngày cụ thể trong cả năm. Ví dụ, có một ngày kiểm toán vào mỗi thứ hai đầu tiên của tuần. Bạn muốn biết ngày thứ hai đầu tiên cho mỗi tháng. Bạn có thể sử dụng mã nguồn sau.

  • mycal = calendar.monthcalendar(2025,month) sẽ tạo lịch cho các tháng.

  • Đặt các biến week1, week2 là tuần đầu tiên và tuần tiếp theo của lịch

  • Kiểm tra xem tuần 1 có thứ hai không, nếu đúng thì đặt nó là ngày kiểm toán.

  • Nếu tuần 1 không có thứ 2, chúng ta sẽ đặt ngày kiểm toán là thứ 2 đầu tiên trong tuần 2

  • Kết quả đầu ra trả về ngày thứ hai đầu tiên của từng tháng

  • Đối tượng "Cal" có độ dài nhất định, dựa trên số tuần có trong tháng. Trong trường hợp của chúng ta, nó sẽ là một hoặc hai khi đó thứ hai đầu tiên trong tuần thường là tuần đầu tiên, nhưng nếu điều đó không đúng thì ta cần xét tới tuần thứ 2. Hãy xem chi tiết tại sao chúng ta cần xem xét tuần thứ 2.

  • Ở đây chúng ta đang sử dụng thứ hai là một hằng số không đổi của lịch, đối tượng lịch cung cấp cho bạn các hằng số đại diện cho: Chủ Nhật, Thứ Hai, Thứ Ba,v.v. Chúng ta đã thấy các giá trị này trước đây. Vì vậy, một ngày trong tuần được đại diện bởi một số khác 0, hãy nhớ số 0 có nghĩa là những ngày thuộc về một tháng khác. Bởi vậy, trong trường hợp này, nếu nó bằng không, nó sẽ là thứ hai thuộc về tháng trước. Nhưng nếu thứ Hai đầu tiên không bằng 0, điều đó có nghĩa là ngày kiểm toán của chúng ta nằm trong tuần đầu tiên của tháng. Mặt khác, nếu đó là 0, thì thứ hai đầu tiên không nằm trong tuần đầu tiên của tháng, nó phải nằm trong tuần thứ hai.

  • Khi đó, chúng ta sẽ đặt lại biến ngày kiểm toán vào thứ hai thuộc tuần thứ hai. Vì vậy, ngày kiểm toán sẽ chỉ nằm trong ngày thuộc tuần thứ nhất hoặc thứ hai.

Dưới đây là mã nguồn hoàn chỉnh

Ví dụ sử dụng Python 2

import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print i # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print name for day in calendar.day_name: print day # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[1] week2 = mycal[2] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)

Ví dụ sử dụng Python 3

import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print(i) # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[1] week2 = mycal[2] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))

Tổng kết:

  • Trong Python, bạn có thể định dạng lịch theo cách bạn muốn bằng cách thay đổi ngày bắt đầu in ra mỗi tháng.

  • In ra lịch ở định dạng HTML

  • Lấy dữ liệu từ hệ thống cục bộ, như tháng hoặc ngày trong tuần

  • Lấy danh sách ngày cụ thể trong cả năm

Video liên quan

Chủ đề