Học lập trình không chỉ là đọc hướng dẫn — mà còn là xắn tay áo lên và thực hành. Trong bài viết này, chúng ta sẽ đi qua 20 bài tập đơn giản rất phù hợp cho người mới bắt đầu. Mỗi bài tập đều có ví dụ và giải pháp bằng Python để bạn có thể thử ngay lập tức.

1. In “Hello, World!”

Yêu cầu bài tập: Viết chương trình đơn giản nhất có thể để xuất một thông điệp lên màn hình. Điều này cho thấy cách chạy mã và nhận kết quả hiển thị.

Những gì bạn sẽ sử dụng: hàm print() — không có đầu vào, chỉ có đầu ra.

Ví dụ đầu ra

Hello, World!

Giải pháp Python

print("Hello, World!")

2. Máy Tính Đơn Giản

Yêu cầu bài tập: Lấy hai số từ người dùng và tính tổng, hiệu, tích và thương của chúng. Điều này dạy bạn cách xử lý đầu vào và phép toán cơ bản.

Những gì bạn sẽ sử dụng: input() để lấy số, float() để chuyển đổi chúng, các toán tử số học (+ - * /), và print() để hiển thị kết quả.

Ví dụ đầu vào

8
2

Ví dụ đầu ra

Addition: 10.0
Subtraction: 6.0
Multiplication: 16.0
Division: 4.0

Giải pháp Python

a = float(input("Nhập số đầu tiên: ").strip())
b = float(input("Nhập số thứ hai: ").strip())

print("Addition:", a + b)
print("Subtraction:", a - b)
print("Multiplication:", a * b)
print("Division:", a / b if b != 0 else "Vô cực")

3. Kiểm Tra Số Lẻ Hay Chẵn

Yêu cầu bài tập: Quyết định xem một số nguyên là số lẻ hay số chẵn.

Những gì bạn sẽ sử dụng: modulo %, biểu thức điều kiện

Ví dụ đầu vào

7 là số lẻ

Ví dụ đầu ra

7 là số lẻ

Python

n = int(input().strip())
print(f"{n} là {'chẵn' if n % 2 == 0 else 'lẻ'}")

4. Trò Chơi Đoán Số

Yêu cầu bài tập: Máy tính chọn một số ngẫu nhiên; người dùng tiếp tục đoán cho đến khi đúng, với gợi ý cao/thấp.

Những gì bạn sẽ sử dụng: random.randint(), vòng lặp while, if/elif/else.

Ví dụ chạy

Đoán (1-10): 5
Quá thấp
Đoán (1-10): 8
Đúng rồi!

Giải pháp Python

import random
secret = random.randint(1, 10)
while True:
    g = int(input("Đoán (1-10): ") or 0)
    if g < secret:
        print("Quá thấp")
    elif g > secret:
        print("Quá cao")
    else:
        print("Đúng rồi!")
        break

5. Bảng Cửu Chương

Yêu cầu bài tập: In bảng cửu chương từ 1 đến 10 cho một số đã cho.

Những gì bạn sẽ sử dụng: vòng lặp for, f-strings.

Ví dụ đầu vào

3

Ví dụ đầu ra

3 x 1 = 3
...
3 x 10 = 30

Giải pháp Python

n = int(input().strip())
for i in range(1, 11):
    print(f"{n} x {i} = {n*i}")

6. Kiểm Tra Palindrome

Yêu cầu bài tập: Kiểm tra xem văn bản có đọc giống nhau từ trước ra sau (bỏ qua chữ hoa và khoảng trắng/dấu câu) hay không.

Những gì bạn sẽ sử dụng: dọn dẹp chuỗi, .lower(), slicing [::-1].

Ví dụ đầu vào

RaceCar

Ví dụ đầu ra

RaceCar là một palindrome

Giải pháp Python

s = input().strip()
clean = ''.join(ch.lower() for ch in s if ch.isalnum())
print(f"{s} là {'một palindrome' if clean == clean[::-1] else 'không phải là palindrome'}")

7. Dãy Fibonacci

Yêu cầu bài tập: In ra n số Fibonacci đầu tiên.

Những gì bạn sẽ sử dụng: biến để theo dõi hai giá trị cuối cùng, vòng lặp for, nối danh sách.

Ví dụ đầu vào

6

Ví dụ đầu ra

0 1 1 2 3 5

Giải pháp Python

n = int(input().strip())
a, b = 0, 1
seq = []
for _ in range(n):
    seq.append(str(a))
    a, b = b, a + b
print(' '.join(seq))

8. Máy Tính Giai Thừa

Yêu cầu bài tập: Tính giai thừa n! (tích của 1..n).

Những gì bạn sẽ sử dụng: vòng lặp for để nhân (hoặc đệ quy).

Ví dụ đầu vào

5

Ví dụ đầu ra

120

Giải pháp Python

n = int(input().strip())
f = 1
for i in range(2, n+1):
    f *= i
print(f)

9. Đếm Từ

Yêu cầu bài tập: Đếm xem có bao nhiêu từ trong một câu.

Những gì bạn sẽ sử dụng: str.split(), len().

Ví dụ đầu vào

Tôi yêu lập trình

Ví dụ đầu ra

3

Giải pháp Python

s = input().strip()
print(len(s.split()))

10. Danh Sách Công Việc (Mini CLI)

Yêu cầu bài tập: Thêm, xem và xóa công việc trong một menu lặp đơn giản.

Những gì bạn sẽ sử dụng: danh sách, vòng lặp while, if/elif/else.

Ví dụ chạy

1
Hoàn thành bài tập về nhà
2
1 Hoàn thành bài tập về nhà

Giải pháp Python

