Category: LẬP TRÌNH

  • Bài 4. Các thủ tục vào ra dữ liệu cơ bản trong Python

    Bài 4. Các thủ tục vào ra dữ liệu cơ bản trong Python

    Các thủ tục vào ra dữ liệu Hàm print trong Python

     1. Hàm print()

    • Để in một xâu string ra màn hình ta dùng hàm print()chẳng hạn:
    >>> print('Toi la Phu Ong')
    Toi la Phu Ong
    • Hàm print() có các tham số sau

    print(value, sep, end, file, flush)

    Trong đó, value là giá trị sẽ được in ra màn hình, giá trị này phải là một xâu kí tự, hoặc chỉ được là các giá trị thuộc cùng một kiểu dữ liệu, nếu có nhiều giá trị thì cách nhau bởi dấu phảy; sep là kí tự ngăn cách giữa các giá trị, end là kí tự khi kết thúc câu lệnh print().

    • Để in nhiều xâu cùng lúc ta có thể sử dụng các toán tử trên xâu. Ở đây xin giới thiệu qua một số cách, chi tiết xin xem chương dữ liệu kiểu xâu.
    • Chẳng hạn ta muốn in ra màn hình nội dung của xâu chứa trong biến temp và xâu Tên tôi là
    >>> temp = 'Phu Ong'
    >>> print("Tên tôi là", temp)
    Tên tôi là Phu Ong
    • Hoặc có thể sử dụng phép nối xâu để in
    >>> temp = 'Phu Ong'
    >>> print("Tên tôi là" + temp)
    Tên tôi làPhu Ong
    • Tuy nhiên, nếu sử dụng phép nối xâu, ta thấy kết quả thu được sẽ không có dấu cách giữa các đối số của hàm print() như cách trước nữa.
    • Phép in nội suy xâu
    >>> print("Ten toi la %s va toi nang %d kg!" % ('Phu Ong', 51))

    Bản chất của câu lệnh trên là ta đã sử dụng các phép toán định dạng xâu, có thể viết như sau cũng thu được cùng một kết quả.

    >>> temp = "Ten toi la %s va toi nang %d kg!" % ('Phu Ong', 51)
    >>> print(temp)

    Hoặc sử dụng kiểu mới để định dạng xâu:

    print("Ten toi la {} va toi nang {} kg".format('Phu Ong', 51))

    2. Hàm input()

    • Để nhập dữ liệu trực tiếp từ bàn phím vào chương trình ta dùng hàm input(). Kiểu dữ liệu mặc định chương trình nhận vào sẽ là kiểu xâu.
    >>> x = input('Ban ten gi? ')
    Ban ten gi? Phuong
    >>> print(x)
    Phuong
    • Để nhập vào một số nguyên hoặc số thực, hoặc một kiểu có cấu trúc phức tạp hơn, thì ta làm thế nào? Chúng ta phải sử dụng các hàm chuyển đổi kiểu của Python. Chẳng hạn để nhập vào một số nguyên, ta dùng hàm int() để chuyển sang kiểu số nguyên, dùng hàm float() để chuyển sang kiểu số thực. Ví dụ
    >>> a=input('Xin moi nhap mot so: ')
    Xin moi nhap mot so: 13
    >>> a*2
    '1313'
    >>> a = int(input('Xin moi nhap mot so: '))
    Xin moi nhap mot so: 13
    >>> a*2
    26
    • hoặc nhập vào một số thực
    >>> a = float(input('Xin moi nhap mot so: '))
    Xin moi nhap mot so: 1.3
    >>> a*2
    2.6
    • Đối với các kiểu dữ liệu phức tạp hơn, ta phải sử dụng thêm các hàm để xử lý xâu kí tự nhập vào.
    • Để nhập một vào nhiều giá trị cùng một lần, các giá trị cách nhau bởi dấu phẩy hoặc một kí tự bất kì, ta dùng vẫn hàm input() nhưng phải sử dụng thêm phương thức split() của kiểu xâu. Ví dụ, nhập vào hai số nguyên a, b cách nhau bởi dấu phẩy.
    >>> a, b = input("Xin moi nhap vao hai so:").split(',')

    hoặc cách nhau bởi dấu cách trắng

    >>> a, b = input("Xin moi nhap vao hai so:").split(' ')

    dĩ nhiên, sau đó ta muốn sử dụng a, b như là các số nguyên thì phải chuyển đổi từ kiểu xâu này sang kiểu số nguyên, vì mặc định nhập vào luôn là kiểu xâu.

    • Để nhập vào một danh sách list, ta nhập vào một xâu, sau đó chuyển xâu đó sang danh sách bằng cách tách rời các phần tử. Ví dụ, người dùng nhập vào một dãy các số nguyên, cách nhau bởi dấu cách trắng, và chúng ta phải chuyển thành một list.
    >>> a = [int(x) for x in input().split()]
    3 4 5
    >>> a
    [3, 4, 5]

    nếu cách nhau bởi dấu phẩy

    >>> a = [int(x) for x in input().split(',')]
    3,4,5
    >>> a
    [3, 4, 5]

    Ở cách này, chúng ta phải sử dụng thêm vòng lặp for, bạn có thể xem chi tiết ở chương sau. Hoặc có thể sử dụng hàm map() để ánh xạ mỗi giá trị với một phần tử của danh sách.

    >>> s = input()
    1 2 3 4 5
    >>> numbers = list(map(int, s.split()))
    >>> numbers
    [1, 2, 3, 4, 5]

    Bài tập

    Bài 1. Viết chương trình nhập vào một số nguyên n và in ta màn hình giá trị bình phương của số đó.

    Bài 2. Viết chương trình nhập vào bán kính r của đường tròn, là một số thực, và in ra diện tích của hình tròn đó.

  • Bài 3. Các phép toán trong Python

    Bài 3. Các phép toán trong Python

    Các phép toán trong Python

    Biểu thức trong Python là một tập hợp các toán hạng và các toán tử được sắp xếp theo thứ tự nhất định. Toán hạng ở đây chính là các biến số, hằng số, các tên hàm hoặc các con số cụ thể. Còn toán tử chính là các phép toán, gồm có phép gán giá trị, các phép toán số học, phép toán logic, phép so sánh hoặc các phép toán trên các kiểu dữ liệu đặc biệt. Ví dụ trong biểu thức sau

    2 + 3 * sin(pi)

    thì 2 3 sin(pi) là các toán hạng, còn + * là các toán tử.

    Trong phần này, chúng ta chưa tìm hiểu sâu về các kiểu dữ liệu cơ bản của Python. Do đó, nếu có nói đến kiểu số thì bạn hiểu đó là các con số thông thường như số thực, số nguyên,… còn nếu nói đến dữ liệu kiểu xâu str thì bạn hiểu đó chính là các chữ cái, các từ, các câu… được đặt trong cặp ngoặc nháy đơn, nháy kép.

    Lưu ý rằng Python sử dụng dấu chấm để ngăn cách phần nguyên và phần thập phân, chẳng hạn số π có giá trị gần đúng là π = 3.1415926

    Tải ebook đầy đủ tại đây: 15 Cuốn sách học Python miễn phí

    Xem thêm: 20 Bài tập Python cơ bản có lời giải

    1. Phép gán giá trị trong Python

    Khái niệm biến số, hằng số được hiểu giống như trong toán học, chúng ta sẽ không đi sâu vào các khái niệm này. Mỗi một biến, hằng đều mang một giá trị nào đó. Phép gán assignment được dùng để gán giá trị value cho biến số hoặc hằng số có tên name, chúng ta sử dụng cú pháp:

    name = value

    Ví dụ sau đây (thực hiện trực tiếp trên trình thông dịch Python) gán giá trị bằng 3 vào biến có tên là a và giá trị 3.14 vào biến có tên là pi. Sau đó thực hiện phép cộng số học a + pi. Ví dụ tiếp theo gán giá trị kiểu xâu str “Phu” vào biến có tên là ho, giá trị “Ong” vào biến có tên là ten và thực hiện phép cộng hai xâu  ho + ten

    >>> a = 3
    >>> pi = 3.14
    >>> a + pi
    6.140000000000000
    >>> ho = "Phu"
    >>> ten = "Ong"
    >>> ho + ten
    'PhuOng'

    Chú ý cần phân biệt phép gán = với phép so sánh bằng nhau, so sánh đồng nhất ==.

    Về biến số, ta có các khái niệm biến toàn cục và biến địa phương. Phần này sẽ thảo luận sau khi tìm hiểu về hàm function và lớp class.

    Chúng ta có thể gán đồng thời nhiều giá trị cho nhiều biến cùng một lúc, ta gọi là phép gán đa biến (multiple assignment), sử dụng cú pháp sau

    name1, name2 = value1, value2

    Chẳng hạn, hãy xem ví dụ sau

    >>> a, b = 10, 5
    >>> ten, tuoi, sdt = 'Phu Ong', 31, '0123456789'

    Chính nhờ ưu điểm này, mà để hoán đổi giá trị của hai biến, ta có thể chỉ sử dụng một câu lệnh và cũng không cần phải sử dụng thêm các biến trung gian như các ngôn ngữ khác, chỉ đơn giản như sau

    >>> a, b = b, a

    Chúng ta cũng có thể gán một giá trị cho đồng thời nhiều biến

    >>> a = b = c = 300
    >>> print(a, b, c)
    300 300 300

    Kiểu dữ liệu của biến trong Python

    Nhiều ngôn ngữ lập trình như C, Dart,…, sử dụng kiểu dữ liệu tĩnh (static), tức là một biến chỉ có thể nhận các giá trị của cùng một kiểu. Python thì trái lại, các biến trong Python có thể nhận mọi giá trị thuộc bất kì kiểu nào.

    >>> var = 23.5
    >>> print(var)
    23.5
    >>> var = "Đây là một xâu này"
    >>> print(var)
    Đây là một xâu này

    Bài tập

    Hãy tự đặt 10 tên biến khác nhau và sử dụng trình thông dịch Python để kiểm tra xem tên đó có hợp lệ không.

    Gợi ý. Sử dụng phép gán để kiểm tra tên có hợp lệ không, nếu gán thành công là hợp lệ, ngược lại là không hợp lệ.

    Ngoài phép gán trực tiếp như trên, chúng ta còn có thể kết hợp phép gán với các phép toán khác như trong bảng dưới đây:

    Toán tử Giải thích Ví dụ
    += Cộng giá trị của toán hạng bên trái với toán hạng bên phải và gán kết quả vào toán hạng bên trái. c += a tương đương với c=c+a
    -= Trừ giá trị của toán hạng bên trái đi toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c -= a tương đương với c=c-a
    *=  Nhân giá trị của toán hạng bên trái với toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c *= a tương đương với c=c*a
    /= Chia giá trị của toán hạng bên trái cho toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c /= a tương đương với c=c/a
    %= Chia lấy dư toán hạng bên trái cho toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c %= a tương đương với c=c%a
    **= Lũy thừa toán hạng bên trái với số mũ là toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c **= a tương đương với c=c**a
    //= Chia lấy phần nguyên toán hạng bên trái cho toán hạng bên phải rồi gán kết quả vào toán hạng bên trái. c //= a tương đương với c=c//a

    2. Phép toán số học trong Python

    Python cung cấp các phép toán số học sau:

    • Phép cộng +
      Tùy vào các toán hạng là kiểu số hay xâu mà phép cộng có tác dụng như phép cộng trong toán học, hoặc sẽ có tác dụng nối hai xâu str lại với nhau (phép cộng xâu), hoặc phép lấy hợp hai tập hợp. Ví dụ:
    >>> 1 + 2
    3
    >>> "Phu" + "Ong"
    'PhuOng'
    • Phép trừ -
      Phép trừ có tác dụng như phép trừ trong toán học, áp dụng cho kiểu số. Nếu áp dụng phép trừ cho các toán hạng kiểu tập hợp set thì ta có phép lấy hiệu hai tập hợp.
    >>> 3 - 6
    -3
    • Phép nhân *
      Nếu cả hai toán hạng là kiểu số thì phép nhân có tác dụng như phép nhân trong toán học. Còn nếu một trong hai toán hạng là xâu str, toán hạng còn lại là một số nguyên dương k thì phép nhân sẽ có tác dụng lặp lại xâu str đó thêm k lần.
    >>> 2*3
    6
    >>> "Phu Ong"*3
    'Phu OngPhu Ong Phu Ong'
    >>> 3*"Phu Ong"
    'Phu OngPhu Ong Phu Ong'
    • Phép chia /
      Phép chia áp dụng cho kiểu số. Nếu các toán hạng là số thực hoặc số nguyên thì kết quả trả về luôn là số thực. Lưu ý, trong Python 2 thì phép chia này có tác dụng như phép chia lấy phần nguyên. Khi đó, muốn kết quả là một số thực bạn phải ép kiểu một trong hai toán hạng sang kiểu số thực float, chẳng hạn thay vì viết 1/2 bạn phải viết 1/2. hoặc 1./2
    >>> 1/2
    0.5
    >>> 1/7
    0.14285714285714285
    • Phép chia lấy phần nguyên //
      Phép chia // này tương ứng với phép toán div trong toán học và các ngôn ngữ khác. Khi chia số nguyên a cho số nguyên b ta được thương là q và số dư là r.

    a = b*q + r

    Kết quả của phép chia // này chính là thương q trong định nghĩa trên.

    >>> 12//4
    3
    >>> 13//4
    3
    >>> 15//4
    3
    • Phép chia lấy phần dư %

    Khi chia số nguyên a cho số nguyên b ta được thương là q và số dư là r. Thì kết quả của phép chia lấy dư % chính là số r trong biểu thức đã nêu ở phần trước.

    >>> 12 % 4
    0
    >>> 13 % 4
    1
    >>> 15 % 4
    3
    • Phép lũy thừa **

    Đây chính là phép tính lũy thừa trong toán học, a**b trả về kết quả là ab.

    >>>2**10
    1024

    Chú ý, a^b trong Python không phải là phép tính lũy thừa hoặc mũ, mà là phép toán dịch chuyển bit, xem phần sau để rõ hơn.

    Bài tập

    Sử dụng trình thông dịch Python và các phép toán số học để kiểm tra xem năm 2017 có là năm nhuận hay không.

    3. Phép toán logic

    Phép toán logic làm việc trên các toán tử logic, tức là các biến, biểu thức chỉ có hai khả năng đúng True hoặc sai False. Xin xem kiểu dữ liệu logic bool để hiểu rõ. Python cung cấp các phép toán logic and or not.

    • Phép toán and sẽ trả về kết quả True nếu cả hai toán hạng đều là True. Bảng giá trị chân lý của phép toán and như sau:
    A B A and B
    True True True
    True False False
    False True False
    False False False
    • Phép toán or sẽ trả về kết quả True nếu một trong hai toán hạng là True. Bảng giá trị chân lý của phép toán or như sau:
    A B A or B
    True True True
    True False True
    False True True
    False False False
    • Phép toán not được sử dụng để đảo ngược giá trị chân lý của một biểu thức. Bảng giả trị chân lý của phép toán not như sau:
    A not A
    True False
    False True

    Sau đây là một vài ví dụ minh họa, tất cả đều chạy trực tiếp trong trình thông dịch của Python.

    >>> True and False
    False
    >>> True or False
    True
    >>> not False
    True

    4. Phép toán so sánh trong Python

    Kết quả trả về của một phép toán so sánh là True (đúng) hoặc False (sai), hai giá trị này thuộc kiểu dữ liệu logic bool. Python cung cấp các phép toán so sánh sau đây:

    • So sánh đồng nhất (giống nhau, bằng nhau) == Cần chú ý rằng phép so sánh đồng nhất khác với phép toán is
    • So sánh lớn hơn >
    • So sánh lớn hơn hoặc bằng >=
    • So sánh nhỏ hơn <
    • So sánh nhỏ hơn hoặc bằng <=
    • So sánh không bằng (khác nhau) !=

    Giả sử biến a có giá trị 10 và biến b có giá trị 20, thì:

    Toán tử Giải thích Thí dụ
    == Nếu giá trị của hai toán hạng bằng nhau thì trả về kết quả True (a == b) có kết quả False
    != Nếu giá trị của hai toán hạng không bằng nhau thì trả về kết quả True (a != b) có kết quả True
    > Nếu giá trị của toán hạng bên trái lớn hơn giá trị của toán hạng bên phải, thì trả về kết quả True (a > b) có kết quả False
    < Nếu giá trị của toán hạng bên trái nhỏ hơn giá trị của toán hạng bên phải, thì trả về kết quả True (a < b) có kết quả True
    >= Nếu giá trị của toán hạng bên trái lớn hơn hoặc bằng giá trị của toán hạng bên phải, thì trả về kết quả True (a >= b) có kết quả False
    <= Nếu giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải, thì trả về kết quả True (a <= b) có kết quả True

     5. Phép toán thao tác bit

    Thông thường, trong cuộc sống chúng ta sử dụng hệ đếm thâp phân, cơ số 10 gồm các 10 chữ số từ 0 đến 9. Nhưng để biểu diễn thông tin trong máy tính, chúng ta sử dụng các bóng bán dẫn, chỉ có hai trạng thái bật hoặc tắt, tương ứng với hai giá trị 1 và 0 của hệ đếm cơ số 2, tức hệ nhị phân.

    Theo wiki thì “Các phép toán trên thao tác bit (bitwise operation) được thực hiện trên một hoặc nhiều chuỗi bit hoặc số nhị phân tại cấp độ của từng bit riêng biệt. Các phép toán này được thực hiện nhanh, ưu tiên, được hỗ trợ trực tiếp bởi vi xử lý, và được dùng để điều khiển các giá trị dùng cho so sánh và tính toán. Đối với các loại vi xử lý rẻ tiền, thường thì các phép toán trên thao tác bit nhanh hơn phép chia đáng kể, đôi khi nhanh hơn phép nhân, và đôi khi nhanh hơn phép cộng đáng kể. Trong khi các vi xử lý hiện đại thường thực hiện phép nhân và phép cộng nhanh tương đương các phép toán trên thao tác bit nhờ vào cấu trúc đường ống lệnh của chúng dài hơn và cũng nhờ vào các lựa chọn trong thiết kế cấu trúc, các phép toán trên thao tác bit thường sử dụng ít năng lượng hơn vì sử dụng ít tài nguyên hơn.”

    Tuy nhiên, trong Python chúng ta ít khi sử dụng các phép toán thao tác trên bit. Chẳng hạn xét trong hệ nhị phân a = 0011 1100b = 0000 1101 thì kết quả của một số phép toán như sau:

    a&b = 0000 1100
    
    a|b = 0011 1101
    
    a^b = 0011 0001
    
    ~a = 1100 0011

    Để chuyển một số sang hệ nhị phân, chúng ta dùng hàm bin(), chẳng hạn với a = 60b = 13

    >>> a = 60
    >>> b= 13
    >>> bin(a)
    '0b111100'
    >>> bin(b)
    '0b1101'

    Chúng ta có các phép toán chuyển đổi bit như sau:

    • Phép nghịch đảo ~ có tác dụng đổi các bit từ 0 sang 1 và ngược lại.
    >>> a = 1988
    >>> ~a
    -1989
    >>> bin(a)
    '0b11111000100'
    >>> bin(~a)
    '-0b11111000101'
    • Phép dịch chuyển bit. Xét dãy bit 00110 khi dịch sang trái sẽ được 01100, còn dịch sang phải sẽ được 00011. Phép dịch bit sang trái còn mang ý nghĩa là nhân một số cho 2, còn dịch sang phải mang ý nghĩa chia một số cho 2. 
    >>>a=2021
    >>>bin(a)
    '0b11111100101'
    >>>bin(a^2)
    '0b11111100111'
    >>>bin(a>>1)
    '0b1111110010'
    >>>bin(a>>2)
    '0b111111001'
    >>>bin(a<<3)
    '0b11111100101000'

    6. Các phép toán membership

    Các phép toán chính là phép kiểm tra một phần tử có thuộc/không thuộc tập (set, List…) nào đó hay không.

    Toán tử Mô tả
    in Trả về True nếu một (nhiều) phần tử thuộc tập hợp, chuỗi cần kiểm tra.
    not in Trae về True nếu một (nhiều) phần tử có trong tập, chuỗi cần kiểm tra.
    >>>a = [1,2,3,4,5,6,7,8,9,10]
    >>>1 in a
    True
    >>>[1,3] in a
    False
    >>>[1,2,3] in a
    False
    >>>b = (1,2,3,4,5,6,7,8,9,10)
    >>>1 in b
    True
    >>>2 in b
    True
    >>>(1,2) in b
    False
    >>>c = 'PHUONG'
    >>>'H' in c
    True
    >>>'PH' in c
    True
    >>>'UN' in c
    False

    Phép toán kiểm tra in còn được sử dụng trong vòng lặp for. Xin mời xem chi tiết tại Bài 6. Câu lệnh vòng lặp for trong Python

    Ngoài ra, còn có các phép toán trên tập hợp, xin mời các bạn xem thêm trong bài Kiểu dữ liệu tập hợp set trong Python.

    7. Thứ tự ưu tiên các phép toán

    Khi thực hiện một câu lệnh Python, các phép toán được thực hiện theo một thứ tự nhất định. Thứ tự ưu tiên các phép toán, lần lượt từ ưu tiên cao xuống thấp, trong Python như sau:

    Toán tử Giải thích
    (expressions...),

    [expressions...]{key: value...}{expressions...}

    Các nhóm biểu thức trong ngoặc đơn, biểu thức trong các phần tử của danh sách, từ điển, tập hợp.
    x[index]x[index:index]x(arguments...)x.attribute Phép truy cập phần tư, cắt khoảng phần tử và lời gọi đến các phương thức, thuộc tính
    await x Biểu thức await
    ** Phép lũy thừa
    +x-x~x Phép cộng thêm, trừ bớt, phép lấy số đối và phép toán bitwise NOT
    *@///% Phép nhân, phép nhân ma trận, phép chia, chia lấy phần nguyên, chia lấy phần dư
    +- Phép cộng, phép trừ
    <<>> Phép dịch bit
    & Phép toán bitwise AND
    ^ Phép toán bitwise XOR
    | Phép toán bitwise OR
    innot inisis not<<=>>=!=== Phép toán so sánh, kiểm tra thành viên…
    not x Phép toán logic NOT
    and Phép toán logic AND
    or Phép toán logic OR
    if – else Câu lệnh điều kiện được thực hiện sau khi các biểu thức điều kiện của nó thực hiện xong
    lambda Hàm nặc danh
    := Phép gán

    Trong bảng trên, nằm cùng hàng với nhau có mức độ ưu tiên bằng nhau, khi đó chúng sẽ được thực hiện lần lượt từ trái qua phải.

  • Bài 2. Các phần tử cơ bản của Python

    Bài 2. Các phần tử cơ bản của Python

    Các phần tử cơ bản của Python

    Như mọi ngôn ngữ lập trình khác, Python có các thành phần cơ bản sau:

    • Các từ khóa keyword;
    • Các biến số variable và hằng số const;
    • Các kiểu dữ liệu cơ bản (các cấu trúc dữ liệu được xây dựng sẵn built-in types);
    • Các câu lệnh và khối lệnh;
    • Chú thích comment.

    Trong chương này, chúng ta sẽ giới thiệu qua về các thành phần cơ bản trên. Lưu ý, Python có phân biệt chữ HOA và chữ thường. Đối với Python 3, mặc định, các xâu kí tự string sẽ ở dưới dạng unicode. Trong tài liệu này, đa số các ví dụ được viết bằng tiếng Việt không dấu, nhưng bạn hoàn toàn có thể sử dụng tiếng Việt có dấu thoải mái.

    1. Các từ khóa của Python

    Từ khóa keyword là các từ dùng riêng của mỗi ngôn ngữ, được dùng cho những mục đích nhất định và không thể định nghĩa lại nhằm mục đích khác.

    Python có rất ít từ khóa, tất cả chỉ gồm 33 từ khóa, các từ khóa này đều bằng tiếng Anh và viết dưới dạng chữ thường. Tùy vào phiên bản Python bạn sử dụng mà số lượng các từ khóa có thể khác nhau. Để lấy danh sách các từ khóa của phiên bản hiện tại đang dùng, bạn sử dụng thư viện keyword và lệnh print(keyword.kwlist)

    >>> import keyword
    >>> print(keyword.kwlist)
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

    2. Tên và cách đặt tên trong Python

    Một chương trình sử dụng rất nhiều tên hay còn gọi là định danh để làm tên chương trình, tên hàm, tên biến, tên hằng số…

    • Tên trong Python có độ dài tuỳ ý.
    • Chúng có thể gồm cả chữ cái cả in hoa và in thường, các  chữ số và dấu gạch dưới, nhưng bắt buộc phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
    • Chúng ta nên đặt tên sao cho có ý nghĩa, và để dễ đọc ta thường ngăn cách giữa các từ bằng dấu gạch dưới, ví dụ ho_ten, dia_chi

    Vì Python là ngôn ngữ tạo kiểu dữ liệu động, nên đối với các biến, bạn không cần khai báo nó trước khi sử dụng. Lưu ý rằng, như đã nói ở phần trước, Python có phân biệt chữ HOA và chữ thường, nên hai tên anhANH là hoàn toàn khác nhau!

    Một số quy ước bắt buộc khi đặt tên của Python

    • Ký tự bắt đầu của tên phải là một dấu gạch dưới _ hoặc một chữ cái (có thể là chữ hoa hoặc chữ thường). Tiếp theo có thể là một hoặc nhiều ký tự, con số hoặc thậm chí bỏ trống (tức tên chỉ gồm một kí tự).
    • Trong tên không được có dấu cách trắng hoặc các ký tự đặc biệt như: @ , $ . % ^ ! = + - * / % & ~ ` \
    • Tên không được trùng với các từ khóa của Python.

    Một số quy ước không bắt buộc khi đặt tên của Python

    • Nên đặt tên có ý nghĩa sao cho dễ hiểu, dễ nhớ.
    • Tên của class bắt đầu với một ký tự hoa, tiếp theo là chữ thường (có thể viết hoa đầu mỗi từ của tên, ví dụ MyClass).
    • Tên của biến thường bắt đầu bởi chữ cái in thường.
    • Tên bắt đầu với một ký tự gạch dưới duy nhất, được hiểu rằng đây là một định danh private.
    • Tên bắt đầu với hai ký tự gạch dưới liên tiếp thì đây là một định danh có tính private mạnh.
    • Nếu tên bắt đầu và kết thúc với hai dấu gạch dưới (chẳng hạn __init__), định danh là một cái tên đặc biệt của ngôn ngữ được định nghĩa; hoặc khi ta viết lại một hàm đã có sẵn của Python.

     3. Chú thích trong ngôn ngữ Python

    Khi viết chương trình, đôi khi chúng ta cần ghi chú những điểm quan trọng, để người khác và chính chúng ta sau này, đọc lại sẽ hiểu được mã nguồn một cách tốt nhất. Lúc này chúng ta sẽ ghi chú trực tiếp vào mã nguồn, các ghi chú này gọi là chú thích comment, trong chương trình mà không làm ảnh hưởng tới chương trình, chương trình dịch sẽ bỏ qua các chú thích này.

    Một dòng chú thích trong Python bắt đầu với kí tự #. Nếu chú thích trên nhiều dòng thì đặt chúng vào trong cặp ngoặc nháy tam, thường sử dụng cặp ba nháy kép """. Ví dụ:

    # Đây là chú thích trên một dòng
    """
    Đây là chú thích trên nhiều dòng
    khác nhau
    Blah Blah…
    """

     4. Câu lệnh và khối lệnh

    Trong một chương trình, ngoài các biến và kiểu dữ liệu của nó; chúng ta còn cần phải có các mô tả những hành động, công việc mà chương trình cần thực hiện. Như trong tiếng Việt, mỗi một câu phải có ý nghĩa nhất định, thì trong Python cũng thế, mỗi một câu lệnh phải để thực hiện một nhiệm vụ nào đó. Các câu lệnh có thể chỉ để thực hiện một hành động, nhiệm vụ nào đó, như gán giá trị vào một biến, gọi một hàm… Mỗi lệnh như vậy được gọi là một câu lệnh hoặc lệnh đơn. Ngoài các lệnh đơn này, Python còn có các câu lệnh ghép (lệnh hợp thành) mà ta sẽ gọi là khối lệnh, các câu lệnh lựa chọn, câu lệnh kiểm tra điều kiện, và các vòng lặp. Chúng được gọi chung là các câu lệnh có cấu trúc mà chúng ta sẽ tìm hiểu ở các chương sau.

    Mỗi câu lệnh được viết trên một dòng và phải kết thúc bằng kí tự xuống dòng (carriage return – CR). Do đó, muốn kết thúc một câu lệnh, ta chỉ việc xuống một dòng mới (bằng cách bấm phím Enter). Ví dụ, trong hai câu lệnh sau, câu lệnh thứ nhất sẽ in ra màn hình dòng chữ: Toi la Phu Ong, còn câu lệnh thứ hai sẽ in tiếp dòng chữ: Ban ten la gi?

    print("Toi la Phu Ong")
    print("Ban ten la gi?")

    Tuy nhiên, đôi khi có những câu lệnh quá dài, để dễ nhìn ta có thể chủ động xuống dòng bằng cách gõ thêm kí tự \ (backslash) trước khi xuống dòng mới. Một dòng kết thúc bởi dấu \ thì không thể chứa các chú thích. Ví dụ sau đây, ta chủ động xuống dòng ở chỗ + 11, thì trước khi xuống dòng, ta gõ thêm kí tự \, lúc này Python sẽ hiểu là chưa kết thúc một câu lệnh và sẽ chờ đến khi ta gõ + 13 và ấn Enter, mới thực hiện câu lệnh và trả về kết quả bằng 91. Mặc dù về mặt hình thức văn bản, ta thấy câu lệnh này được viết trên hai dòng, nhưng ta vẫn gọi đây là một câu lệnh, hoặc một dòng lệnh nếu không gây hiểu lầm.

    >>> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +\
    ... 11 + 12 + 13
    91

    Vậy khi nào thì nên chủ động xuống dòng? Để cho mã nguồn của chúng ta được đẹp, mỗi dòng không nên dài quá 80 kí tự, nên đối với những câu lệnh quá dài ta có thể chủ động xuống dòng để cho mã nguồn dễ đọc hơn[1].

    Tuy nhiên, có đôi khi xuống một dòng mới mà không cần kí tự \, đó là khi ta liệt kê các phần tử của một danh sách[2] list, một bộ tuple… Chẳng hạn, khi ta nhập các phần tử của list

    l = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
          ... 144, 233]

    thì trước khi nhập phần tử 144, ta ấn xuống dòng nhưng Python vẫn đủ thông minh để hiểu là chưa kết thúc một câu lệnh. Và, đối với các chú thích trên nhiều dòng, thì đương nhiên sẽ không cần gõ thêm kí tự \ trước khi xuống dòng mới.

    Khi chúng ta cần thực hiện một nhóm các lệnh khác nhau, ví dụ khi giải phương trình bậc hai, thì trong trường hợp biệt số Δ dương, chúng ta phải thực hiện các thao tác in ra màn hình thông báo phương trình có hai nghiệm, rồi lần lượt in ra hai nghiệm đó. Khi này, ta cần đến lệnh ghép hay lệnh hợp thành. Câu lệnh ghép, được hợp thành bởi nhiều câu lệnh đơn nằm trên nhiều dòng khác nhau mà ta gọi là một khối lệnh thì Python sẽ sử dụng các khoảng cách trắng để phân biệt. Trong các ngôn ngữ khác, một khối lệnh thường được đánh dấu bằng cặp ký hiệu hoặc từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một khối lệnh. Python, trái lại, có một cách rất đặc biệt để tạo khối lệnh, đó là thụt lề indent các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa nó.

    Ví dụ, đoạn mã so sánh Δ với số 0, nếu lớn hơn thì in ra màn hình dòng chữ Phương trình có hai nghiệm phân biệt và in ra hai nghiệm đó, trái lại thì in ra dòng chữ Phương trình không có hai nghiệm phân biệt.

    #không được dùng kí hiệu Delta nên ta đặt tên sao cho dễ hiểu
    if delta > 0:
          # bắt đầu khối lệnh mới, thụt đầu dòng so với lệnh trước đó
          print("Phương trình có hai nghiệm phân biệt là:")
          print(x_1 = (-b + sqrt(delta)) / (2 * a))
          print(x_1 = (-b - sqrt(delta)) / (2 * a))
    # kết thúc khối lệnh, trở về khối lệnh cha bằng cách không thụt đầu dòng
    else:
          print("Phương trình không có hai nghiệm phân biệt")

    Để làm điều này, ta có thể sử dụng dấu cách trắng (space) hoặc dấu nhảy Tab đều được, tuy nhiên từ phiên bản 3.x trở đi, Python chỉ cho phép sử dụng một trong hai loại, không được trộn lẫn (mix) cả hai trong cùng một tệp của chương trình. Thông thường, theo quy ước ngầm, người ta sử dụng 4 dấu cách trắng để thụt các câu lệnh trong khối.

    Nếu bạn quen sử dụng phím Tab, có thể cài đặt để mỗi lần gõ phím Tab sẽ tương đương với 4 dấu cách trắng. Chẳng hạn, đối với Visual Studio Code, bạn bấm chuột vào vị trí Spaces ở trên thanh trạng thái (Status Bar) và chọn Indent Using Spaces, sau đó chọn số lượng dấu cách tương ứng với một lần bấm phím Tab.

    5. Một số quy tắc khi viết chương trình

    Để chương trình dễ đọc, gỡ lổi, vận hành và bảo trì chúng ta nên tuân thủ một số quy tắc sau:

    • Nên viết chú thích rõ ràng và sử dụng chú thích thường xuyên, nếu cần thiết có thể ghi rõ ngày tháng sửa, lí do sửa… Đặc biệt, đối với mỗi hàm, mỗi mô-đun ta nên có mô tả chi tiết về nó như mục đích, cách sử dụng… Sau mỗi tên biến, nếu cần cũng nên giải thích biến này sử dụng để làm gì.

    Đối với những chỗ code chưa tối ưu, cần phải sửa chữa, có thể comment

    # FIXME -- fix these code later

    Đối với những chỗ cần thêm chức năng, nhiệm vụ… nên comment

    # TODO -- in future you have to do this
    • Nên dùng dấu cách thay cho dấu nhảy Tab, và nên dùng 4 dấu cách. Không được trộn lẫn (mix) giữa hai loại dấu này.
    • Giữa các hàm cách nhau bởi một dòng trắng.
    • Giữa các lớp cách nhau bởi hai dòng trắng.
    • Tên biến nên bắt đầu bằng chữ in thường, tên lớp nên bắt đầu bằng chữ in hoa.

    [1]Chính vì lí do một dòng không nên quá dài, sẽ gây mỏi mắt, mà các tờ báo giấy mới in thành nhiều cột 🙂

    [2]Trong cuốn sách này, hầu hết các từ khóa, thuật ngữ của Python sẽ được giữ nguyên tiếng Anh mà không dịch sang tiếng Việt.

  • Bài 1. Giới thiệu và cài đặt Python

    Bài 1. Giới thiệu và cài đặt Python

    Bài 1. Giới thiệu và cài đặt Python

    1.1 Lịch sử ngôn ngữ Python

    Python là một ngôn ngữ lập trình đa năng, được tạo ra bởi Guido van Rossum từ năm cuối những năm 1980. Phiên bản đầu tiên được phát hành năm 1991, hiện nay các phiên bản của Python gồm có hai nhánh chính là Python 2.x và Python 3.x. Hiện tại, Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

    1.2 Ưu điểm của ngôn ngữ Python

    Python là một ngôn ngữ lập trình bậc rất cao và có một số đặc điểm nổi bật sau:

    • đa mục đích – bạn có thể sử dụng Python để phát triển ứng dụng desktop, web, machine learning, mobile, IoT…;

    • hướng đối tượng;

    • là ngôn ngữ lập trình dạng thông dịch (Interpreter Language);

    • đa nền tảng;

    • hoàn toàn tạo kiểu dữ liệu động và dùng cơ chế cấp phát – thu gom bộ nhớ tự động;

    • cú pháp đơn giản, dễ đọc, có ít từ khóa, phân tách các khối lệnh (lệnh ghép) bằng khoảng trắng chứ không bằng cặp ngoặc {} như trong C, hoặc các từ khóa begin end như trong Pascal…, không sử dụng dấu chấm phảy (;) để kết thúc một lệnh;

    • các thư viện hỗ trợ phong phú, có thể tìm được các thư viện phục vụ cho hầu hết mọi nhu cầu của bạn và tất cả đều miễn phí.

    1.3 Cài đặt

    Để cài đặt Python, bạn vào trang chủ của Python tại https://python.org/ và tải về phiên bản phù hợp với hệ điều hành đang dùng. Ở đây tôi không đi vào chi tiết cách cài đặt, cá nhân tôi sử dụng phiên bản 3.6 cho Windows 64 bit và cài vào thư mục C:\Python36 chỉ lưu ý các bạn khi cài đặt nên tích chọn để đưa Python vào biến môi trường (System Path). Nếu không, bạn phải thêm thư mục Python vào System Path một cách thủ công như sau:

    • Bấm chuột phải vào My Computer (hoặc This PC) ngoài Desktop và chọn Properties; hoặc bấm tổ hợp phím ÿ + Break; hoặc vào Control Panel\System and Security\System.

    • Chọn thẻ Advanced System Setting để mở hộp thoại System Properties.

    • Chọn thẻ Advanced rồi chọn nút Environment Variables…

    • Trong thẻ System variables, chọn dòng Path và bấm Edit.

    • Tiếp tục chọn New và gõ vào đường dẫn đến thư mục cài đặt Python, ở đây, của tôi là C:\Python36\

    • Chọn tiếp New và thêm tiếp thư mục chứa các Scripts, ở đây, máy của tôi là C:\Python36\Scripts\

    • Bấm OK.

    Hướng dẫn cài đặt Python - Hop thoai System Properties
    Hình 1: Hộp thoại System Properties

    Để kiểm tra đã thêm Python vào System Path chưa, bạn mở1 hộp thoại Run của Windows và gõ python, sau đó bấm Enter:

    Hình 2: Hộp thoại Run
    Hình 2: Hộp thoại Run

    nếu hiện cửa sổ như sau là thành công:

    Hình 3: Trình biên dịch Python
    Hình 3: Trình biên dịch Python

    Sau khi cài đặt xong trình biên dịch Python, mặc định sẽ có một trình soạn thảo đi kèm là IDLE, tuy nhiên trình soạn thảo này khá cơ bản và không hỗ trợ nhiều cho người sử dụng như gợi ý các từ khóa, quản lý project, gỡ lỗi… nên tôi khuyên bạn nên sử dụng thêm một trình soạn thảo như Notepad++, Sublime Text, Visual Studio Code, Pycharm, Eclipse… Có rất nhiều chương trình như vậy, cả miễn phí và trả phí, nhưng cá nhân tôi thường sử dụng Visual Studio Code của Microsoft, đôi khi cũng sử dụng thêm cả Sublime Text 3.

    Nếu mới làm quen với Python, bạn có thể cài đặt Anaconda tại https://www.continuum.io là một môi trường Python đã bao gồm cả trình dịch Python, trình soạn thảo với rất nhiều tính năng cao cấp chuyên dụng giành cho Data Science, và được cài sẵn rất nhiều thư viện, đặc biệt là các thư viện cho Machine Learning, Data Science như numpy, jupyter, matplotlib

    1.4 Chạy một chương trình Python

    Như đã nói ở trên, Python là ngôn ngữ thông dịch – tức là thực hiện một chương trình được viết bởi ngôn ngữ bậc cao bằng cách dịch nó theo từng dòng một –, nên để chạy một chương trình Python, bạn có thể sử dụng một trong hai cách:

    • Chạy trực tiếp từng dòng lệnh ở trong chương trình dịch Python,

    • Tạo một tệp tin với phần mở rộng là .py và chạy tệp này bằng chương trình dịch Python, những tệp này còn được gọi là các kịch bản script.

    Chúng ta sẽ lần lượt tìm hiểu cả hai cách này.

    Chạy trình thông dịch

    Cách thứ nhất, bạn chạy trình biên dịch Python tại2 đường dẫn C:\Python36\python.exe hoặc nếu đã cài đặt Python vào biến môi trường thì chỉ việc mở hộp thoại Run hoặc cửa sổ Command Line (từ đây sẽ viết tắt là CMD) và gõ python. Nếu thành công, bạn sẽ nhận được một cửa sổ như ở Hình 3. Bây giờ, hãy gõ vào sau dấu nhắc >>> dòng lệnh:

    >>>print("Xin chào thế giới Python!")

    Sẽ thu được kết quả như hình sau:

    Chạy Chương trình Python đầu tiên
    Hình 4: Chương trình Python đầu tiên

    Chúc mừng! Bạn đã thực hiện thành công chương trình đầu tiên của Python.

    Chạy các script

    Cách thứ hai, bạn dùng một trình soạn thảo văn bản bất kì (Notepad chẳng hạn), gõ dòng lệnh

    print("Xin chào thế giới Python!")

    và lưu lại với đuôi mở rộng là .py – mà ta sẽ gọi là các script, ví dụ, tôi lưu lại thành tệp xin_chao.py tại thư mục C:\Python36, rồi mở cửa sổ CMD và gõ lệnh python C:\Python36\xin_chao.py hoặc chỉ cần gõ C:\Python36\xin_chao.py sẽ thu được kết quả như hình sau:

    Chạy script .py bằng chương trình dịch Python
    Hình 5: Chạy script .py bằng chương trình dịch Python

    Ngoài ra, nếu bạn sử dụng Sublime Text để soạn script, thì có thể chạy một script bằng cách sử dụng phím tắt Ctrl + B để build script hoặc vào chọn Tools – Build.

    Còn nếu sử dụng Visual Studio Code để soạn thảo script thì bấm chuột phải vào vùng soạn thảo và chọn Run Python File in Terminal.

    Chạy script Python trong Visual Studio Code
    Hình 6: Chạy script Python trong Visual Studio Code

    Trong hai cách trên, cần chú ý rằng, bạn phải lưu script vào đĩa cứng trước khi chạy.

    Trong tài liệu này, những đoạn mã có dấu >>> thì bạn có thể thực hiện trực triếp ở trong chương trình thông dịch Python, mà không cần tạo script.

    Bài tập

    1. Hãy tự cài đặt chương trình dịch Python phù hợp với hệ điều hành của mình.

    2. Khởi chạy trình thông dịch Python và kiểm tra phiên bản đang sử dụng.

    3. Khởi động chương trình thông dịch Python và tìm hiểu xem các lệnh help() có tác dụng gì. Sau đó, sử dụng lệnh help() này để tìm hiểu xem kiểu số nguyên int có những phương thức method nào.

    4. Hãy sử dụng nó như một máy tính cầm tay để thực hiện các tính toán đơn giản, với các phép toán cộng +, trừ -, nhân *, chia / và lũy thừa **.

    5. Viết chương trình in ra màn hình dòng chữ sau bằng hai cách, thực hiện trực tiếp trong trình thông dịch Python và viết script.

      Twinkle, twinkle, little star,
      How I wonder what you are!
      Up above the world so high,
      Like a diamond in the sky.
      Twinkle, twinkle, little star,
      How I wonder what you are…
    6. Hãy sử dụng trình soạn thảo Visual Studio Code và cài thêm các gói hỗ trợ lập trình Python. Google để tìm hiểu thêm.

    1 Để mở hộp thoại Run có thể bấm tổ hợp phím Windows + R, hoặc bấm Start và gõ run sau đó chọn Run – ở đây tôi sử dụng Windows 10.

    2 Ở đây, tôi sử dụng Python phiên bản 3.6, cài đặt vào thư mục C:\Python36\, trong máy của bạn có thể khác.

  • Phần mềm nén dung lượng ảnh image compress online free

    Phần mềm nén dung lượng ảnh image compress online free

    Phần mềm nén dung lượng ảnh miễn phí – Image compress online free

    Có rất nhiều cách nén dung lượng ảnh (image compress) như sử dụng phần mềm miễn phí và trả phí, cả online (image compress online free) và offline (compress image software) trên máy tính. Trong bài viết này, O2 Education xin giới thiệu một số phần mềm nén ảnh online sử dụng trực tiếp trên trình duyệt web cho khả năng nén dung lượng ảnh tốt nhất mà hầu như giữ nguyên chất lượng ảnh.

    Xem thêm How do I upscale an image in Photoshop?

    1. Phần mềm nén dung lượng ảnh Squoosh

    Để sử dụng app nén giảm dung lượng ảnh Squoosh, bạn truy cập trang chủ của Squoosh tại địa chỉ https://squoosh.app/

    Giao diện làm việc của phần mềm như hình sau:Phần mềm nén dung lượng file ảnh Squoosh miễn phí

    Tại đây, bạn có thể kéo thả (drag & drop) file ảnh cần giảm dung lượng trực tiếp vào của sổ trình duyệt. Hoặc, bấm chọn Select an image và tìm duyệt đến tệp hình ảnh cần nén dung lượng.

    Sau khi bức ảnh được upload thành công, cửa sổ giao diện làm việc như sau:

    Phần mềm nén dung lượng file ảnh miễn phí

    • Góc trên cùng, bên phải là dấu mũi tên để trở về trang chủ (trường hợp bạn muốn nén file ảnh khác nữa).
    • Góc dưới bên trái (mặc định) là hình ảnh gốc (nguyên bản) kèm thông tin về dung lượng bức ảnh ban đầu. Bạn có thể thay đổi bằng cách bấm chọn ô danh sách xổ xuống để thay đổi giữa các định dạng nén ảnh.
    • Góc dưới bên phải là hình ảnh sau khi nén, có các tùy chọn sau:
      • Thanh kéo trượt để thay đổi về chất lượng nén (như trong hình là nén giữ 75% chất lượng so với ảnh ban đầu thì dung lượng file ảnh là 106kB, tức nén đến 97%)
      • Hộp danh sách lựa chọn chuẩn định dạng nén ảnh, mặc định là MọJPEG, ngoài ra còn các chuẩn nén ảnh khác như MozlPEG, OxiPNG, WebP, Browser PNG, Browser JPEG và Browser WebP)
    • Ở chính giữa là một thanh kéo để so sánh (xem trước) hình ảnh nguyên bản ban đầu và hình ảnh sau khi nén.

    Thay đổi kích thước file ảnh sau khi nén (Resize image online)

    Ngoài khả năng nén ảnh, bạn còn có thể thay đổi kích thước hình ảnh (resize image) bằng cách tích chọn ô Resize. Lúc này, app Squoosh có các tùy chọn thuộc tính tiếp theo như hình ảnh sau:

    Phần mềm nén dung lượng ảnh online miễn phí

    Các chế độ mặc định cài đặt sẵn (preset) như giảm còn 50% kích thước ban đầu… Hoặc bạn có thể nhập trực tiếp chiều rộng vào ô Width, chiều cao vào ô Height. Method là lựa chọn sử dụng các phương thức resize ảnh khác nhau.

    Ngoài ra còn có các tùy chọn như Reduce palette để thay đổi số lượng màu sắc của bức ảnh…

    Bạn có thể xem chi tiết hướng dẫn trong video sau:

    https://www.youtube.com/watch?v=bRVVaPcQCeg

    2. Các dịch vụ nén dung lượng file ảnh khác

    Bạn có thể sử dụng một số dịch vụ giảm dung lượng ảnh khác như:

    Đối với các phần mềm Offile trên máy tính, có thể sử dụng Photoshop và chọn xuất (export) hình ảnh cho web. Hoặc một số phần mềm miễn phí sau:

  • Tự học Microsoft Word 2019 (MS Word 2016 – 2013)

    Tự học Microsoft Word 2019 (MS Word 2016 – 2013)

    Tự học Microsoft Word 2019 (MS Word 2016 – 2013)

    Hướng dẫn tự học soạn thảo văn bản với Microsoft Word 2019 và các phiên bản Word 2013, Word 2016 qua các video. Series này sẽ được cập nhật thường xuyên, mời thầy cô và các bạn theo dõi.

    Xem thêm Sửa lỗi font tiếng Việt file CSV Google Microsoft Forms

    #Tự học Microsoft Word – Làm quen

    #Các tính năng mới của MS Word 2019

    #Hướng dẫn cách tạo mục lục tự động

    #Làm chủ Style trong Word

    #Chèn các mô hình 3D vào Word và Powerpoint 2019

    https://youtu.be/i3lzLDPTYPw

    #Chèn ghi chú footnote vào cuối trang Word

    #Cách vẽ biểu đồ trong Word

    #Gõ công thức Toán trong Word

    https://youtu.be/VivVJwEhxFc

    #Cách tạo chỉ mục index trong Word

    #Ghép nhiều file Word thành 1 file

    #Chụp và chèn ảnh từ PDF sang Word

    https://youtu.be/0iZZwzNYt6o

  • Link Profile có chỉ số DA, PA cao hỗ trợ SEO

    Link Profile có chỉ số DA, PA cao hỗ trợ SEO

    Link Profile có chỉ số DA, PA cao hỗ trợ SEO

    1. Lưu ý khi đi back link profile

    Khi làm SEO, đi backlink bằng thông tin profile ở các trang mạng xã hội. Bạn cần chú ý mấy điểm sau:

    • Sử dụng list social được chọn lọc kỹ từ hàng nghìn social đảm bảo các social đều live bền vững, có các chỉ số PA, DA cao.

    DA là viết tắt của từ Domain Authority. Nó  một chỉ số do MOZ đặt ra để đo lường độ uy tín  độ mạnh của một tên miền (domain).

    PA viết tắt của từ Page Authority : Đây cũng  một chỉ số do MOZ đặt ra để đo lường độ mạnh cũng như độ uy tín (trust) của từng Page riêng lẻ.

    • Khả năng được Google Index mạnh mẽ với tỷ lệ >90%.
    • Kết nối đồng bộ các social với nhau, đặc biệt chọn lọc các social có nhiều kết nối tầng 2 với các mxh liên quan.
    • Ảnh logo, cover được geotags kinh độ, vĩ độ cẩn thận, tỉ mỉ, chi tiết.
    • Đồng bộ thông tin website nhất quán trên các mạng xã hội.
    • Gắn Hashtag đầy đủ tăng signal.

    2. Danh sách diễn đàn tốt để đặt link profile

    Dưới đây là một số website cho đặt link profile, một số site còn cho viết bài và đặt backlink trực tiếp.

    https://amthanhnhapkhaucomvn.wordpress.com/2020/04/16/tu-van-chon-cau-hinh-dan-karaoke-hay-nhat
    https://medium.com/@amthanhnhapkhau/d%C3%A09-d%C3%A0n-karaoke-gia-%C4%91%C3%ACnh-%C4%91%E1%BB%A7-m%E1%BB%8Di-c%E1%BA%A5u-h%C3%ACnh-cc1c57e72481
    https://dankaraoke.business.site/posts/153943400309545465
    https://www.linkedin.com/pulse/15-d%C3%A0n-karaoke-hay-nh%E1%BA%A5t-%C3%A2m-thanh-ahk
    https://blogkythuatamthanh.wordpress.com/2020/04/16/9-bo-dan-karaoke-gia-dinh-moi-nhat
    https://www.marshmutt.com/members/amthanhnhapkhaucomvn/profile/ 
    https://amthanhnhapkhaucomvn.wordpress.com/ 
    https://vi.gravatar.com/amthanhnhapkhaucomvn 
    https://profiles.wordpress.org/amthanhnhapkhaucomvn/ 
    https://buddypress.org/members/amthanhnhapkhaucomvn/profile/ 
    https://bbpress.org/forums/profile/amthanhnhapkhaucomvn/ 
    https://sites.google.com/site/amthanhnhapkhaucomvn/ 
    https://www.linkedin.com/in/amthanhnhapkhaucomvn/detail/contact-info/ 
    https://twitter.com/amthanhahkvn   
    https://500px.com/amthanhnhapkhaucomvn 
    https://thriveglobal.com/?author_name=am-ahk&preview=true
    https://medium.com/@amthanhnhapkhau/15-d%C3%A0n-karaoke-hay-nh%E1%BA%A5t-hi%E1%BB%87n-nay-8936acb1e48a 
    https://id.pr-cy.ru/user/profile/amthanhnhapkhaucomvn/#/profile  
    https://www.bonanza.com/users/43398987/profile 
    https://www.provenexpert.com/am-thanh-ahk/?mode=preview 
    https://pbase.com/amthanhnhapkhaucomvn/guestbook
    https://community.cbr.com/member.php?122662-amthanhnhapkhaucomvn 
    https://medium.com/@amthanhnhapkhau
    https://issuu.com/amthanhnhapkhau
    https://catchthemes.com/support-forum/users/amthanhnhapkhaucomvn/
    https://www.reddit.com/user/amthanhnhapkhaucomvn/comments/fz69f3/%C4%91%E1%BB%8Ba_ch%E1%BB%89_b%C3%A1n_d%C3%A0n_karaoke_d%C3%A0n_%C3%A2m_thanh_h%E1%BB%99i_tr%C6%B0%E1%BB%9Dng/
    https://marketplace.whmcs.com/user/m2220/
    https://www.popsugar.com/profile/amthanhnhapkhaucomvn
    https://amthanhnhapkhaucomvn.wordpress.com/ 
    https://vi.gravatar.com/amthanhnhapkhaucomvn 
    https://profiles.wordpress.org/amthanhnhapkhaucomvn/ 
    https://buddypress.org/members/amthanhnhapkhaucomvn/profile/ 
    https://bbpress.org/forums/profile/amthanhnhapkhaucomvn/ 
    https://sites.google.com/site/amthanhnhapkhaucomvn/ 
    https://www.linkedin.com/in/amthanhnhapkhaucomvn/detail/contact-info/ 
    https://twitter.com/amthanhahkvn
    https://500px.com/amthanhnhapkhaucomvn 
    https://thriveglobal.com/?author_name=am-ahk&preview=true
    https://medium.com/@amthanhnhapkhau/15-d%C3%A0n-karaoke-hay-nh%E1%BA%A5t-hi%E1%BB%87n-nay-8936acb1e48a 
    https://id.pr-cy.ru/user/profile/amthanhnhapkhaucomvn/#/profile  
    https://www.bonanza.com/users/43398987/profile 
    https://www.provenexpert.com/am-thanh-ahk/?mode=preview 
    https://pbase.com/amthanhnhapkhaucomvn/guestbook
    https://community.cbr.com/member.php?122662-amthanhnhapkhaucomvn 
    https://medium.com/@amthanhnhapkhau
    https://issuu.com/amthanhnhapkhau
    https://catchthemes.com/support-forum/users/amthanhnhapkhaucomvn/
    https://www.reddit.com/user/amthanhnhapkhaucomvn/comments/fz69f3/%C4%91%E1%BB%8Ba_ch%E1%BB%89_b%C3%A1n_d%C3%A0n_karaoke_d%C3%A0n_%C3%A2m_thanh_h%E1%BB%99i_tr%C6%B0%E1%BB%9Dng/
    https://marketplace.whmcs.com/user/m2220/
    https://www.popsugar.com/profile/amthanhnhapkhaucomvn
  • Sửa lỗi font tiếng Việt file CSV Google Microsoft Forms

    Sửa lỗi font tiếng Việt file CSV Google Microsoft Forms

    Sửa lỗi font tiếng Việt file CSV Google Microsoft Forms

    Khi thầy cô sử dụng Microsoft Forms hoặc Google Forms, các dữ liệu phản hồi biểu mẫu (các câu trả lời bài làm của học sinh, các câu trả lời khảo sát…) được lưu dưới dạng file .csv

    1. Nguyên nhân lỗi font tiếng Việt của file CSV

    Các file CSV này thưởng bị lỗi font tiếng Việt khi mở bằng phần mềm MS Excel. Nguyên nhân là do Excel mặc định chọn bảng mã cho tệp csv này là encoding của châu Âu, còn file CSV chúng ta được lưu ở bảng mã UTF-8.

    2. Cách sửa lỗi font file csv bằng Excel

    Chúng ta không mở trực tiếp tệp vừa tài về, mà thực hiện như sau:

    Bước 1. Tạo 1 file Excel mới

    Bước 2. Chọn thẻ Data rồi chọn tiếp Import from Text/CSV (Chỗ tô màu vàng trong hình vẽ sau)

    Cách sửa lỗi font tiếng Việt file CSV

    Bước 3. Chọn file csv bị lỗi font mà các thầy cô đã tải về. Ô File Origin chọn là 65001: Unicode (UTF-8) như hình vẽ sau.

    Hướng dẫn cách sửa lỗi font tiếng Việt file CSV khi mở trong Excel

    Bước 4. Ấn chọn Load và chờ Excel nạp file này. Sau đó, thầy cô lưu lại file Excel mới này và sử dụng bình thường.

    Hướng dẫn chi tiết cách sửa lỗi font file csv, cách chỉnh lỗi font file CSV mời thầy cô xem trong video sau đây:

    Xem thêm:

  • Hướng dẫn sử dụng Sway tạo báo cáo thay thế Powerpoint

    Hướng dẫn sử dụng Sway tạo báo cáo thay thế Powerpoint

    Hướng dẫn sử dụng Sway tạo báo cáo thay Powerpoint

    1. Sway là gì?

    Sway là một ứng dụng mới từ Microsoft Office giúp bạn dễ dàng tạo và chia sẻ báo cáo, câu chuyện, bản trình bày mang tính tương tác và nhiều nội dung khác. Bạn có thể sử dụng Sway online trên trình duyệt web hoặc tải app Sway trên cửa hàng Microsoft Store về máy tính cá nhân của mình.

    2. So sánh ưu nhược điểm của Sway và Powerpoint

    2.1. Ưu điểm của phần mềm văn phòng Sway

    • Tạo một bài trình chiếu, báo cáo, thuyết trình cực nhanh, chỉ trong vài phút.
    • Tạo bài báo cáo, thuyết trình từ các tệp có sẵn (pdf, doc, docx…) tự động và cực nhanh.
    • Chia sẻ các bài báo cáo, các câu chuyện cho người khác dễ dàng, xem trực tiếp trên trình duyệt mà không cần cài đặt phần mềm nào cả.
    • Bạn chỉ cần tập trung vào nội dung, còn thiết kế thì Sway tự tính toán và lựa chọn sao cho chuyên nghiệp, tính thẩm mỹ cao nhất.
    • Nhiều phong cách trình bày (style) chuyên nghiệp, được các chuyên gia hàng đầu thiết kế.
    • Có thể tùy biến các kiểu chữ, font chữ, màu sắc, cỡ chữ theo ý thích.
    • Chế độ trình chiếu theo chiều dọc, ngang hoặc từng slide (mỗi slide coi như một group – nhóm các đối tượng, có thể là các thẻ văn bản, các hình ảnh, stack ảnh, các kiểu trang so sánh…).

    Man hinh chính làm việc của Sway

    2.2. Nhược điểm của Sway

    • Chỉ hoạt động online, cần tài khoản của Microsoft để sử dụng (có thể đăng ký miễn phí, hoặc sử dụng các tài khoản hotmail, office365 – Sway là một ứng dụng nằm trong bộ Office 365 của MS).
    • Tài khoản miễn phí chỉ cho giới hạn một số tài liệu Sway nhất định, muốn tạo thêm bạn phải xóa các tệp cũ hoặc nâng cấp tài khoản.
    • Đối với các thầy cô dạy những môn như Toán, Lý, Hóa… có nhiều công thức Toán học thì Sway không thể thay thế Powerpoint.
    • Ít tính năng hơn so với Powerpoint, Sway chủ yếu để báo cáo, thuyết trình, kể chuyện.

    3. Cách cài đặt Sway trên máy tính

    Ngoài sử dụng online trên nền web, Sway có thể tải về miễn phí từ Microsoft Store. Bạn có thể bấm vào link sau để tải

    Hoặc, trên máy tính bạn vào Start Menu, mở Microsoft Store, tìm app có tên Sway và ấn Get để cài đặt.

    Hướng dẫn tải và cài đặt Sway

    4. Hướng dẫn sử dụng Sway tạo bài báo cáo, thuyết trình trong vài phút

    Chi tiết hướng dẫn sử dụng Sway, bạn có thể đọc ở dưới hoặc xem video này

    Tải và cài đặt sử dụng Sway

    Hình trên là giao diện làm việc chính của Sway, có các chức năng chính sau:

    • Creat New: Tạo một bài trình chiếu Sway mới.
    • Start from a topic: Tạo một bài trình chiếu Sway về một chủ để bạn nhập vào từ các thông tin lấy trên Wiki (bằng tiếng Anh)
    • Start from a document: Tạo bài thuyết trình Sway từ các tài liệu có sẵn, như word (.doc, .docx, .rtf…) hoặc PDF nhanh chóng trong vài phút.

    Mỗi tài liệu Sway là một Storyline – nơi bạn nhập, chèn, chỉnh sửa và định dạng nội dung để kể câu chuyện của bạn. Storyline (cốt truyện) có các đặc điểm:

    • Nội dung được sắp xếp theo thứ tự liên tục bằng cách thêm các “thẻ” (card) hoặc nhóm các thẻ (group) bằng cách bấm vào biểu tượng dấu cộng +.
    • Mỗi thẻ chứa loại nội dung mà bạn muốn, chẳng hạn như văn bản (text), hình ảnh (image), video và thậm chí các tài liệu Office.

    Tạo một thẻ card mới trong Sway

      • Thẻ văn bản Text thì có thể là tiêu đề cấp 1 (Heading 1), tiêu đề cấp 2 – tiêu đề con (Heading 2)  hoặc văn bản bình thường (Text).
      • Thẻ Media gồm có các tài nguyên online trên mạng như Image (hình ảnh), Video, Audio, Embed (nhúng từ các nguồn trên mạng – video từ youtube chẳng hạn), Stack (một xấp ảnh chồng lên nhau và bạn bấm vào sẽ lật từng tấm ảnh), hoặc Upload từ máy tính của bạn.
      • Thẻ Group gồm có các nhóm Automatic (tự động), Grid (lưới), Stack, Comparison (so sánh các đối tượng, chẳng hạn so sánh 2 bức ảnh được đặt cạnh nhau), Slideshow.
    • Bạn có thể sắp xếp lại vị trí các thẻ bất cứ lúc nào cho phù hợp với nhu cầu của bạn.Hướng dẫn Sway storyline