Một, Đếm số chuỗi trong tuple
Yêu cầu:
<p>Tạo một hàm đếm số lượng phần tử là chuỗi trong tuple sau:</p>
<code>t1 = (1, 2, '3', '4', 5, '6')</code>
<p>Kết quả mong muốn: <strong>3</strong></p>
Mã nguồn:
def dem_chuoi_trong_tuple():
t1 = (1, 2, '3', '4', 5, '6')
so_luong_chuoi = sum(isinstance(i, str) for i in t1)
print(f"Số chuỗi trong tuple: {so_luong_chuoi}")
Hai, Chuyển đổi chuỗi thành từ điển
Yêu cầu:
<p>Chuyển đổi chuỗi sau thành từ điển:</p>
<code>info = "name:Owen|age:18|gender:nam"</code>
<p>Kết quả mong muốn: <code>{'name': 'Owen', 'age': 18, 'gender': 'nam'}</code></p>
Mã nguồn:
def chuyen_doi_chuoi_thanh_tu_dien():
info = "name:Owen|age:18|gender:nam"
danh_sach_couples = info.split('|')
ket_qua = {}
for cap in danh_sach_couples:
khoa, gia_tri = cap.split(':')
if gia_tri.isdigit():
gia_tri = int(gia_tri)
ket_qua[khoa] = gia_tri
print(ket_qua)
Ba, Loại bỏ phần tử trùng lặp
Yêu cầu:
<p>Xóa các phần tử trùng lặp từ tuple sau:</p>
<code>t3 = (1, 2, 1, 2, 3, 5, 9)</code>
<p>Kết quả mong muốn: <strong>(1, 2, 3, 5, 9)</strong></p>
Mã nguồn:
def loai_bo_trung_lap():
t3 = (1, 2, 1, 2, 3, 5, 9)
tap_hop = set(t3)
ket_qua_khong_xep_thu_tu = tuple(tap_hop)
ket_qua_co_xep_thu_tu = tuple(sorted(tap_hop))
print("Kết quả không sắp xếp:", ket_qua_khong_xep_thu_tu)
print("Kết quả có sắp xếp:", ket_qua_co_xep_thu_tu)
Bốn, Tính tổng các số trong tuple
Yêu cầu:
<p>Tính tổng tất cả các giá trị có thể chuyển đổi thành số trong tuple sau:</p>
<code>t4 = (10, 'abc', '100', '3')</code>
<p>Kết quả mong muốn: <strong>113</strong></p>
Mã nguồn:
def tinh_tong_cac_so():
t4 = (10, 'abc', '100', '3', 'fadf', '134', 18)
tong = sum(int(x) for x in t4 if isinstance(x, str) and x.isdigit() or isinstance(x, int))
print(f"Tổng các số trong tuple: {tong}")
Năm, Chuyển đổi từ điển sang danh sách
Yêu cầu:
<p>Chuyển đổi từ điển sau thành danh sách các cặp key-value:</p>
<code>dic = {'name': 'Owen', 'age': 18, 'gender': 'nam'}</code>
<p>Kết quả mong muốn: <code>[('name', 'Owen'), ('age', 18), ('gender', 'nam')]</code></p>
Mã nguồn:
def chuyen_doi_tu_dien():
dic = {'name': 'Owen', 'age': 18, 'gender': 'nam'}
danh_sach = list(dic.items())
print(danh_sach)
Sáu, Xử lý mở rộng với các kiểu dữ liệu phức tạp
Yêu cầu:
<p>Tính tổng tất cả các giá trị có thể chuyển đổi thành số từ tuple sau:</p>
<code>t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))</code>
<p>Kết quả mong muốn: <strong>11118</strong></p>
Mã nguồn:
def xu_ly_phuc_tap():
tu_dien_chuyen_doi = {'壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9, '拾': 10}
t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))
tong = 0
for gia_tri in t4:
if isinstance(gia_tri, int):
tong += gia_tri
elif isinstance(gia_tri, str):
if gia_tri.isdigit():
tong += int(gia_tri)
elif gia_tri.isnumeric():
tong += tu_dien_chuyen_doi.get(gia_tri, 0)
elif isinstance(gia_tri, list):
tong += sum(gia_tri)
elif isinstance(gia_tri, tuple):
tong += sum(gia_tri)
print(f"Tổng các số trong tuple: {tong}")
Bảy, Thêm thông tin vào sổ điện thoại
Yêu cầu:
<p>Nhập tên và số điện thoại vào sổ điện thoại:</p>
<ul>
<li>Tên phải là chữ cái và không phân biệt hoa thường.</li>
<li>Số điện thoại phải có 11 chữ số.</li>
<li>Nếu tên đã tồn tại, ghi đè số điện thoại cũ.</li>
</ul>
Mã nguồn:
def nhap_thong_tin_sdt():
so_dien_thoai = {}
while True:
ten = input("Nhập tên (hoặc 'q' để thoát): ").strip().lower()
if ten == 'q':
break
if not ten.isalpha():
print("Tên không hợp lệ!")
continue
sdt = input("Nhập số điện thoại: ")
if not (sdt.isdigit() and len(sdt) == 11):
print("Số điện thoại không hợp lệ!")
continue
chu_cai_dau = ten[0].upper()
if chu_cai_dau not in so_dien_thoai:
so_dien_thoai[chu_cai_dau] = {}
so_dien_thoai[chu_cai_dau][ten] = sdt
print(so_dien_thoai)
Tám, In menu ba cấp
Yêu cầu:
<p>In menu tỉnh-thành phố-quận/huyện:</p>
<ul>
<li>Có thể quay lại cấp trên.</li>
<li>Có thể thoát chương trình bất kỳ lúc nào.</li>
</ul>
Mã nguồn:
menu = {
'Hà Nội': ['Quận Hoàn Kiếm', 'Quận Ba Đình', 'Quận Hai Bà Trưng'],
'TP.HCM': ['Quận 1', 'Quận 3', 'Quận 5']
}
def hien_menu(menu):
cap_hien_tai = list(menu.keys())
while True:
for idx, noi in enumerate(cap_hien_tai):
print(f"{idx}. {noi}")
lua_chon = input("Chọn: ")
if lua_chon == 'r':
return
if lua_chon.isdigit() and 0 <= int(lua_chon) < len(cap_hien_tai):
chon = cap_hien_tai[int(lua_chon)]
noi_con = menu.get(chon)
if isinstance(noi_con, dict):
hien_menu(noi_con)
else:
print(f"Địa điểm con của {chon}:")
for noi in noi_con:
print(f"- {noi}")
elif lua_chon == 'q':
exit(0)
hien_menu(menu)
Chín, Chương trình giỏ hàng
Yêu cầu:
<p>Mô phỏng giỏ hàng với đăng nhập và mua sắm:</p>
<ul>
<li>Người dùng đăng nhập bằng tên và mật khẩu lưu trong file.</li>
<li>Chọn sản phẩm, kiểm tra số dư và thanh toán.</li>
</ul>
Mã nguồn:
import time
danh_sach_san_pham = {
'Điện thoại': {'iPhone': 20000000, 'Samsung': 15000000},
'Laptop': {'MacBook': 30000000, 'Dell': 20000000}
}
def dang_nhap():
with open('user.txt', 'r') as f:
du_lieu = f.readlines()
users = {}
for dong in du_lieu:
ten, mat_khau = dong.strip().split('|')
users[ten] = mat_khau
for _ in range(3):
ten = input("Tên đăng nhập: ")
mat_khau = input("Mật khẩu: ")
if users.get(ten) == mat_khau:
return ten
return None
def mua_sam(ten, so_du):
gio_hang = []
while True:
for loai, san_pham in danh_sach_san_pham.items():
print(loai)
for ten_sp, gia in san_pham.items():
print(f" {ten_sp}: {gia}")
lua_chon = input("Chọn sản phẩm (q để thoát): ")
if lua_chon == 'q':
break
if lua_chon in danh_sach_san_pham:
sp = danh_sach_san_pham[lua_chon]
ten_sp = input("Chọn tên sản phẩm: ")
if ten_sp in sp:
gia = sp[ten_sp]
if gia <= so_du:
so_du -= gia
gio_hang.append((ten_sp, gia))
print(f"Bạn đã mua {ten_sp} với giá {gia}. Số dư còn lại: {so_du}")
else:
print("Không đủ tiền!")
return gio_hang, so_du
ten_dang_nhap = dang_nhap()
if ten_dang_nhap:
so_du = 50000000 # Ví dụ
print(f"Xin chào {ten_dang_nhap}, số dư của bạn: {so_du}")
ket_qua = mua_sam(ten_dang_nhap, so_du)
print("Giỏ hàng:", ket_qua[0])
print("Số dư còn lại:", ket_qua[1])
else:
print("Đăng nhập thất bại!")