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
# Test
result = 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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
tuple1 = (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
# Test
tuple1 = (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
# Test
numbers = (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
# Test
numbers = (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 dictionary
locations = {
(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
# Test
nested = (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
# Test
numbers = (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
# Test
text = "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
# Test
tuple1 = (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
# Test
names = ("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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
numbers = (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
# Test
tuple1 = (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
# Test
numbers = (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)