Bài tập Python từ cơ bản đến nâng cao – Phần 4

Đăng ngày: 20/06/2026 • Tác giả: Quản trị viên
Bài tập Python từ cơ bản đến nâng cao – Phần 4

Dưới đây là 10 bài tập Python nâng cao hơn nữa, kèm theo lời giải:


Bài 31: Tìm phần tử xuất hiện nhiều nhất trong danh sách

Đề bài: Nhập vào một danh sách số nguyên, tìm phần tử xuất hiện nhiều nhất.

Giải:

from collections import Counter

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
counter = Counter(lst)
most_common = counter.most_common(1)[0]
print(f"Phần tử xuất hiện nhiều nhất: {most_common[0]} ({most_common[1]} lần)")

Bài 32: Kiểm tra ma trận vuông

Đề bài: Nhập vào một ma trận n x n, kiểm tra xem có phải ma trận vuông không.

Giải:

n = int(input("Nhập kích thước ma trận (n x n): "))
matrix = [list(map(int, input().split())) for _ in range(n)]

is_square = all(len(row) == n for row in matrix)
print("Đây là ma trận vuông" if is_square else "Không phải ma trận vuông")

Bài 33: Tính tổng đường chéo chính của ma trận

Đề bài: Nhập vào ma trận vuông n x n, tính tổng các phần tử trên đường chéo chính.

Giải:

n = int(input("Nhập kích thước ma trận: "))
matrix = [list(map(int, input().split())) for _ in range(n)]

diagonal_sum = sum(matrix[i][i] for i in range(n))
print(f"Tổng đường chéo chính là: {diagonal_sum}")

Bài 34: Tính tổng của một danh sách số nguyên không dùng vòng lặp

Đề bài: Viết chương trình tính tổng các phần tử trong danh sách mà không dùng vòng lặp.

Giải:

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
print(f"Tổng các phần tử: {sum(lst)}")

Bài 35: Tìm phần tử duy nhất trong danh sách (phần tử không lặp lại)

Đề bài: Nhập vào một danh sách số nguyên, tìm các phần tử chỉ xuất hiện đúng một lần.

Giải:

from collections import Counter

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
counter = Counter(lst)
unique_elements = [key for key, value in counter.items() if value == 1]
print("Các phần tử duy nhất:", unique_elements)

Bài 36: Kiểm tra danh sách có phải cấp số cộng không

Đề bài: Nhập vào một danh sách số nguyên, kiểm tra xem nó có phải cấp số cộng không.

Giải:

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
is_arithmetic = all(lst[i] - lst[i - 1] == lst[1] - lst[0] for i in range(2, len(lst)))
print("Danh sách là cấp số cộng" if is_arithmetic else "Danh sách không phải cấp số cộng")

Bài 37: Nhân hai ma trận

Đề bài: Nhập vào hai ma trận n x m và m x p, tính tích của chúng.

Giải:

import numpy as np

n, m = map(int, input("Nhập kích thước ma trận A (n m): ").split())
A = [list(map(int, input().split())) for _ in range(n)]

m, p = map(int, input("Nhập kích thước ma trận B (m p): ").split())
B = [list(map(int, input().split())) for _ in range(m)]

result = np.dot(A, B)
print("Ma trận tích là:")
for row in result:
    print(*row)

Bài 38: Kiểm tra chuỗi có phải anagram không

Đề bài: Nhập vào hai chuỗi, kiểm tra xem chúng có phải anagram của nhau không.

Giải:

from collections import Counter

s1 = input("Nhập chuỗi thứ nhất: ").replace(" ", "").lower()
s2 = input("Nhập chuỗi thứ hai: ").replace(" ", "").lower()

print("Hai chuỗi là anagram" if Counter(s1) == Counter(s2) else "Không phải anagram")

Bài 39: Giải phương trình bậc hai

Đề bài: Nhập vào ba số a, b, c, giải phương trình bậc hai ax^2 + bx + c = 0.

Giải:

import math

a, b, c = map(float, input("Nhập hệ số a, b, c: ").split())

delta = b**2 - 4*a*c

if delta < 0:
    print("Phương trình vô nghiệm")
elif delta == 0:
    print("Phương trình có nghiệm kép:", -b / (2 * a))
else:
    x1 = (-b + math.sqrt(delta)) / (2 * a)
    x2 = (-b - math.sqrt(delta)) / (2 * a)
    print(f"Nghiệm của phương trình: x1 = {x1}, x2 = {x2}")

Bài 40: Tạo danh sách số Fibonacci bằng lập trình hàm

Đề bài: Viết chương trình tạo danh sách n số Fibonacci đầu tiên bằng lập trình hàm.

Giải:

from functools import lru_cache

@lru_cache(None)
def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    return fibonacci(n - 1) + fibonacci(n - 2)

n = int(input("Nhập số lượng số Fibonacci: "))
print([fibonacci(i) for i in range(n)])

 

Bài viết liên quan