Bài tập Tuple - Nâng cao
- Viết hàm
merge_tuplesnhận vào nhiều tuple (sử dụng *args) và trả về một tuple mới chứa tất cả các phần tử.
def merge_tuples(*tuples): # Code của bạn ở đây pass
# Testresult = merge_tuples((1, 2), (3, 4), (5, 6))print(result) # (1, 2, 3, 4, 5, 6)- Viết hàm
tuple_statsnhận vào một tuple chứa các số và trả về một tuple chứa (min, max, trung bình, tổng).
def tuple_stats(numbers): # Code của bạn ở đây pass
# Testnumbers = (10, 20, 30, 40, 50)stats = tuple_stats(numbers)print(stats) # (10, 50, 30.0, 150)- Tạo tuple lồng nhau
studentschứa thông tin của 5 học sinh (mỗi học sinh là một tuple gồm tên, tuổi, điểm). Viết chương trình:
- In ra thông tin của học sinh thứ 3
- In ra tên của tất cả học sinh
- Tìm học sinh có điểm cao nhất
- Viết hàm
unpack_with_starnhận vào một tuple có ít nhất 3 phần tử và unpacking với cú phápfirst, *middle, last. In ra từng phần.
def unpack_with_star(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 4, 5, 6, 7)unpack_with_star(numbers)# first = 1# middle = [2, 3, 4, 5, 6]# last = 7- Viết hàm
reverse_tupleđảo ngược thứ tự các phần tử trong tuple và trả về tuple mới.
def reverse_tuple(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 4, 5)reversed_numbers = reverse_tuple(numbers)print(reversed_numbers) # (5, 4, 3, 2, 1)💡 Gợi ý: Có thể dùng slicing
[::-1]hoặc hàmreversed()
- Viết hàm
find_duplicatesnhận vào một tuple và trả về tuple chứa các phần tử xuất hiện nhiều hơn 1 lần.
def find_duplicates(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 2, 4, 3, 5, 2)duplicates = find_duplicates(numbers)print(duplicates) # (2, 3)- Viết hàm
tuple_intersectionnhận vào hai tuple và trả về tuple mới chứa các phần tử có trong cả hai tuple.
def tuple_intersection(tuple1, tuple2): # Code của bạn ở đây pass
# Testtuple1 = (1, 2, 3, 4, 5)tuple2 = (3, 4, 5, 6, 7)result = tuple_intersection(tuple1, tuple2)print(result) # (3, 4, 5)- Viết hàm
tuple_differencenhận vào hai tuple và trả về tuple chứa các phần tử có trong tuple1 nhưng không có trong tuple2.
def tuple_difference(tuple1, tuple2): # Code của bạn ở đây pass
# Testtuple1 = (1, 2, 3, 4, 5)tuple2 = (3, 4, 5, 6, 7)result = tuple_difference(tuple1, tuple2)print(result) # (1, 2)- Viết hàm
sort_tuplenhận vào một tuple chứa các số và trả về tuple mới đã được sắp xếp tăng dần.
def sort_tuple(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (5, 2, 8, 1, 9, 3)sorted_numbers = sort_tuple(numbers)print(sorted_numbers) # (1, 2, 3, 5, 8, 9)💡 Gợi ý: Chuyển sang list, sort, rồi chuyển lại tuple
- Viết hàm
split_tuplenhận vào một tuple và một số n, chia tuple thành hai tuple tại vị trí n.
def split_tuple(my_tuple, n): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 4, 5, 6, 7, 8)left, right = split_tuple(numbers, 4)print(left) # (1, 2, 3, 4)print(right) # (5, 6, 7, 8)- Tạo dictionary với tuple làm key. Ví dụ: lưu trữ thông tin về các điểm trên bản đồ (toạ độ x, y) và tên địa điểm.
# Tạo dictionarylocations = { (0, 0): "Start", (10, 5): "Checkpoint 1", (20, 10): "Checkpoint 2", (30, 15): "End"}
# In ra tên địa điểm tại toạ độ (10, 5)print(locations[(10, 5)]) # "Checkpoint 1"- Viết hàm
flatten_tuplenhận vào một tuple lồng nhau và trả về tuple phẳng (không còn tuple con).
def flatten_tuple(nested_tuple): # Code của bạn ở đây pass
# Testnested = (1, (2, 3), (4, (5, 6)), 7)flat = flatten_tuple(nested)print(flat) # (1, 2, 3, 4, 5, 6, 7)💡 Gợi ý: Dùng đệ quy hoặc vòng lặp với
isinstance()
- Viết hàm
tuple_frequencynhận vào một tuple và trả về dictionary đếm số lần xuất hiện của mỗi phần tử.
def tuple_frequency(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)frequency = tuple_frequency(numbers)print(frequency) # {1: 1, 2: 2, 3: 3, 4: 4}- Viết hàm
create_tuple_from_stringchuyển đổi một chuỗi thành tuple, trong đó mỗi từ là một phần tử.
def create_tuple_from_string(text): # Code của bạn ở đây pass
# Testtext = "Python is fun and easy"result = create_tuple_from_string(text)print(result) # ("Python", "is", "fun", "and", "easy")- Viết hàm
compare_tuplesnhận vào hai tuple và trả vềTruenếu chúng có cùng phần tử (không quan tâm thứ tự), ngược lại trả vềFalse.
def compare_tuples(tuple1, tuple2): # Code của bạn ở đây pass
# Testtuple1 = (1, 2, 3, 4, 5)tuple2 = (5, 4, 3, 2, 1)print(compare_tuples(tuple1, tuple2)) # True
tuple3 = (1, 2, 3)tuple4 = (1, 2, 4)print(compare_tuples(tuple3, tuple4)) # False- Viết hàm
zip_tuplesnhận vào nhiều tuple có cùng độ dài và trả về tuple của các tuple (mỗi tuple con chứa các phần tử tại cùng vị trí).
def zip_tuples(*tuples): # Code của bạn ở đây pass
# Testnames = ("Alice", "Bob", "Charlie")ages = (25, 30, 35)cities = ("Hanoi", "HCMC", "Danang")
result = zip_tuples(names, ages, cities)print(result)# (("Alice", 25, "Hanoi"), ("Bob", 30, "HCMC"), ("Charlie", 35, "Danang"))💡 Gợi ý: Dùng hàm
zip()hoặc vòng lặp
- Viết hàm
rotate_tuplenhận vào một tuple và số n, xoay tuple sang phải n vị trí.
def rotate_tuple(my_tuple, n): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 4, 5)rotated = rotate_tuple(numbers, 2)print(rotated) # (4, 5, 1, 2, 3)- Viết hàm
remove_itemnhận vào một tuple và một giá trị, trả về tuple mới không chứa giá trị đó (xoá tất cả các lần xuất hiện).
def remove_item(my_tuple, item): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 2, 4, 2, 5)result = remove_item(numbers, 2)print(result) # (1, 3, 4, 5)- Viết hàm
get_unique_elementsnhận vào một tuple và trả về tuple mới chỉ chứa các phần tử duy nhất (không trùng lặp), giữ nguyên thứ tự xuất hiện đầu tiên.
def get_unique_elements(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 2, 4, 1, 5, 3)unique = get_unique_elements(numbers)print(unique) # (1, 2, 3, 4, 5)- Viết hàm
partition_tuplenhận vào một tuple chứa các số và một giá trị pivot, trả về hai tuple: một chứa các số nhỏ hơn pivot, một chứa các số lớn hơn hoặc bằng pivot.
def partition_tuple(my_tuple, pivot): # Code của bạn ở đây pass
# Testnumbers = (5, 2, 8, 1, 9, 3, 7, 4)smaller, larger = partition_tuple(numbers, 5)print(smaller) # (2, 1, 3, 4)print(larger) # (5, 8, 9, 7)- Viết chương trình tạo tuple chứa 10 số ngẫu nhiên từ 1 đến 100, sau đó:
- Tính giá trị trung bình
- Tìm phương sai (variance)
- Tìm độ lệch chuẩn (standard deviation)
💡 Gợi ý: Dùng module
randomđể tạo số ngẫu nhiên
- Viết hàm
most_commonnhận vào một tuple và trả về phần tử xuất hiện nhiều nhất.
def most_common(my_tuple): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 2, 3, 3, 3, 4, 4)result = most_common(numbers)print(result) # 3- Viết hàm
tuple_productnhận vào một tuple chứa các số và trả về tích của tất cả các số.
def tuple_product(numbers): # Code của bạn ở đây pass
# Testnumbers = (2, 3, 4, 5)result = tuple_product(numbers)print(result) # 120 (2 * 3 * 4 * 5)- Viết hàm
alternate_elementsnhận vào hai tuple và trả về tuple mới chứa các phần tử xen kẽ từ hai tuple.
def alternate_elements(tuple1, tuple2): # Code của bạn ở đây pass
# Testtuple1 = (1, 2, 3)tuple2 = ("a", "b", "c")result = alternate_elements(tuple1, tuple2)print(result) # (1, "a", 2, "b", 3, "c")- Viết hàm
cumulative_sumnhận vào một tuple chứa các số và trả về tuple mới chứa tổng tích lũy.
def cumulative_sum(numbers): # Code của bạn ở đây pass
# Testnumbers = (1, 2, 3, 4, 5)result = cumulative_sum(numbers)print(result) # (1, 3, 6, 10, 15)# Giải thích: (1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5)