Trả về set các phần tử xuất hiện ở tất cả các hàng. (Với tham số là danh sách 2 chiều MxN)
Bài tập Python tự luyện

Danh sách bài học
Trả về set các phần tử xuất hiện ở tất cả các hàng. (Với tham số là danh sách 2 chiều MxN)
Nội dung bài viết Học nhanh
Kiến thức cần có
- Hàm input() và hàm print()
- Cấu trúc lặp trong Python
- Cấu trúc rẽ nhánh trong Python
- Biến và kiểu dữ liệu
- Hàm trong Python
- Xử lý ngoại lệ (Exception Handling)
- Các phương thức xử lý Set trong
Python:
- Hàm intersection()
Định dạng đầu vào
- Dòng đầu tiên chứa hai giá trị M, N cách nhau bởi khoảng trắng.
- M dòng tiếp theo, mỗi dòng chứa N phần tử, các phần tử cách nhau bởi khoảng trắng
Định dạng đầu ra
- Gồm một dòng duy nhất hiển thị set các phần tử xuất hiện ở tất cả các hàng, các phần tử cách nhau bởi khoảng trắng.
Lưu ý:
- Nếu M, N nhỏ hơn hoặc bằng 0 thì xuất thông báo: Vui long nhap kich thuoc danh sach la so nguyen duong!
- Nếu danh sách hai chiều nhập vào không đúng kích thước MxN thì xuất thông báo: Danh sach hai chieu khong dung kich thuoc!
- Nếu input nằm ngoài định dạng đầu vào thì xuất thông báo: Dinh dang dau vao khong hop le!
Ví dụ:
- Input 1:
- Output 1:
- Input 2:
- Output 2:
- Input 3:
- Output 3:
- Input 4:
- Output 4:
- Input 5:
- Output 5:
- Input 6:
- Output 6:
Gợi ý
- Định nghĩa hàm nhap_danh_sach (Tham khảo Bài 6.19)
- Định nghĩa hàm ds_ptu_chung với tham số là một danh sách hai chiều:
- Sử dụng hàm intersection() để tìm giao của nhiều tập hợp.
- Sử dụng list comprehension để liệt kê các hàng của ma trận.
- Sử dụng kỹ thuật unpacking agruments để truyền nhiều đối số từ iterable vào hàm intersection()
- Sử dụng cấu trúc Xử lý ngoại lệ để xử lý các trường hợp gây ra lỗi khi ép kiểu dữ liệu
- Đặt chương trình trong khối try.
- Dùng hàm input(), split(), map() và int() để nhập kích thước M, N của danh sách hai chiều và ép kiểu dữ liệu sang số nguyên.
- Sử dụng cấu trúc rẽ nhánh để kiểm tra xem M, N có là số nguyên dương hay không. Xuất thông báo lỗi nếu có.
- Gọi hàm ds_ptu_chung và truyền vào các tham số cần thiết.
- Dùng hàm print() để thị kết quả ra màn hình theo định dạng đầu ra yêu cầu
- Lỗi sẽ phát sinh ở lệnh ép kiểu nếu định dạng đầu vào không hợp lệ. Dùng lệnh
except để bắt lỗi:
- Dùng hàm print() hiển thị thông báo lỗi ra màn hình.
Code mẫu
Kết luận
Trong bài này, Kteam đã hướng dẫn bạn cách VIẾT HÀM TRẢ VỀ SET CÁC PHẦN TỬ XUẤT HIỆN Ở TẤT CẢ CÁC HÀNG. (VỚI THAM SỐ LÀ DANH SÁCH 2 CHIỀU MXN). Thêm bài giải của bạn vào phần bình luận để được Kteam review code và fix lỗi (nếu có) trong livestream của khóa học này.
Ở bài tiếp theo, chúng ta sẽ cũng nhau học cách VIẾT HÀM TRẢ VỀ DICT GỒM CÁC KEY LÀ SỐ TỰ NHIÊN NHỎ HƠN N VÀ VALUE TƯƠNG ỨNG LÀ BÌNH PHƯƠNG CỦA KEY. (VỚI THAM SỐ TỰ NHIÊN N).
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên " Luyện tập - Thử Thách - Không ngại khó!"
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Trả về set các phần tử xuất hiện ở tất cả các hàng. (Với tham số là danh sách 2 chiều MxN) dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Khóa học
Serial dành cho những bạn cần luyện tập phương pháp, tu duy lập trình. Làm quen với các bài toán trong lập trình, ngẫu nhiên từ cơ bản đến nâng cao. Nội dung Serial này được phân tách chi tiết nhất có thể, nhằm giúp các bạn dễ hiểu và thực hành được ngay.
Bạn nên tự làm lại từng bài tập trên video để có kết quả tốt nhất. Cùng Kteam "Luyện tập - Thử thách - không ngại khó"
def create_dim_lst(a, b):
lst = []
for _ in range(a):
s = set(input().split())
if len(s) != b:
print("input of range out of matrix size")
return
lst.append(s)
return lst
def fun_set(s):
result = s[0].intersection(*[value for value in s[1:]])
# result = set.intersection(*s)
# result = s[0].intersection(*s[1:])
return result
try:
a, b = map(int, input().split())
if a < 1 or b < 1:
print("matrix size error")
else:
print(fun_set(create_dim_lst(a,b)))
except ValueError:
print("error")
def func(lst):
result = lst[0].intersection(*[set_ for set_ in lst])
return result
while True:
try:
m,n = map(int,input("Nhập m,n: ").split())
lst = []
for i in range(m):
small_set = set(input(f"Nhập {n} phần tử (còn {m-i} dòng): ").split())
lst.append(small_set)
if m <= 0 or n <= 0:
print("Vui lòng nhập kích thước danh sách là số nguyên dương")
elif m * n != sum([len(set_) for set_ in lst]):
print("Danh sách hai chiều không đúng kích thước!")
else:
print(func(lst))
break
except:
print("Định dạng đầu vào không hợp lệ")
def Ketqua(Ngang,Doc):
if Doc<=0 or Ngang<=0:
return "Vui long nhap so nguyen duong"
else:
KituBandau=set(input().split())
for i in range(1,Doc):
KituMoi=input().split()
if len(KituMoi)!= Ngang or len(KituMoi)==0:
return "Khong dung kich thuoc"
KituBandau=set(KituMoi)&KituBandau
return KituBandau
cờ=False
try:
Doc, Ngang=list(map(int,input().split()))
cờ= True
except:
print("Dinh dang kh hop le")
if cờ:
print(Ketqua(Ngang,Doc))