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

Đă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 3

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


Bài 21: Tìm số lẻ lớn nhất trong danh sách

Đề bài: Nhập vào một danh sách số nguyên, tìm số lẻ lớn nhất. Nếu không có số lẻ, in ra “Không có số lẻ”.

Giải:

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
odd_numbers = [x for x in lst if x % 2 != 0]

if odd_numbers:
    print("Số lẻ lớn nhất:", max(odd_numbers))
else:
    print("Không có số lẻ")

Bài 22: Đếm số lần xuất hiện của ký tự trong chuỗi

Đề bài: Nhập vào một chuỗi và một ký tự, đếm số lần ký tự đó xuất hiện trong chuỗi.

Giải:

s = input("Nhập chuỗi: ")
c = input("Nhập ký tự cần đếm: ")
print(f"Ký tự '{c}' xuất hiện {s.count(c)} lần")

Bài 23: Chuyển đổi số thành chuỗi nhị phân, bát phân, thập lục phân

Đề bài: Nhập vào một số nguyên n, in ra dạng nhị phân, bát phân, thập lục phân của nó.

Giải:

n = int(input("Nhập số nguyên: "))
print(f"Nhị phân: {bin(n)[2:]}")
print(f"Bát phân: {oct(n)[2:]}")
print(f"Thập lục phân: {hex(n)[2:].upper()}")

Bài 24: Kiểm tra một danh sách có phải là dãy Fibonacci không

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

Giải:

def is_fibonacci(lst):
    a, b = 0, 1
    fib_seq = [a, b]
    while b <= max(lst):
        a, b = b, a + b
        fib_seq.append(b)
    return all(x in fib_seq for x in lst)

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
print("Danh sách là dãy Fibonacci" if is_fibonacci(lst) else "Danh sách không phải dãy Fibonacci")

Bài 25: Đảo ngược các từ trong câu

Đề bài: Nhập vào một câu, in ra câu đó với thứ tự từ bị đảo ngược.

Giải:

s = input("Nhập câu: ")
print("Câu sau khi đảo ngược:", " ".join(s.split()[::-1]))

Bài 26: Xóa tất cả nguyên âm trong chuỗi

Đề bài: Nhập vào một chuỗi, xóa tất cả nguyên âm (a, e, i, o, u) khỏi chuỗi đó.

Giải:

s = input("Nhập chuỗi: ")
vowels = "aeiouAEIOU"
result = "".join(c for c in s if c not in vowels)
print("Chuỗi sau khi xóa nguyên âm:", result)

Bài 27: Tính tổng chữ số của một số

Đề bài: Nhập vào một số nguyên, tính tổng các chữ số của số đó.

Giải:

n = int(input("Nhập số nguyên: "))
print(f"Tổng các chữ số của {n} là: {sum(int(digit) for digit in str(n))}")

Bài 28: Xáo trộn phần tử trong danh sách

Đề bài: Nhập vào một danh sách số nguyên, xáo trộn thứ tự của các phần tử ngẫu nhiên.

Giải:

import random

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
random.shuffle(lst)
print("Danh sách sau khi xáo trộn:", lst)

Bài 29: Tìm số nhỏ nhất và lớn nhất trong danh sách mà không dùng min() và max()

Đề bài: Nhập vào một danh sách số nguyên, tìm số nhỏ nhất và lớn nhất mà không sử dụng hàm min() và max().

Giải:

lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
min_num, max_num = lst[0], lst[0]

for num in lst[1:]:
    if num < min_num:
        min_num = num
    if num > max_num:
        max_num = num

print(f"Số nhỏ nhất: {min_num}, Số lớn nhất: {max_num}")

Bài 30: Tính tổng các số chia hết cho 3 hoặc 5 trong khoảng từ 1 đến n

Đề bài: Nhập vào số nguyên n, tính tổng các số chia hết cho 3 hoặc 5 trong khoảng từ 1 đến n.

Giải:

n = int(input("Nhập số nguyên dương: "))
tong = sum(x for x in range(1, n + 1) if x % 3 == 0 or x % 5 == 0)
print(f"Tổng các số chia hết cho 3 hoặc 5 từ 1 đến {n} là: {tong}")

 

Bài viết liên quan