Python cơ bản

Python Basics


Hello, World

# Chương trình đầu tiên: In ra màn hình câu "Hello, World!" print("Hello, World!")

Thực thi chương trình Python

Chạy từng dòng lệnh

Các bước thực hiện:

  • Mở cửa sổ chế độ dòng lệnh (terminal).
  • Nhập python (hoặc python3) và nhấn Enter để mở Python chế độ tương tác.
  • Nhập từng dòng lệnh để thực thi.

Ví dụ:

Python interactive mode

Chạy file mã nguồn từ chế độ dòng lệnh

  • Mở cửa sổ dòng lệnh (terminal).
  • Nhập python <[path_to/]python_script_file_name.py> và nhấn Enter để thực thi. Trình thông dịch sẽ lần lượt thực hiện các lệnh trong file mã nguồn.

Thực thi chương trình Python từ môi trường phát triển tích hợp (IDE)

  • Mở IDE lập trình Python ưa thích (PyCharm, VS Code, Spyder, IDLE,...).
  • Tạo (hoặc mở) file chương trình Python.
  • Nhấn lệnh Run để thực thi chương trình.

Khối lệnh

  • Python sử dụng khoảng canh lề (indentation) để giới hạn khối lệnh.
  • Số khoảng trắng trước khối lệnh ít nhất là 1, thông dụng nhất là 4.
  • Trong một khối lệnh, số khoảng trắng đứng trước mỗi dòng lệnh phải bằng nhau.

Ví dụ:

n = 123 if n % 2 == 0: print("%d là số chẵn" % n) else: print("%d là số lẻ" % n)

Kiểu dữ liệu và biến

Biến

  • Biến là đối tượng dùng để lưu dữ liệu.
  • Giá trị của biến có thể thay đổi khi chương trình hoạt động.
  • Python không có lệnh khai báo biến, biến được tạo ra khi gán giá trị cho nó.

  • Tên biến đặt theo quy tắc sau:

  • Tên biến chỉ gồm các ký tự chữ cái, chữ số và dấu gạch dưới '_'.
  • Tên biến phải bắt đầu bằng chữ cái hoặc ký tự gạch dưới.
  • Không được đặt tên biến trùng với từ khóa của Python.

Ví dụ:

  • Tên biến hợp lệ: delta, x1, don_gia, _123abc

  • Tên biến không hợp lệ:

    3VanChinNghin: bắt đầu bằng chữ số

    Don Gia: chứa khoảng trắng

    except: trùng với từ khóa của Python

Note

  • Ngôn ngữ Python phân biệt chữ hoa chữ thường (case-sensitive), nên các tên sau là khác nhau: TinHoc, Tinhoc, tinHoc.
  • Nên đặt tên biến ngắn gọn, có nghĩa (diễn tả nội dung nó chứa). Ví dụ, để viết lệnh tính quãng đường đi dựa vào vận tốc và thời gian, thay vì viết d = v*t, nên viết distance = velocity * traveled_time hoặc quang_duong = van_toc * thoi_gian, sẽ giúp câu lệnh dễ hiểu hơn.
  • Với Python 3, có thể đặt tên biến bằng ký tự Unicode (gồm cả tiếng Việt), chẳng hạn: Ba_Vạn_Chín_Nghìn = 39000 là một khai báo hợp lệ. Tuy nhiên, chỉ nên đặt tên biến bằng các ký tự ASCII.

Kiểu dữ liệu

Kiểu dữ liệu của một biến được xác định khi gán giá trị cho nó.

Python có các kiểu dữ liệu cơ sở sau:

Kiểu chuỗi (text)

Chuỗi là dãy ký tự đặt trong cặp dấu nháy kép "" hoặc nháy đơn ''.

Ví dụ:

# Dạng chuỗi 1: đặt giữa cặp dấu nháy kép ntu_slogan1 = "Lựa chọn đúng để thành công!" print(ntu_slogan1) # Dạng chuỗi 2: đặt giữa cặp dấu nháy đơn ntu_slogan2 = 'Căng buồm tri thức vươn khơi.' print(ntu_slogan2) # Dạng chuỗi 3: chuỗi gồm nhiều dòng verses = """ 'Trải qua một cuộc bể dâu Những điều trông thấy mà đau đớn lòng.' \t\t- trích Truyện Kiều (Nguyễn Du) """ print(verses)

Kiểu số (numeric)

Python có các kiểu số nguyên (int), số thực (float) và số phức (complex).

Ví dụ:

# Kiểu số nguyên n = 3721 print("n = %d" % n) # Kiểu số thực pi = 3.14159 print("PI = %.2f" % pi) # Số phức z = 3 + 5j print("z = ", z)

