Xử lý dữ liệu và lập trình Python

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!")

Thẻ: python dictionary Tuple

Đăng vào ngày 23 tháng 6 lúc 03:21