Dưới đây là 10 bài tập Python tiếp theo từ mức trung bình đến nâng cao, kèm theo lời giải:
Bài 11: Tìm ước số chung lớn nhất (GCD) và bội số chung nhỏ nhất (LCM)
Đề bài: Viết chương trình nhập vào hai số nguyên a và b, tìm GCD và LCM của chúng.
Giải:
import math
a, b = map(int, input("Nhập hai số nguyên: ").split())
gcd = math.gcd(a, b)
lcm = (a * b) // gcd
print(f"GCD của {a} và {b} là: {gcd}")
print(f"LCM của {a} và {b} là: {lcm}")
Bài 12: Kiểm tra số hoàn hảo
Đề bài: Viết chương trình kiểm tra một số nguyên dương có phải là số hoàn hảo hay không (số hoàn hảo là số có tổng các ước số nhỏ hơn nó bằng chính nó, ví dụ: 6, 28).
Giải:
def is_perfect(n):
return n == sum(i for i in range(1, n) if n % i == 0)
n = int(input("Nhập số nguyên dương: "))
print(f"{n} là số hoàn hảo" if is_perfect(n) else f"{n} không phải số hoàn hảo")
Bài 13: Kiểm tra tam giác hợp lệ
Đề bài: Nhập vào 3 cạnh của một tam giác, kiểm tra xem chúng có tạo thành một tam giác hợp lệ không.
Giải:
a, b, c = map(int, input("Nhập ba cạnh của tam giác: ").split())
if a + b > c and a + c > b and b + c > a:
print("Ba cạnh tạo thành một tam giác hợp lệ")
else:
print("Ba cạnh không tạo thành tam giác")
Bài 14: Đếm số chữ số trong một số
Đề bài: Viết chương trình nhập vào một số nguyên và đếm số chữ số của nó.
Giải:
n = input("Nhập số nguyên: ")
print(f"Số {n} có {len(n)} chữ số")
Bài 15: In tam giác số
Đề bài: Viết chương trình nhập vào số nguyên n và in ra tam giác số.
Giải:
n = int(input("Nhập số hàng của tam giác: "))
for i in range(1, n + 1):
print(" ".join(str(j) for j in range(1, i + 1)))
Bài 16: Đếm số nguyên tố trong một khoảng
Đề bài: Viết chương trình đếm số lượng số nguyên tố trong đoạn [a, b].
Giải:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
a, b = map(int, input("Nhập khoảng [a, b]: ").split())
count = sum(1 for i in range(a, b + 1) if is_prime(i))
print(f"Số lượng số nguyên tố trong khoảng [{a}, {b}] là: {count}")
Bài 17: Chuyển đổi chữ hoa, chữ thường
Đề bài: Nhập vào một chuỗi và chuyển đổi tất cả chữ hoa thành chữ thường, chữ thường thành chữ hoa.
Giải:
s = input("Nhập chuỗi: ")
print("Chuỗi sau khi chuyển đổi:", s.swapcase())
Bài 18: Đếm số nguyên âm, dương trong danh sách
Đề bài: Viết chương trình nhập vào danh sách số nguyên và đếm số lượng số âm, số dương.
Giải:
lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
positive = sum(1 for x in lst if x > 0)
negative = sum(1 for x in lst if x < 0)
print(f"Số dương: {positive}, Số âm: {negative}")
Bài 19: Xóa phần tử trùng lặp trong danh sách
Đề bài: Viết chương trình nhập vào danh sách số nguyên và loại bỏ các phần tử trùng lặp.
Giải:
lst = list(map(int, input("Nhập danh sách số nguyên: ").split()))
unique_lst = list(set(lst))
print("Danh sách sau khi loại bỏ trùng lặp:", unique_lst)
Bài 20: Tạo bảng cửu chương
Đề bài: Viết chương trình in ra bảng cửu chương từ 1 đến 10.
Giải:
for i in range(1, 11):
for j in range(1, 11):
print(f"{i} x {j} = {i * j}", end="\t")
print()