Kiểu tuần tự (sequence)

  • Kiểu danh sách (sequence): list, tuple, range
  • Kiểu từ điển (mapping): dict
  • Kiểu tập hợp (set): set, frozenset

Kiểu Boolean: bool

Kiểu bool có giá trị True hoặc False.

Ví dụ:

fruits = {'bưởi', 'táo', 'đu đủ', 'cam'} is_apple_in_fruits = 'táo' in fruits print(is_apple_in_fruits) is_durian_in_fruits = 'durian' in fruits print(is_durian_in_fruits)

Kiểu None (NoneType)

Kiểu dữ liệu None dùng để chỉ một biến hoặc đối tượng không có giá trị.

Note

Dùng hàm type() để lấy kiểu dữ liệu của một biến hoặc biểu thức.

Ví dụ:

n = 3721 print("Kiểu dữ liệu là ", type(n).__name__) PI = 3.1416 print("Kiểu dữ liệu là ", type(PI).__name__) four_seasons = ['Xuân', 'Hạ', 'Thu', 'Đông'] print("Kiểu dữ liệu là ", type(four_seasons).__name__) fruits = {"bưởi", "táo", "cam", "chanh"} print("Kiểu dữ liệu là ", type(fruits).__name__) student_info = {'ID':'65131234', 'grades':{'python':8.5, 'maths':7.8}} print("Kiểu dữ liệu là ", type(student_info).__name__) numbers = (3,7,2,1) print("Kiểu dữ liệu là ", type(numbers).__name__) greeting_message = 'Welcome to Nha Trang!' print("Kiểu dữ liệu là ", type(greeting_message).__name__)

Các câu lệnh điều khiển

Lệnh rẽ nhánh if

Dạng 1: Lệnh if thiếu

  • Nếu <BT logic> có giá trị đúng (True) thì thực hiện <Lệnh đơn> hoặc <Khối lệnh>
if <BT logic>: <Lệnh đơn>
hoặc
if <BT logic>: 
    <Khối lệnh>

Ví dụ:

n = 5
if n % 2 != 0: print(f'{n} là số lẻ.')
m = 69
if m > 0:
    print(f'm = {m}')
    print(f'{m} là số dương.')

Dạng 2: Lệnh if đủ

  • Nếu <BT logic> có giá trị đúng (True) thì thực hiện <Khối lệnh 1>, ngược lại thực hiện <Khối lệnh 2>
if <BT logic>: 
    <Khối lệnh 1>
else:
    <Khối lệnh 2>

Hoặc viết gọn hơn khi chỉ có lệnh đơn:

<Lệnh 1> if <BT logic> else <Lệnh 2>

Ví dụ:

n = 5
if n % 2 != 0: 
    print(f'{n} là số lẻ.')
else:
    print(f'{n} là số chẵn.')

a, b = 6, 9
print(f'{a} > {b}') if a > b else print(f'{b} > {a}')    

elif

  • Trong lệnh if, muốn kiểm tra điều kiện mới khi điều kiện trước không thỏa mãn thì dùng từ khóa elif
if <BT logic 1>:        
    <Khối lệnh 1>
elif <BT logic 2>:
    <Khối lệnh 2>
    ...
elif <BT logic n>:
    <Khối lệnh n>
else:
    <Khối lệnh n+1>

Lệnh lặp

Lệnh lặp while

  • Lệnh lặp while lặp lại khối lệnh chừng nào BT điều kiện còn đúng.
while <BT điều kiện>:
    <Khối lệnh>

Ví dụ: Tính tổng các chữ số của số tự nhiên n:

n = 123
sum_digits = 0
while n > 0:
    sum_digits += n % 10
    n = n // 10
print(f'Tổng chữ số = {sum_digits}')

Lệnh break

  • Lệnh `break' khi được gọi sẽ dừng vòng lặp.
  • Trong ví dụ sau, dù điều kiện lặp là i < 100, nhưng nếu i bằng 5 thì dừng vòng lặp, nên chương trình chỉ in ra các số nguyên liên tiếp từ 1 đến 4.
i = 1
while i < 100:
    print(i, end= ' ')
    i += 1
    if i == 5: break

Lệnh continue

  • Lệnh `continue' khi được gọi sẽ chuyển sang vòng lặp kế tiếp.
  • Trong ví dụ sau, biến i khởi đầu bằng 0, chừng nào i còn thỏa < 10 thì tăng i thêm 1 và in ra giá trị của i, nhưng nếu i là số chẵn thì lệnh continue được gọi, chương trình chuyển sang xử lý bước lặp tiếp theo mà bỏ qua lệnh print(i, end=' '). Kết quả là chương trình chỉ in ra các số lẻ từ 1 đến 9.