tasks = []
while True:
    print("1) Thêm  2) Xem  3) Xóa  4) Thoát")
    c = input("> ").strip()
    if c == "1":
        tasks.append(input("Công việc: ").strip()); print("Đã thêm.")
    elif c == "2":
        if tasks:
            for i, t in enumerate(tasks, 1):
                print(i, t)
        else:
            print("Không có công việc.")
    elif c == "3":
        i = int(input("Chỉ số: ") or 0)
        if 1 <= i <= len(tasks):
            tasks.pop(i-1); print("Đã xóa.")
        else:
            print("Chỉ số không hợp lệ.")
    elif c == "4":
        break
    else:
        print("Thử lại từ 1-4.")

11. Đảo Ngược Một Chuỗi

Yêu cầu bài tập: Xuất phiên bản đảo ngược của văn bản đầu vào.

Những gì bạn sẽ sử dụng: slicing [::-1].

Ví dụ đầu vào

hello

Ví dụ đầu ra

olleh

Giải pháp Python

print(input().strip()[::-1])

12. Số Lớn Nhất Trong Ba Số

Yêu cầu bài tập: Đọc ba số và in ra số lớn nhất.

Những gì bạn sẽ sử dụng: input().split(), map(), max().

Ví dụ đầu vào

4 9 2

Ví dụ đầu ra

9

Giải pháp Python

a, b, c = map(float, input().split())
print(max(a, b, c))

13. Bộ Chuyển Đổi Nhiệt Độ (C ↔ F)

Yêu cầu bài tập: Chuyển đổi Celsius sang Fahrenheit hoặc ngược lại dựa trên tiền tố thang đo.

Những gì bạn sẽ sử dụng: điều kiện, phép toán.

Ví dụ đầu vào

C 25

Ví dụ đầu ra

77.0

Giải pháp Python

scale, val = input().split()
x = float(val)
print(x * 9/5 + 32 if scale.upper() == 'C' else (x - 32) * 5/9)

14. Lãi Suất Đơn Giản

Yêu cầu bài tập: Tính lãi suất đơn giản bằng P, R, T.

Những gì bạn sẽ sử dụng: map(float, ...), công thức toán học P*R*T/100.

Ví dụ đầu vào

1000 5 2

Ví dụ đầu ra

100.0

Giải pháp Python

P, R, T = map(float, input().split())
print(P * R * T / 100)

15. Kiểm Tra Số Nguyên Tố

Yêu cầu bài tập: Xác định xem n có phải là số nguyên tố hay không.

Những gì bạn sẽ sử dụng: vòng lặp đến √n, dừng sớm khi tìm thấy ước số.

Ví dụ đầu vào

13

Ví dụ đầu ra

nguyên tố

Giải pháp Python

n = int(input().strip())
if n < 2:
    print("không phải là nguyên tố")
else:
    i, ok = 2, True
    while i*i <= n:
        if n % i == 0:
            ok = False; break
        i += 1
    print("nguyên tố" if ok else "không phải là nguyên tố")

16. Tổng Các Chữ Số

Yêu cầu bài tập: Cộng tất cả các ký tự số trong đầu vào.

Những gì bạn sẽ sử dụng: biểu thức sinh ra trên chuỗi, sum().

Ví dụ đầu vào

1234

Ví dụ đầu ra

10

Giải pháp Python

s = input().strip()
print(sum(int(ch) for ch in s if ch.isdigit()))

17. Đếm Nguyên Âm

Yêu cầu bài tập: Đếm xem có bao nhiêu nguyên âm trong văn bản đầu vào.

Những gì bạn sẽ sử dụng: .lower(), kiểm tra sự có mặt với một tập hợp.

Ví dụ đầu vào

programming

Ví dụ đầu ra

3

Giải pháp Python

s = input().lower()
vowels = set('aeiou')
print(sum(ch in vowels for ch in s))

18. Búa – Giấy – Kéo

Yêu cầu bài tập: Chơi một ván với máy tính và báo cáo thắng/thua/hòa.

Những gì bạn sẽ sử dụng: random.choice(), quy tắc thắng dựa trên tuple, if/elif.

Ví dụ chạy

rock
Máy tính chọn: scissors
Bạn thắng!

Giải pháp Python

import random
user = input("rock/paper/scissors: ").strip().lower()
cpu = random.choice(["rock", "paper", "scissors"])
print("Máy tính chọn:", cpu)
if user == cpu:
    print("Hòa!")
elif (user, cpu) in {("rock","scissors"), ("paper","rock"), ("scissors","paper")}:
    print("Bạn thắng!")
else:
    print("Bạn thua!")

19. Min & Max Trong Một Danh Sách

Yêu cầu bài tập: Đọc các số trên một dòng và in ra số nhỏ nhất và lớn nhất.

Những gì bạn sẽ sử dụng: split(), map(float), min(), max().

Ví dụ đầu vào

5 9 1 7 3

Ví dụ đầu ra

1 9

Giải pháp Python

nums = list(map(float, input().split()))
print(min(nums), max(nums))

20. Trình Kiểm Tra Mật Khẩu Cơ Bản

Yêu cầu bài tập: Kiểm tra một mật khẩu: độ dài ≥ 8, có ít nhất một chữ cái và một chữ số.

Những gì bạn sẽ sử dụng: len(), any(), .isalpha(), .isdigit(), logic boolean.

Ví dụ đầu vào

Hello123

Ví dụ đầu ra

valid

Giải pháp Python

pw = input().strip()
ok = (len(pw) >= 8 and any(ch.isalpha() for ch in pw) and any(ch.isdigit() for ch in pw))
print("valid" if ok else "invalid")