← 返回题库
中级

实现转账(双账户原子事务)

未完成
中级参考 代码结构已给出,请填写 ____ 处
def solve():
    from pyodide.http import open_url
    customers_csv = open_url(____).read()
    accounts_csv = open_url(____).read()
    cards_csv = open_url(____).read()
    transactions_csv = open_url(____).read()
    transfers_csv = open_url(____).read()
    import sqlite3
    import pandas as pd
    from io import StringIO

    conn = sqlite3.connect(____)
    pd.read_csv(StringIO(____)).to_sql(____)

    def transfer(____):
        try:
            cur = conn.cursor()
            from_bal = cur.execute("____", (____)).fetchone()[____]
            if from_bal < amount:
                raise ValueError(____)
            cur.execute("____", (____))
            cur.execute("____", (____))
            conn.commit()
            return True
        except Exception as e:
            conn.rollback()
            print(____)
            return False

    from_id, to_id, amount = ____, ____, ____
    b1_before = conn.execute("____", (____)).fetchone()[____]
    b2_before = conn.execute("____", (____)).fetchone()[____]
    print(____)
    print(____)

    ok = transfer(____)
    if ok:
        b1_after = conn.execute("____", (____)).fetchone()[____]
        b2_after = conn.execute("____", (____)).fetchone()[____]
        print(____)
        print(____)
        print(____)
    conn.close()

示例

输入
solve()
期望输出
转账前 - 账户3: 102500.00, 账户1: 18730.50
总计: 121230.50
转账后 - 账户3: 92500.00, 账户1: 28730.50
总计: 121230.50
金额守恒: True
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码