i = 0
while i < 10:
    i += 1
    if i % 2 == 0: continue
    print(i, end= ' ')

Lệnh lặp for

  • Lệnh lặp for dùng để duyệt từng phần tử trong một dãy (list, tuple, dictionary, set, string).
Duyệt danh sách
  • Cú pháp
for <biến chạy> in <danh sách>:
    <Khối lệnh>
  • Ví dụ
Tứ_Linh = ['Long', 'Ly', 'Quy', 'Phượng']
# Cách 1: duyệt từng phần tử của danh sách
for tl in Tứ_Linh:
    print(tl, end=' ')
# Cách 2: duyệt từng phần tử thông qua vị trí trong danh sách    
for i in range(len(Tứ_Linh)):
    print(Tứ_Linh[i], end=' ')
Duyệt chuỗi ký tự
  • Chuỗi là một dãy ký tự vì thế có thể duyệt từng ký tự của chuỗi bằng lệnh for.
  • Cú pháp
for ch in <chuỗi>:
    <Lệnh>
  • Ví dụ
st = 'Nha Trang Khánh Hòa'
for ch in st:
    print(ch) 

Hàm range()

  • hàm range(<start_value>, <end_value>, <step>) thường được kết hợp khi muốn thực hiện lệnh lặp với số bước lặp xác định.
  • Ví dụ: In 10 dòng 'Hello world'
for i in range(10): # range(0, 10, 1)
    print('Hello world')

Lệnh lặp lồng nhau (nested loop)

  • Lệnh lặp lồng nhau: Trong một lệnh lặp chứa lệnh lặp khác.
  • Với mỗi bước lặp của vòng lặp ngoài, lệnh lặp bên trong sẽ thực hiện hết một lượt.
  • Ví dụ: In bảng cửu chương
for i in range(2, 10):
    for j in range(1, 11):
        print('%3d x %3d = %3d'  % (i, j, i*j))

Hàm Python

  • Hàm là một đoạn mã lệnh được lập trình để thực hiện một chức năng chuyên biệt.
  • Một hàm có tên gọi, đầu vào và đầu ra.
  • Hàm chỉ thực thi khi nó được gọi.
  • Một hàm có thể được gọi nhiều lần với các giá trị khác nhau của đối số.

Ví dụ:

def say_hi(): """ In ra câu chào "Hi there!" """ print("Hi there!") # Gọi hàm say_hi()

Hàm say_hi() ở trên không có đầu vào, không trả về giá trị cho lời gọi hàm; khi gọi hàm, máy tính sẽ thực thi các lệnh trong thân hàm, ở đây là lệnh print("Hi there!").

Truyền đối số cho hàm

  • Hàm có thể nhận các giá trị đầu vào để xử lý, gọi là tham số. Các tham số cách nhau dấy phẩy.

Ví dụ: Sửa lại hàm say_hi() ở trên để khi gọi hàm và truyền cho nó một chuỗi chứa tên bất kỳ thì máy tính sẽ in ra câu chào tên đó.

def say_hi(name): """ Hàm in ra câu chào tên trong chuỗi được truyền vào """ print("Hello %s" % name.title()) # Gọi hàm với các đối số khác nhau say_hi("Nhâm Thìn") say_hi("Cristiano Ronaldo") st = "Việt Nam" say_hi(st)

Một số hàm dựng sẵn của Python

Trình thông dịch Python cung cấp nhiều hàm dựng sẵn (built-in functions). Sau đây là một số hàm thông dụng.

Nhóm hàm toán học

Tên hàm Mô tả
abs() Tính giá trị tuyệt đối của một số
max() Tìm số lớn nhất trong các đối số hoặc trong danh sách
min() Tìm số nhỏ nhất trong các đối số hoặc trong danh sách
pow() Tính lũy thừa
round() Làm tròn số thập phân
sum() Tính tổng các giá trị trong danh sách

Nhóm hàm xử lý với kiểu dữ liệu cơ sở

Hàm Mô tả
int() Đổi một chuỗi hoặc số sang số nguyên
bin() Đổi số nguyên sang hệ nhị phân
hex() Đổi số nguyên sang hệ hexa
float() Đối chuỗi hoặc số sang số thực
str() Chuyển đối tượng thành kiểu chuỗi
ord() Trả về mã Unicode của ký tự
chr() Trả về ký tự ứng với mã Unicode

dict(), set(), list(), tuple()

Trả về kiểu từ điển, tập hợp, danh sách

                           |